7.2. MAT85+ SPS

Das SPS-Programm

Im Gegensatz zu einer klassischen Schützsteuerung, bei der die Verknüpfung zwischen den Eingangssignalen (-Kontakten) und den Ausgangssignalen (-Kontakten) der Steuerung durch die Verdrahtung der Kontakte und Schütze hergestellt wird, erfolgt diese Verknüpfung bei einer Speicherprogrammierbaren Steuerung (SPS) durch ein Programm. Dieses Programm ist zyklisch, das heißt: sind alle Anweisungen abgearbeitet, so wird erneut mit der ersten Anweisung begonnen.

Das SPS-Programm ermöglicht die Programmierung des Mikrocomputers mit Hilfe von Anweisungen und Befehlen, die dem Problem “Steuerungstechnik” angepaßt sind. Häufige Verknüpfungen in der Steuerungstechnik sind die UND- und ODER-Verknüpfungen von Signalen, die der Reihen- und Parallelschaltung von Kontakten entsprechen. Für die Realisierung solcher Verknüpfungen bietet das SPS-Programm einfache symbolische Anweisungen.

Zum Betrieb des SPS-Programms wird zusätzlich zur Speichermindestbestückung für MAT 85+ ab der Adresse E000 RAM-Speicher benötigt. Für die Ein- und Ausgabe wird mindestens je eine 8-BitParallel-Eingabe-Karte bzw. Parallel-Ausgabe-Karte (BFZ/MFA 4.1. bzw. BFZ/MFA 4.2.) benötigt. Weitere Ein- und Ausgabe-Karten können je nach Bedarf eingesetzt werden. Für die Hardware-Timer und für die Anzeige der Merker-Zustände ist als Mindestbestückung die Baugruppe “Zeitwerk (4fach)” BFZ/MFA 4.3.c notwendig. Diese Karte kann entfallen, wenn statt der Hardware-Timer die SoftwareTimer verwendet werden und auf die Anzeige der Merker-Zustände verzichtet wird.

Die SPS-Operanden

Eingänge, Ausgänge usw. nennt man allgemein Operanden, da mit ihnen etwas gemacht (operiert) wird. Das BFZ-SPS-Programm kennt folgende Operanden:

  • E – Eingänge
  • A – Ausgänge
  • M – Merker
  • T – Hardware Timer
  • Z – Software-Timer
  • C – Zähler

Da von allen Operanden je 32 verschiedene vorkommen können, müssen sie durch eine Kennzahl unterschieden werden. Die Kennzahlen, die das SPS-Programm akzeptiert, sind zweistellig. Die erste Ziffer darf die Werte 0 bis 3, die zweite Ziffer darf die Werte 0 bis 7 annehmen. Durch diese Ziffern ist eine Zuordnung der einzelnen Operanden zu den Baugruppen gegeben.

Eingänge (E)

Durch die Eingangs-Operanden können über die Eingabe-Baugruppe externe Signale (z.B. Schalter, Temperatur-Sensoren, … ) abgefragt werden. Eingänge dürfen nur auf der Bedingungsseite eines
Ausdrucks vorkommen.

Für je acht Eingänge ist eine 8-Bit-Parallel-Eingabe-Baugruppe (BFZ/MFA 4.1.) erforderlich. Die erste Ziffer der Kennzahl eines Eingangs entspricht der Port-Nummer (Adresse) der verwendeten Baugruppe:

E00 – E07 –> Port 00
E10 – E17 –> Port 01
E20 – E27 –> Port 02
E30 – E37 — >Port 03

Die zweite Ziffer der Kennzahl entspricht der Bit-Nummer:

Ex0 > Bit 0
Ex1 > Bit 1
Ex2 > Bit 2
Ex3 > Bit 3
Ex4 > Bit 4
Ex5 > Bit 5
Ex6 > Bit 6
Ex7 > Bit 7

Einige Beispiele:

E00 -> Port 00, Bit 0
E12 -> Port 01, Bit 2
E34 -> Port 03, Bit 4

Die Zuordnung der Operanden-Kennzahlen zu den Port-Nummern kann der Tabelle 1 entnommen werden.

Ausgänge (A)

Durch die Ausgangs-Operanden können Über die Ausgabe-Baugruppe Signale an externe Geräte (z.B. Motoren, Heizungen … ) gegeben werden. Ausgänge dürfen auf der Bedingungs- und auf der Zuweisungsseite eines Ausdrucks vorkommen.

Für je acht Ausgänge ist eine 8-Bit-Parallel-Ausgabe-Baugruppe (BFZ/MFA 4.2.) erforderlich. Die Kennzahl eines Ausgangs hat die gleiche Bedeutung wie bei den Eingängen. Die Zuordnung der Operanden-Kennzahlen zu den Port-Nummern kann der Tabelle 1 entnommen werden.

Merker ( M)

Merker werden verwendet, um Zwischenergebnisse für die spätere Verwendung in anderen Verknüpfungen zu speichern. Sollen die Merker-Zustände nicht angezeigt werden, so ist für die Merker keine Hardware erforderlich. Wird aber die Anzeige der Merker-Zustände gewünscht, dann ist für je acht Merker eine Baugruppe “Zeitwerk (4fach)” BFZ/MFA 4.3.c erforderlich. Die erste Kennziffer der Merker gibt die Zuordnung zum Port an:

M00 – M07 Port 1x
M10 – M17 Port 2x
M20 – M27 Port 3x
M30 – M37 Port 4x
(alle Portnummern in hexadezimaler Schreibweise)

Beachten Sie bitte den Unterschied zu den Ein- und Ausgängen:
Bei den Ein- und Ausgängen gab die erste Ziffer direkt die PortNummer an. Bei den Merkern muß zur ersten Ziffer eine Eins addiert werden. Das Ergebnis gibt dann die erste Ziffer der PortNummer (in hexadezimaler Schreibweise) an. Auf den ZeitwerkBaugruppen wird nur die erste Ziffer der Port-Nummer eingestellt.

Die zweite Kennziffer der Merker gibt, wie schon bei den Ein- und Ausgängen, die Bit-Nummer an:

Mx0 –> Bit 0
Mx1 –> Bit 1
Mx2 –> Bit 2
Mx3 –> Bit 3
Mx4 –> Bit 4
Mx5 –> Bit 5
Mx6 –> Bit 6
Mx7 –> Bit 7

Einige Beispiele:

M00 —-> Port 1x, Bit 0
M23 —-> Port 3x, Bit 3
M33 —-> Port 4x, Bit 3

Die Zuordnung der Operanden-Kennzahlen zu den Port-Nummern kann der Tabelle 1 entnommen werden.

Die Hardware-Timer (T)

Mit Hilfe der Timer lassen sich Verzögerungszeiten realisieren. Die Timer können durch die einfache Zuweisung
… =Txx
oder durch die SETZ-Anweisung
… =STxx
gestartet werden. Wenn der Timer abgelaufen ist, liefert er das Zustands-Signal “1”. Der Timer-Zustand kann in Verknüpfungen auf der Bedingungsseite benutzt werden:

Bedingungs-SeiteZuweisungsseite
*Txx=A00

schalte den Ausgang A00 ein, wenn der Timer Txx abgelaufen ist startet man Timer mit der SETZ-Anweisung, werden die Timer nicht gestoppt, wenn die SETZ-Bedingung bei einem späteren ProgrammDurchlauf nicht mehr erfüllt ist. Der Zustand “1” (abgelaufen) wird in diesem Fall gespeichert und kann nur mit dem RÜCKSETZ-Befehl gelöscht werden. startet man Timer mit einer einfachen Zuweisung, wird der Timer angehalten – bzw. der Zustand “abgelaufen” gelöscht – wenn die Start-Bedingung nicht mehr erfüllt ist. Dieses Verhalten wird durch Bild 4a und Bild 4b verdeutlicht. Hardware-Timer dürfen auf der Bedingungs- und auf der Zuweisungsseite eines Ausdrucks vorkommen.

Zum Betrieb der Hardware-Timer wird die Baugruppe “Zeitwerk (4fach)” BFZ/MFA 4.3.c benötigt. Die Laufzeiten der Timer (etwa 1 bis 57 Sekunden) lassen sich mit den auf der Karte befindlichen Spindeltrimmern einstellen. Auf jeder Baugruppe sind vier Zeitwerke (Tx0 – Tx3) vorhanden. Die Baugruppe kann jedoch bis auf acht Zeitwerke ausgebaut werden. Die Kennzahl der Hardware-Timer hat die gleiche Bedeutung wie bei den Merkern. Die Zuordnung der Operanden-Kennzahlen zu den Port-Nummern kann der Tabelle 1 entnommen werden.

Kennzahlen der Software-Timer (Z) und der Zähler (C)

Um die Software-Timer und die Zähler verwenden zu können, werden keine zusätzlichen Baugruppen benötigt. Obwohl die Kennzahlen der Software-Timer und der Zähler daher keinen Bezug zur Hardware haben, gilt auch für diese Kennzahlen:

gültige Werte für die erste Ziffer : 0 .. 3
gültige Werte für die zweite Ziffer: 0 .. 7

Die Software-Timer (Z)

Mit Hilfe der Timer lassen sich Verzögerungszeiten realisieren. Die Timer können durch die einfache Zuweisung
… =Zxx
oder durch die SETZ-Anweisung
… =SZxx
gestartet werden. Wenn der Timer abgelaufen ist, liefert er das Zustands-Signal “1”. Der Timer-Zustand kann in Verknüpfungen auf der Bedingungsseite benutzt werden:

BedingungsseiteZuweisungsseite
*Zxx=A00

schalte den Ausgang A00 ein, wenn der Timer Zxx abgelaufen ist.

Startet man Timer mit der SETZ-Anweisung, werden die Timer nicht gestoppt, wenn die SETZ-Bedingung bei einem späteren Programmdurchlauf nicht mehr erfüllt ist. Der Zustand “1” (abgelaufen) wird in diesem Fall gespeichert und kann nur mit dem RÜCKSETZ-Befehl gelöscht werden. Startet man Timer mit einer einfachen Zuweisung, wird der Timer angehalten – bzw. der Zustand “abgelaufen” gelöscht – wenn die Start-Bedingung nicht mehr erfüllt ist.

Dieses Verhalten wird durch Bild 4a und Bild 4b verdeutlicht.

Die Laufzeiten der Software-Timer müssen per Programm mit dem Lade-Befehl eingestellt werden. Die Ausführung dieses Befehls verändert den augenblicklichen Timer-Wert und -Zustand nicht.

Die Laufzeiten können mit dem Lade-Befehl in Schritten von Zehntel-Sekunden (von 1/10 Sekunde bis ca. 2 Stunden) eingestellt werden. Der Lade-Wert gibt die Laufzeit in Zehntel-Sekunden an:

… =LZ00,100

entspricht: Lade den Software-Timer Z00 mit der Laufzeit 10 Sekunden (100/10 Sekunden). Der Ladewert wird gespeichert und durch die Aktivität des Timers nicht verändert. Dies hat zur Folge, dass die einmal abgespeicherte Laufzeit mehrfach im Programm verwendet werden kann. Eine Änderung des Wertes ist durch einen neuen Ladebefehl möglich. Software-Timer dürfen auf der Bedingungs- und auf der Zuweisungsseite eines Ausdrucks vorkommen.

Hinweis: Zum Betrieb der Software-Timer ist die im Anhang beschriebene Schaltungserweiterung erforderlich.

Bild 4a: Timerverhalten bei der einfachen Zuweisung

Ein Timer, der über die SETZ-Anweisung ” … = STxx” bzw. ” . = SZxx” gestartet wird, liefert nur dann einen logischen “1”-Zustand, wenn ein möglicher RÜCKSETZ-lmpuls erst nach Ablauf der eingestellten Laufzeit erzeugt wird. Der logische “1”-Zustand bleibt erhalten, bis er durch eine RÜCKSETZ-Anweisung gelöscht wird.

Bild 4b: Timerverhalten bei den SETZ- und RÜCKSETZ-Anweisungen

Die Zähler (C)

Die Zähler dienen zum Zählen von Ereignissen. Alle Zähler zählen vom Ausgangswert ,der mit der Lade Anweisung geladen wurde, abwärts. Wird der Wert Null erreicht, so wird der logische Zustand “1” angenommen. Dieser Zustand bleibt gespeichert bis ein neuer Lade-Befehl erfolgt. Der Lade-Befehl ändert den Zähler-Wert auf den Lade-Wert und ändert den Zähler-Zustand auf “nicht abgelaufen” (logisch “0”). Zähler dürfen auf der Bedingungs- und auf der Zuweisungsseite eines Ausdrucks vorkommen.

Beispiel:
“Bedingung”=C00
Wenn “Bedingung” erfüllt, dann zähle den Zähler C00 um Eins herab.

Beispiele für die Kennzahlen

  • E00 – gültige Kennzahl, Port 00, Bit 0
  • E13 – gültige Kennzahl, Port 01, Bit 3
  • E42 – ungültige Kennzahl, erste Ziffer größer als 3
  • E18 – ungültige Kennzahl, zweite Ziffer größer als 7
  • A00 – gültige Kennzahl, Port 00, Bit 0
  • A13 – gültige Kennzahl, Port 01, Bit 3
  • A42 – ungültige Kennzahl, erste Ziffer größer als 3
  • A18 – ungültige Kennzahl, zweite Ziffer größer als 7
  • M00 – gültige Kennzahl, Port 1x, Bit 0
  • M13 – gültige Kennzahl, Port 2x, Bit 3
  • M42 – ungültige Kennzahl, erste Ziffer größer als 3
  • M18 – ungültige Kennzahl, zweite Ziffer größer als 7
  • T00 – gültige Kennzahl, Port 1x, Bit 0
  • T13 – gültige Kennzahl, Port 2x, Bit 3
  • T42 ungültige Kennzahl, erste Ziffer größer als 3
  • T18 ungültige Kennzahl, zweite Ziffer größer als 7
  • Z00 gültige Kennzahl, keine Hardware-Zuordnung
  • Z13 gültige Kennzahl, keine Hardware-Zuordnung
  • Z42 ungültige Kennzahl, erste Ziffer größer als 3
  • Z18 ungültige Kennzahl, zweite Ziffer größer als 7
  • C00 gültige Kennzahl, keine Hardware-Zuordnung
  • C13 gültige Kennzahl, keine Hardware-Zuordnung
  • C42 ungültige Kennzahl, erste Ziffer größer als 3
  • C18 ungültige Kennzahl, zweite Ziffer größer als 7

Tabelle 1: Zuordnung der Operanden-Kennzahlen zu den Port-Nummern

Die Operationen

Um mit den Operanden arbeiten zu können, muss man sie verknüpfen. So soll z.B. eine Lampe nur dann leuchten, wenn die Eingangsschalter in einer bestimmten Stellung stehen. Neben diesen Verknüpfungen
sind aber noch andere Befehle notwendig. So muss man zum Beispiel einen Zähler auf einen bestimmten Wert setzen können. Die Verknüpfungen und die zusätzlichen Befehle nennt man im allgemeinen Operationen, da sie mit den Operanden (Eingänge, Ausgänge, Merker usw.) etwas machen. Das BFZ-SPS-Programm kennt folgende Operationen:

OperationSymbol
UND *
UND NICHT*/
ODER +
ODER NICHT+/
GLEICH=
GLEICH NICHT=/
SETZEN =S
NICHT SETZEN=/S
RÜCKSETZEN =R
NICHT RÜCKSETZEN=/R
LADEN =L
NICHT LADEN=/L

Ein SPS-Ausdruck mit Bedingungs- und Zuweisungs-Teil

Ein Ausdruck enthält mindestens ein Gleichheitszeichen. Den Teil links vom Gleichheitszeichen nennt man Bedingungsteil, den Teil rechts vom Gleichheitszeichen nennt man Zuweisungsteil.

….. = …..

Bedingungsteil = Zuweisungsteil

Der Bedingungsteil besteht aus einer logischen Verknüpfung (die im Sonderfall nur aus einem Operanden besteht). Die Bedingung ist dann erfüllt (wahr, true), wenn das Verknüpfungsergebnis den logischen Wert “1” annimmt. Um das Verknüpfungsergebnis berechnen zu können, muß man die Zustände der einzelnen Operanden kennen:

Eingänge sind dann logisch “1”, wenn die entsprechende LED auf der Frontplatte der Eingabe-Baugruppe leuchtet. Ausgänge sind dann logisch “1”, wenn die entsprechende auf der Ausgabe-Baugruppe leuchtet. Die Ausgangsbuchse führt dann H-Pegel

Merker sind logisch “1”, wenn die entsprechende LED auf der Zeitwerk-Baugruppe leuchtet. Der Merker ist dann gesetzt.

Software-Timer, Hardware-Timer und Zähler sind dann logisch “1”, wenn sie “abgelaufen” sind.

Das Ergebnis der Verknüpfung im Bedingungsteil wird, wie in der Digitaltechnik, nach den Regeln der boolschen Algebra bestimmt. Die SETZ-, RÜCKSETZ- und LADE-Anweisungen im Zuweisungsteil des Ausdrucks werden nur dann ausgeführt, wenn die Bedingung den Wert “1” hat. Das Gleiche gilt für die Anweisung “… =Cxx” (zähle Zähler xx um Eins herab). In allen anderen Fällen nimmt der Operand im Zuweisungs-Teil das Ergebnis der Bedingung an (ihm wird das Ergebnis zugewiesen).

Manche Ausdrücke haben mehrere Zuweisungen, aber nur eine Bedingung. In diesem Fall ist die Bedingung für alle Zuweisungen gültig.

Die GLEICH-Anweisung(=)

Soll eine Lampe, die am Ausgang A00 angeschlossen ist, immer dann leuchten, wenn der Schalter am Eingang E00 betätigt wird, so kann man in einem SPS-Programm schreiben:

*E00=A00

Am Anfang einer Anweisung muss in einem BFZ-SPS-Programm entweder das Symbol “*” oder das Symbol “+” stehen. Durch diese Symbole können die Anweisungen vom SPS-Programm leichter interpretiert werden.

Wie in der Mathematik, so sind auch hier die Ausdruck-Teile rechts und links vom Gleicheitszeichen gleichwertig. Immer wenn der Schalter E00 (im linken Teil des Ausdrucks) in der EIN-Stellung ist, ist auch die Lampe A00 eingeschaltet. Das BFZ-SPS-Programm erlaubt Mehrfach-Zuweisungen:

E00=A00=A01

Bei diesem Ausdruck wurde die Anweisung “=A01” angefügt. Wenn der Schalter E00 in EIN-Stellung ist, so wird neben Ausgang A00 auch der Ausgang A01 eingeschaltet. Das Ergebnis des Bedingungsteils wird beiden Ausgängen zugewiesen.

Die UND-Verknüpfung()

Will man, daß die Lampe am Ausgang nur dann leuchtet, wenn der Schalter am Eingang E00 und der Schalter am Eingang E01 betätigt sind, so muß man schreiben:
*E00*E01=A00

Das “*”-Symbol steht für die UND-Verknüpfung.

Die ODER-Verknüpfung(+)

Eine andere mögliche Forderung wäre, daß die Lampe am Ausgang A00 nur dann leuchten soll, wenn entweder der Schalter am Eingang E00 oder der Schalter am Eingang E01 oder beide Schalter betätigt werden. Diese Forderung kann man durch folgende SPS-Anweisung beschreiben:

*E00+E01=A00

Die ODER-Verknüpfung wird durch das “+”-Symbol dargestellt

Die SETZ-Anweisung (=S)

Manchmal muss ein Impuls gespeichert werden. Dies ist z.B. dann notwendig, wenn eine Lampe durch die kurzzeitige Betätigung eines Tasters eingeschaltet werden soll. Ist die Lampe am Ausgang A00 angeschlossen und der Taster am Eingang E00, dann würde die Lampe bei dem Ausdruck

*E00=A00

nur solange leuchten, wie der Taster betätigt wird.

Die Forderung wird erfüllt, wenn man die folgende Anweisung verwendet:

*E00=SA00

Der Buchstabe “S” steht für die SETZ-Anweisung. Der Ein-Zustand wird gespeichert, wie bei einem Schütz mit Selbsthaltung oder einem bistabilen Kippglied. Dieser gespeicherte Zustand muss durch eine RÜCKSETZ-Anweisung gelöscht werden.

Die RÜCKSETZ-Anweisung (=R)

Mit der RÜCKSETZ-Anweisung kann eine SETZ-Anweisung rückgängig gemacht werden.
Ein Beispiel:

*E00=SA00
*E01=RA00

Der erste Ausdruck wurde bereits im Abschnitt (SETZ-Anweisung) erläutert: wird der Taster am Eingang E00 kurzzeitig betätigt, so wird der Ein-Zustand gespeichert und die Lampe am Ausgang A00 leuchtet auch dann noch, wenn man den Taster los läßt. Diese Speicherung des Ein-Zustandes wird durch den zweiten Ausdruck erst dann aufgehoben, wenn der Taster (oder Schalter) am Eingang E01 betätigt wird. Ist die Bedingung ”Taster E01 betätigt” erfüllt, so wird die RÜCKSETZ-Anweisung ausgeführt und der Ausgang A00 wird ausgeschaltet (der gespeicherte Zustand wird gelöscht). In diesem Beispiel wird davon ausgegangen, dass nie beide Schalter (E00, E01) gleichzeitig betätigt sind.

Die LADE-Anweisung (=L)

Im BFZ-SPS-Programm können auch Software-Timer (Z) und Zähler (C, Counter) verwendet werden. Will man mit diesen Timern und Zählern arbeiten, so müssen sie mit einem bestimmten Wert geladen werden.

Die Software-Timer zählen von diesem Wert im 1/10-Sekunden-Takt abwärts. Die Zähler zählen, abhängig von bestimmten Bedingungen, ebenfalls abwärts. Eine Lade-Anweisung hat die Form:
“Bedingung”=LZ00,12345

In diesem Beispiel wird der Software-Timer Z00 mit dem dezimalen Wert 12345 geladen, wenn die Bedingung erfüllt ist. Die LadeAnweisung für einen Zähler sieht entsprechend aus:
“Bedingung”=LC00,12345

Der Zähler (Counter) C0O wird dann mit dem dezimalen Wert 12345 geladen, wenn die Bedingung erfüllt ist. Der Lade-Wert darf zwischen 0 und 65535 (dezimal) liegen.

Die Negation(/)

Durch das Symbol”/” kann ein Operanden-Zustand negiert (umgekehrt) werden. Es ist ebenso möglich, das gesamte Verknüpfungsergebnis zu negieren:

*/E00=A00
Der Ausgang A00 wird immer dann auf “Ein” geschaltet, wenn der Eingang E00 nicht “Ein” ist. Sonst wird der Ausgang auf “Aus” geschaltet.

*E00*/E01=SA00
Der Ausgang A00 wird nur dann gesetzt (Speicherung des “Ein”-Zustands), wenn E00 logisch “1” ist und E01 nicht logisch “1” ist.

*E00*/E01=/SA00
Der Ausgang AO0 wird nur dann gesetzt, wenn E00 nicht logisch “1” ist und E01 logisch “1” ist.
(Beachten Sie den Unterschied zum vorhergehenden Beispiel).

Syntax-Diagramm

Aus dem folgenden Syntax-Diagramm für SPS-Anweisungen (Bild 6) kann man die richtige Schreibweise aller Programmbefehle ablesen” Um die Handhabung zu verdeutlichen, soll ein Syntax-Diagramn erläutert werden, das die Bildung von Zahlen darstellt:

Bild 5: Syntax-Diagramm zur Bildung von Zahlen

Das Syntax-Diagramm besteht aus mehreren Linien, die Wege darstellen. Um eine Zahl zu bilden, muss das Diagramm von “Anfang” bis “Ende” durchlaufen werden. Dabei darf man sich nie gegen die Pfeilrichtung bewegen.

Der erste Weg führt auf ein Rechteck. Der Text im Rechteck besagt, dass zur Bildung einer Zahl eine Ziffer (0 … 9) geschrieben werden muss. Nach dem Rechteck verzweigt der Weg. Man kann entweder direkt zum “Ende” gehen, oder man geht zurück zur linken Seite des Rechtecks. Im ersten Fall ist die Zahl gebildet. Sie besteht dann nur aus einer Ziffer. Im zweiten Fall kann man der ersten Ziffer eine weitere anfügen. Nachdem man eine Ziffer angefügt hat, besteht erneut die Möglichkeit sich zu entscheiden, ob eine weitere Ziffer angehängt werden soll oder nicht.

Bild 6: Syntax-Diagramm für SPS-Anweisungen

Bild 7: Vergleich: Kontaktschaltung, Logikplan, SPS-Programm

Grundzustand der Operanden

Immer wenn das Programm sein Prompt “SPS>” ausgibt und auf die Eingabe eines Befehls wartet, nehmen die Operanden folgende Zustände ein:

Eingängeentsprechend den Eingangssignalen
Ausgängelogisch “0” (L-Pegel)
Merkerlogisch “0”
Hardware-Timerlogisch “0”
Software-Timerlogisch “0”
Zählerlogisch “0”

Diese Zustände werden auch beim Start eines SPS-Programms eingenommen und können nur durch entsprechende Anweisungen bzw. äußere Signale verändert werden.

Programm-Beispiele

Blinklicht

Ausgang A00 blinkt:

ProgrammKommentar
*/M00=LZ00,10=LZ01,10Wenn der Merker M00 nicht logisch “1” ist (alle Operanden sind beim Programm-Start logisch “0”), dann lade die Software-Timer Z00 und Z01 mit dem Wert 10 (Laufzeit 1 Sekunde).
*/A00=SZ00Wenn Ausgang A00 nicht logisch 11 1 11 (Bedingung ist beim Programm-
Start erfüllt), dann setze (starte) Timer Z00.
*Z00=SA00=SZ01=RZ00Wenn Timer Z00 abgelaufen, dann setze Ausgang A00, setze (starte) Timer Z01 und setze Timer Z00 zurück.
*Z01=RA00=RZ01Wenn Timer Z01 abgelaufen, dann setze Ausgang A00 und setze Timer Z01 zurück.

Zähler

Der Zähler zählt die Häufigkeit der “EIN”-Zustände von E00. Nach 5 mal “EIN” wird über A00 ein Signal ausgegeben. Dieses Signal (und der Zähler) kann mit einem “Ein”-Signal von E01 rückgesetzt werden.

ProgrammKommentar
*/M01=LC00,5=SM01Wenn Merker M01 nicht logisch “1” ist (dies ist beim Programm- Start der Fall), dann lade den Zähler COO mit dem Wert 5 und setze den Merker M01. Da M01 nun gesetzt ist, ist die Bedingung beim nächsten Programm-Durchlauf nicht erfüllt und der Zähler-Wert wird nicht durch den LADE-Befehl verändert.
*/M00*E00=C00=SM00Wenn der Merker M00 nicht logisch “1” ist (beim Programmstart erfüllt) und wenn der Eingang E00 logisch “1” ist, dann ziehe vom augenblicklichen C00-Zählerstand Eins ab und setze MOO. Durch das Setzen des Merkers wird der Zähler gesperrt.
*/E00=RM00Wenn EOO nicht mehr auf logisch “1” ist, dann setze MOO zurück und gebe so den Zähler frei.
*C00=SA00Wenn der Zähler abgelaufen ist, dann setze den Ausgang A00 (Signal).
*E01=RM01=RA00Wenn E01 logisch “1” ist, dann setze M01 (gebe Lade-Befehl frei) und A00 (lösche Signal) zurück.

Aufruf des SPS-Programms

Um mit dem SPS-Programm arbeiten zu können, muss erst die Monitor-Erweiterung MAT 85+ aufgerufen werden:

Nach dem Einschalten des Mikrocomputers und dem Betätigen der Leertaste (Space) meldet sich das Betriebsprogramm MAT 85. Nachdem es eine Liste aller zur Verfügung stehenden Kommandos ausgegeben hat, erscheint die “Bereit”-Meldung (Prompt) von MAT 85:

KMD >

Durch Betätigen der Leertaste kann nun die Monitor-Erweiterung MAT 85+ aufgerufen werden. Die Erweiterung meldet sich mit dem Prompt:

KMD+>_

Zum Aufruf des SPS-Programms muss nun die Taste “S” und anschließend die “CR”-Taste (Carriage Return, Wagenrücklauf), gedrückt werden:

Bild A01 – Kommandoliste des SPS

Wurde das SPS-Programm bereits zuvor aufgerufen, so meldet es sich mit:

BFZ-SPS-PROGRAMM V2.1 RESTART

Durch das Wort “RESTART” und ein akustisches Signal zeigt das Programm, dass es schon einmal aufgerufen wurde. Der Programmspeicher-Inhalt entspricht dem Zustand vor der Ausführung des letzten QUIT-Kommandos.

Kommando-Eingabe

Die Bereitschaft zur Annahme eines Kommandos zeigt das Programm durch den Ausdruck “SPS>” an. Jedes der oben aufgelisteten Kommandos kann durch die Eingabe seines ersten Buchstabens und durch anschließendes Betätigen der Taste “CR” (Carriage Return, Wagenrücklauf) aufgerufen werden. Daraufhin druckt das Programm den vollständigen Kommandonamen und fordert eventuell zusätzliche Informationen an. Falsch eingegebene Zeichen können durch die Betätigung der Taste “DEL” (Delete, Löschen) oder “BS” (Backspace, Rückwärtsschritt) gelöscht werden. Soll das Kommando abgebrochen werden, muß die Taste “ESC” (Escape, Flucht) betätigt werden. Man wechselt dann automatisch vom SPS-Programm zum Betriebsprogramm MAT 85. Dieses quittiert die Eingabe von “ESC” durch ein akustisches Signal und fordert durch das Ausdrucken von “KMD >” ein neues Kommando an.

Bildschirm-Modus, Drucker-Modus

Das SPS-Programm unterscheidet zwischen Bildschirm-Modus und. Drucker-Modus. Immer dann, wenn das Programm auf eine neue: Eingabe wartet, kann durch gleichzeitiges Betätigen der Taste “CONTROL” und “P” zwischen dem Bildschirm- und dem Drucker-Modus gewechselt werden. Im Drucker-Modus erfolgen alle Ausgaben gleichzeitig auf dem Bildschirm und auf dem Drucker

Bediener-Führung

Bei allen Eingaben prüft das Programm, notwendigen Format entsprechen. Ist dies Bediener durch ein akustisches Signal merksam gemacht.

Beschreibung der Kommandos

Das HELP-Kommando

Mit dem HELP-Kommando lassen sich die Namen der zulässigen Kommandos in alphabetischer Reihenfolge ausdrucken. Aufruf und Handhabung:

SPS > HELP
(Kommando-Ausführung)
SPS>

Zur Kommando-Ausführung:

  • Nach dem Ausdrucken aller Kommandonamen erfolgt ein Rücksprung in die Kommando-Routine (SPS>).
  • Zum Aufruf eines der Kommandos muss nur der 1. Buchstabe, gefolgt von der Taste [CR], eingegeben werden.
  • Eingaben, die vor der Betätigung von [CR] erfolgen, können mit den Tasten [DEL] (Delete, löschen) und [BS] (Backspace, RÜckwärtsschritt)gelöscht werden.

Das EDIT-Kommando

Mit dem Kommando EDIT wird ein Unterprogramm, der Editor, aufgerufen. Mit ihm können die einzelnen Programmschritte des SPS-Programms eingegeben werden. Außerdem ermöglicht er das Einfügen, Löschen, Verändern und Suchen einzelner Programmschritte. Der Editor überprüft alle Eingaben die der Bediener macht. Fehler werden durch ein akustisches Signal angezeigt und in einem Großteil der Fälle durch eine Meldung erläutert.

Aufruf:

SPS > EDIT

Steht noch kein Programm im Speicher, meldet der EDITOR:

ANF:

“ANF:” zeigt an, dass man sich am Programm-Anfang befindet. bedeutet, dass hier das Programm-Ende ist. Da kein Programm im Speicher ist, fallen Anfang und Ende zusammen. Wenn ein Programm im Speicher ist, wird statt die erste Anweisung angezeigt.

Zum Beispiel:
ANF: *E00

Die Ausdrücke, die man mit Hilfe des Editors eingeben kann, bestehen nur aus kleinen Teilausdrücken. So muss z.B. der Ausdruck “*E00*/E01+E02=SA00=LZ03,44” in die fünf Teilausdrücke “*E00”, “*/E01”, “+E02”, “=SA00” und “=LZ03,4411” zerlegt werden. Die Teilausdrücke, die einer Anweisung entsprechen, dürfen maximal ein Verknüpfungs-Symbol ( “+” oder “*” ) bzw. ein Gleichheitszeichen enthalten. Beim Eingeben eines SPS-Programms muss die Eingabe eines solchen Teilausdrucks durch die Betätigung der [CR] – Taste abgeschlossen werden.

Um die Bedienung des Editors näher zu erläutern, soll das SPS-Programm aus Abschnitt 4.3.2.3. eingegeben werden:

*E00*E01=A00

BildschirmanzeigeEingabe, Kommentar
SPS> EDITE [CR] eintippen, “DIT” wird ergänzt
ANF: *E00noch keine Anweisungen im Speicher.
Eingabe: *E00 [CR]
*E01Anfang nun nicht mehr gleich Ende, da bereits eine Anweisung
(*E00) eingegeben wurde. Eingabe: *E01 [CR]
=A00Eingabe der letzten Anweisung: =A00 [CR]
<Ende>Beenden der Programmeingabe durch Betätigung von [CR]
SPS >_SPS Kommandoeingabe

Jede Eingabe muss durch die Betätigung von [CR] abgeschlossen werden. Um den Editor zu verlassen, muss [CR] als erstes Zeichen eingegeben werden. Wurden Eingaben noch nicht durch [CR] abgeschlossen, so ist die Korrektur von Tippfehlern durch Betätigen der Tasten [DEL], [BS] oder [<–] möglich.

ANZEIGEN der Anweisungen:

Mit [SP] kann man zur nächsten Anweisung im Programmspeicher gehen, mit [-] kann man zur vorherigen Anweisung im Programmspeicher zurück gelangen:

BildschirmanzeigeEingabe, Kommentar
SPS > EDITE [CR] eintippen “DIT” wird ergänzt
ANF: *E00Anzeige der ersten Anweisung.
Eingabe: [SP]
*E01Anzeige der nächsten Anweisung.
Eingabe: [SP]
=A00Anzeige der nächsten Anweisung.
Eingabe: [SP]
< ENDE>Ende des SPS-Programms.
Eingabe: [-]
=A00Anzeige der vorherigen Anweisung.
Eingabe: [-]
=E01Anzeige der vorherigen Anweisung.
Eingabe: [-]
ANF: *E00Anzeige der vorherigen Anweisung
(Programm-Anfang)

Wird statt [SP] oder [-] aus versehen [CR] betätigt, wird der Editor wieder verlassen.

ANZEIGEN von Programm-Anfang und -Ende:

Durch Drücken von [Cursor down|] kann man an das Programm-Ende springen:
ANF: *E00
<ENDE>

Durch Drücken von [Cursor up] kann man an den Programm-Anfang springen:

<ENDE>
ANF: *E00

ANWEISUNGEN EINFÜGEN

*E01 <*E02Eingabe: < E02 [CR]
Füge vor der angezeigten Anweisung (E01) die Anweisung *E02 ein.
“<” ist das Einfügungszeichen.
*E01Es wird die gleiche Anweisung angezeigt wie vor der Einfügung.
Die neue Anweisung
(*E02) steht vor der angezeigten Anweisung.
Eingabe:[-] (zeige die vorhergehende Anweisung an)
*E02Diese Anweisung wurde eingefügt.

ANWEISUNGEN LÖSCHEN

*E02 >Eingabe: > [CR]
Lösche die angezeigte Anweisung.
“>” ist das Symbol zum Löschen der angezeigten Anweisung.
*E01Es wird die Anweisung angezeigt, die der gelöschten Anweisung folgt.

ÜBERSCHREIBEN falscher Anweisungen:

*E01 *E02Eingabe: *E02 [CR] (Überschreibe *E01 mit *E02)
=A00Es wird die folgende Anweisung angezeigt. Eingabe:[-]
(Zeige die vorhergehende Anweisung an)
*E02 *E01Diese Anweisung (*E02) hat die Anweisung *E01 ersetzt.
Eingabe: *E01 [CR] (Überschreibe *E02 mit *E01)
=A00Es wird die folgende Anweisung angezeigt. Eingabe: [CR]
(Beende den Editor)
SPS >_

Der Editor akzeptiert keine fehlerhaften Eingaben. Die Fehlerstelle wird vom Editor durch ein Fragezeichen markiert:

SPS > EDITE [CR] eintippen “DIT” wird ergänzt.
ANF: *E00 E02Anzeige der ersten Anweisung *E00
Versuch die Anweisung *E00 zu überschreiben:
Eingabe: E02 [CR]
(Eingabe fehlerhaft, da Verknüpfungssymbol fehlt)
ANF: *E00 E02
?
SPS>
Anzeige der alten Anweisung (*E00).
Die Fehlerstelle wird durch ein Fragezeichen markiert.
Eingabe: [CR]
(Beenden des Editors).

Die SUCHFUNKTION:

ANF: *E00 ?0Eingabe: ?0 [CR]
Suche nächste Anweisung, die eine Null enthält.
*E01 ?0Die nächste Anweisung, die eine Null enthält, wird angezeigt.
Eingabe: ?[CR]
Suche das zuletzt gesuchte Zeichen (im Beispiel “0”) erneut.
Die Eingabe von “0” kann entfallen, da das Programm sich das Zeichen “gemerkt” hat.
Das Zeichen wird auf dem Bildschirm ergänzt.
=A00 ?0Die nächste Anweisung, die eine Null enthält, wird angezeigt.
Eingabe: [CR]
Suche das gesuchte Zeichen (“0”) erneut.
=A00 ?0 NICHT GEFUNDEN
=A00
Keine weiteren Anweisungen mit “0”. Es wird die gleiche Anweisung angezeigt wie vor dem Suchbefehl.
Eingabe: [Cursor up] ( Sprung an den Programmanfang)
ANF: *E00 ?E01Eingabe: ?E01 [CR] Suche nächste Anweisung mit dem Operanden E01.
*E01Anzeige der nächsten Anweisung mit dem Operanden E01

Die folgende Tabelle zeigt eine Zusammenfassung aller EDIT-Kommandos:

xxxx = vollständige SPS-Anweisung
y = zu suchendes Zeichen

Das GO-Kommando

Durch das GO-Kommando kann ein im Programm-Speicher befindliches SPS-Programm gestartet werden. Zu Beginn haben alle Ausgänge, Merker, Timer und Zähler den Zustand logisch “0”.

Aufruf:
SPS > GO G [CR] eintippen “O” wird ergänzt

* SPS-PROGRAMM GESTARTET*

Ein laufendes SPS-Programm kann durch Drücken einer beliebigen Taste der Tastatur (außer CONTROL, BREAK und SHIFT) abgebrochen werden, wenn die im Anhang beschriebene Schaltungsergänzung
durchgeführt wurde. Wenn oder ist, die erste Anweisung im SPS-Programm keine wenn die letzte Anweisung im SPS-Programm wird die Fehlermeldung

*** PROGRAMM-FEHLER ***

Bedingung ist, keine Zuweisung ausgegeben. Das Programm meldet sich dann mit seinem Prompt
“SPS” und ist bereit, ein neues Kommando entgegenzunehmen.

Das LIST-Kommando

Mit dem LIST-Kommando kann das im Programm-Speicher befindliche SPS-Programm aufgelistet werden.

Aufruf:
SPS> LIST L [CR] eintippen “IST” wird ergänzt

(Auflistung des Programms)

SPS>

Das Programm ist bereit, weitere Kommandos entgegenzunehmen. Bei der Auflistung des Programms steht jeder SPS-Ausdruck in einer eigenen Zeile. Wenn der Bildschirm voll ist, erscheint die Meldung “==> SPACE”. Die Auflistung wird fortgesetzt, wenn die Space-Taste betätigt wird. Wenn der Drucker eingeschaltet ist, erfolgt ein kontinuierlicher Ausdruck.

Das NEW-Kommando

Mit dem NEW-Kommando kann ein im Programmspeicher befindliches SPS-Anwender-Programm komplett gelöscht werden.

Aufruf:
SPS > NEW N [CR] eintippen “EW” wird ergänzt

Anzeige:
SPS>

Das Programm ist bereit, weitere Kommandos entgegenzunehmen.

Das QUIT-Kommando

Mit dem QUIT-Kommando kann das SPS-Programm verlassen werden. Man gelangt dann automatisch zur Monitorerweiterung MAT 85+ zurück.

Aufruf:
SPS> QUIT Q [CR] eintippen “UIT” wird ergänzt

KMD+>

Die Monitorerweiterung MAT 85+ meldet sich und ist bereit, Kommandos entgegenzunehmen. Wird SPS nun erneut aufgerufen, so meldet es sich mit:

BFZ-SPS-PROGRAMM V2.1 RESTART

Durch den Zusatz “RESTART” und ein akustisches Signal zeigt das Programm an, daß es schon einmal aufgerufen wurde. Der Programmspeicher-Inhalt ist gegenüber dem letzten Aufruf unverändert, wenn er nicht durch andere Kommandos (z.B. “ASSEMBLER”) verändert wurde.

Das READ-Kommando

Mit dem READ-Kommando kann ein SPS-Programm, das zuvor mit dem WRITE-Kommando auf Kassette abgespeichert wurde, in den Programmspeicher geladen werden. Dazu wird das Kassetten-Interface BFZ/MFA 4.4. benötigt.

Aufruf:
SPS > READ R [CR] eintippen “EAD” wird ergänzt
SPACE, DANN BAND EINSCHALTEN

Um das Programm von einer Kassette in den Programmspeicher zu laden, muß erst die Space-Taste betätigt werden. Anschließend ist der Recorder einzuschalten.

Nach erfolgreichem Einlesen meldet sich das Programm mit “SPS>” und ist bereit, weitere Befehle entgegenzunehmen. Wenn ein Lade-Fehler auftritt, wird eine entsprechende Fehlermeldung ausgegeben. Das Programm meldet sich anschließend mit “SPS>” und ist bereit, weitere Befehle entgegenzunehmen. Trat ein Lesefehler auf, so ist der Programmspeicher leer.

Das STEP-Kommando

Das SPS-Programm kann schrittweise abgearbeitet werden. Dazu muß vor dem Starten des Programms mit dem GO-Kommando der Einzelschritt- Modus mit dem STEP-Kommando eingeschaltet werden. Das Abschalten des Einzelschritt-Betriebes erfolgt ebenfalls mit dem STEP-Kommando.

SPS > STEPS [CR] eintippen “TEP” wird ergänzt
EIN/AUS= XX = aktueller Modus
A = Aus
E = Ein
Mögliche Eingaben:
A = STEP-Modus aus
E = STEP-Modus ein
[CR] oder [SP] = STEP-Modus unverändert
SPS >_Das Programm ist bereit, weitere Kommandos entgegenzunehmen.

Das SPS-Programm kann bei eingeschaltetem STEP-Modus, wie im Abschnitt (GO) beschrieben, mit dem GO-Kommando gestartet werden. Es wird dann jede Anweisung vor der Ausführung angezeigt. Die Anweisung wird erst ausgeführt, wenn die Space-Taste betätigt wird. In diesem Fall wird das Ergebnis einer Anweisung (logisch Null oder logisch Eins) angezeigt. Bei SETZ- und RÜCKSETZ-Anweisungen, sowie bei den Anweisungen “=Zxx”, “=Txx”, “=L..” und “=Cxx”, entspricht das angezeigte Ergebnis nicht dem logischen Zustand, sondern gibt an, ob die Anweisung ausgeführt wurde <1> oder nicht <0>.

Bei der Anzeige des Ergebnisses, das innerhalb von spitzen Klammern steht, wird eine eventuelle Negation ( “/” ) berücksichtigt. Betätigt man statt der Space-Taste die CR-Taste, so wird das Programm abgebrochen und es erscheint “SPS>_”.

Der STEP-Modus kann entweder durch gezieltes Ausschalten, wie oben beschrieben, oder durch Verlassen des SPS-Programms ausgeschaltet werden.

Beispiel für die Anzeige im Einzelschritt-Modus bei dem Programm

*E00
*E01
=A00

* SPS-PROGRAMM GESTARTET*
*E00<0>*E00 wird angezeigt.
Die Anweisung, den Eingabekanal E00 zu lesen, wird erst ausgeführt, wenn [SP]betätigt wird. Das Ergebnis, hier “0”, wird dann ergänzt.
*E01 <1>*E01 wird angezeigt.
Die Anweisung, den Eingabekanal E01 zu lesen, wird erst ausgeführt, wenn [SP] betätigt wird. Das Ergebnis, hier “1”, wird dann ergänzt.
=A00<0>=A00 wird angezeigt.
Die Anweisung, das Verknüpfungsergebnis “E00*E01” dem Ausgang A00 zuzuweisen, wird erst ausgeführt, wenn [SP] betätigt wird. Das Ergebnis, hier “0”, wird dann ergänzt.

Das TRACE-Kommando

Das TRACE-Kommando ähnelt dem STEP-Kommando. Bei der Bearbeitung eines SPS-Programms in der Betriebsart “TRACE” hinterlässt jede Anweisung eine Spur (Trace=Spur), indem sie zusammen mit dem jeweiligen Ergebnis angezeigt wird. Bei SETZ- und RÜCKSETZ-Anweisungen, sowie bei den Anweisungen “=Zxx”, “=Txx”, ” … =L” und “=Cxx”, entspricht das angezeigte Ergebnis nicht dem logischen Zustand, sondern gibt an, ob die Anweisung ausgeführt wurde <1> oder nicht <0>.

Bei der Anzeige der Ergebnisse sind eventuelle Negationen (“/”) berücksichtigt. Der Programmlauf wird unterbrochen, wenn der Bildschirm voll ist, oder wenn das SPS-Programm einmal vollständig durchlaufen wurde. In diesem Fall wird”==> SPACE” angezeigt. Durch Druck auf die Space-Taste wird der Programm-Ablauf fortgesetzt. Wird statt der SPACE-Taste CR betätigt, wird das Programm abgebrochen. Wenn der Drucker angeschlossen ist, erfolgt ein kontinuierlicher Programmablauf.

Das Programm kann, wenn die im Anhang beschriebene Schaltungserweiterung durchgeführt wurde, durch die Betätigung einer beliebigen Taste (außer CONTROL, BREAK und SHIFT) abgebrochen werden.

SPS > TRACET [CR] eintippen “RACE” wird ergänzt
EIN/AUS= XX= aktueller Modus
A = Aus
E = Ein
Mögliche Eingaben:
A = Aus
E = Ein
[CR] oder [SPACE] = TRACE-Modus unverändert.
SPS >_Das Programm ist bereit, weitere Kommandos entgegenzunehmen.

Beispiel für die Ausgabe im TRACE-Modus für das Programm

*E00
*E01
=A00

*** SPS-PROGRAM GESTARTET***
*E00<0>Anzeige der Anweisung “Lese Eingabe-Kanal
E00″ mit Ergebnis “0”
*E01 <1>Anzeige der Anweisung “Lese Eingabe-Kanal
E01″ mit Ergebnis “1”
=A00 <0>Anzeige der Anweisung “Weise das Verknüpfungsergebnis
dem Ausgang A00 zu” mit Ergebnis “0”
<ENDE>Ein vollständiger Durchlauf ist abgeschlossen.
==> SPACENur bei ausgeschaltetem Drucker:
Weiterlauf erst bei Betätigung der Space-Taste
[CR] bricht das Programm ab.

Das WRITE-Kommando

Mit dem WRITE-Kommando kann das im Programmspeicher befindliche Programm auf einer Magnetband-Kassette abgespeichert werden. Dazu ist das Kassetteninterface BFZ/MFA 4.4. erforderlich.

Aufruf

SPS > WRITE
BAND EINSCHALTEN, DANN SPACE
W [CR] eintippen “RITE” wird ergänzt
Erst den Recorder einschalten, dann [SPACE] drücken
SPS >_Nach dem Abspeichern des Programms ist die SPS bereit, neue Kommandos entgegenzunehmen.

SPS-Systemadressen

Die Adresse des letzten SPS-Programm-Bytes ist in den Speicherzellen E003 (LSB) und E004 (MSB) gespeichert. Der SPS-Programmspeicher beginnt bei der Adresse E0ED.

Bild 8: RAM-Aufteilung für SPS


Weitere Informationen

Dokumentation