Hier ein Blatt aus einem Schaltplan mit einer ziemlich einfachen Schaltung:

Die obere Linie führt 24V Spannung, die untere Linie 0V. Wenn die drei Kontakte zugleich betätigt sind, erhält die Schützspule Spannung und zieht an.
Genau so wird eine SPS programmiert. Die Kontakte des Stromlaufplanes werden an Eingänge der SPS angeschlossen, die Schützspule an einen Ausgang der SPS.
Zur Programmierung dreht man den Sromlaufplan um 90°, so dass die spannungsführende Linie links steht. Rechts ist 0V. wenn alle Kontakte geschlossen sind, fließt Strom von links nach rechts und bringt die Schützspule zum Ansprechen.

Das Programm einer PROMODUL-K wird in Kontaktplantechnik KOP geschrieben. Dabei werden die Anweisungen nicht in einer langen Liste (Anweisungsliste AWL) dargestellt sondern erscheinen als Kontaktschema, ganz ähnlich wie auf dem Stromlaufplan. Am linken Bildschirmrand erscheinen zur Orientierung die Zeilennummern, unter denen die Kontakte im Mittelfeld des Bildschirms programmiert sind. Die senkrechte Linie deutet die spannungsführende Linie des Stromlaufplans an.
Am rechten Bildschirmrand erscheinen die "Schützspulen", z.B. Ausgänge der SPS Steuerungen, zumeist aber "Hilfsschütze", in der SPS interne Merker .
Die Kontakte werden auf dem Bildschirm als --] [-- (Schliesser) oder ---]/[--- (Öffner) dargestellt. Ein Schliesser leitet den Signalfluß weiter, wenn er betätigt wird. Ein Öffner unterbricht den Signalfluß, wenn er betätigt wird.
Ein Schema von Kontakten, das schließlich an einer "Schützspule" endet bezeichnet man als Netzwerk.
Der folgende Bildschirm der DOC 4.5 Software zeigt zwei Netzwerke. Betrachten wir das einfache Netzwerk, das mit Anweisung Nummer 00134 (am linken Bildschirmrand) beginnt genauer: Es hat die gleiche Struktur wie die Schaltung auf dem Stromlaufplan!
die Kontaktbezeichner des Stromlaufplans sind nun Adressen geworden und stehen über den "Kontakten".
Wenn alle Adressen "EIN" sind, dan wird auch die "Schützspule" A 0130 eingeschaltet werden. Das angeschlossene Gerät, z.B. ein Luftventil, wird öffnen und einen Zylinder bewegen.

Das gewählte Beispiel ist äußerst einfach und rechtfertigt, für sich allein, noch nicht den Einsatz einer SPS. In Wirklichkeit sind die Netzwerke, entsprechend der Aufgabenstellung, viel komplizierterr
Die Anweisungen eines PRMODUL-K Programms:
Der italienische Vertreter von SCHLEICHER hielt seinen
verdutzten Kunden eine offene Hand entgegen: "5 Befehle brauchen Sie um
eine PROMODUL K zu programmieren!". Eine revolutionär minimalistische
Aussage, zu einer Zeit als jedes nussbaumgetäfelte Rundfunkgerät stolz
verkündete, wieviele Transistoren in dem Prachtstück ihr Werk verrichten.
Bemerkenswert effizient auch vor dem Hintergrund der Zeilen, die Sie gerade
lesen: aktivieren Sie doch einmal die Funktion "Quelltext"
Ihres Browsers und Sie werden staunen, wie viele Anweisungen von Nöten sind um
Ihnen diese
wenigen Zeilen vor Augen zu führen!
Um das Oktett komplett zu machen waren es tatsächlich acht Anweisungen, die
sich aber auf des findigen Italieners Fünf reduzieren lassen:
S
|
... ---] [--- ...
|
Schliesser
|
leitet den logischen Zustand weiter, wenn betätigt
|
O
|
... ---]/[--- ...
|
Öffner
|
unterbricht den logischen Zustand, wenn betätigt
|
A
|
... ---( A )
|
Ausgang
|
legt den logischen Zustand, den das Netzwerk an dieser Stelle hat
auf den Ausgang des Netzwerkes und öffnet ein neues Netzwerk
|
-N
|
---]?[----
|
|
|
|
Nebenlinie
|
schliesst eine Nebenlinie ab und merkt sich den Zustand;
? kann ein Schliesser sein (SN)
oder ein Öffner (ON)
|
-H
|
|
|
---]?[---|
|
|
|
----].
|
Hauptlinie
|
fasst den Zustand aller Nebenlinien zusammen und bildet einen
Verzweigungspunkt für eventuelle weitere Nebenlinien.
? kann ein Schliesser sein (SH) oder ein Öffner (OH)
|
COM Anweisung:
Die COM Anweisung hat keinen Einfluß auf das SPS Programm,
wohl aber auf den
Programmausdruck. Sie kann an jeder Stelle eines Netzwerkes programmiert
werden. Unter der Operandennummer einer COM Anweisung lässt sich in
DOC 4.5 ein Kommentartext hinterlegen. Erscheint der Kommentar irgendwo
innerhalb eines Netzwerks, so wird der Kommentartext in der Spalte neben
dem Netzwerk unter dem Kommentar der vorhergehenden Variablen gedruckt.
Wenn der Kommentar am Anfang des Netzwerkes programmiert wird, so wird er
in der rechten Spalte drucktechnisch hervorgehoben. Diese Art Kommentare
werden wird in DOC4.5 als 'Überschriften' definiert.
In der Querverweisliste erscheinen alle Überschriften als
separater Block. Auf diese Weise erhält man ein
Inhaltsverzeichnis des Programms.
Den Bereich von einer Überschrift bis zur nächsten erkennt
DOC4.5 als "Modul". Module können selbstständig abgespeichert und
geladen werden
Eine COM Anweisung mit dem Operand 0000 wird als NOP
angezeigt.
Die Adressbereiche (Variablen) der PROMODUL-K:
SCHLEICHER hat sich bei der PROMODUL-K, sowie der
PDPS, der P02 und P03 für das
oktale
Zahlensystem entschieden.
Das Oktalsystem wird auf die Adressen der Eingänge, der Ausgänge, und die Merker des Arbeitsspeichers angewendet.
Ebenso werden auch die Anweisungen oktal nummeriert. Nach der Anweisung 7 folgt die Anweisung 10, nach 177 die Anweisung 200.
3000Q bis 3777Q
|
512 Merker; Nach Spannung EIN ist deren
Zustand undefiniert. Es erfolgt keine Pufferung
|
2000Q bis 2777Q
|
sog. "Register": 8 Schrittketten mit maximal
64 Schritten. Nur bei CPUs mit der Kennung "KR"
|
1000Q bis 1777Q
|
512 Ausgangsmerker: Wenn unter der gleichen Adresse des
Bereichs 0 bis 777Q eine Ausgangskarte gesteckt ist, so wird
diese durch die 'A' Anweisung mit gesetzt. Alle Merker
dieses Bereichs werden bei Spannung EIN gelöscht.
Selbsthaltungen sind also, wie bei einer Schützsteuerung,
bei Spannung EIN immer zurückgesetzt
|
0 bis 777Q
|
maximal 512 Ein- und Ausgänge. Die Eingänge werden
direkt programmiert, die Ausgänge über die Ausgangsmerker.
|
|
Der Typ einer Variablen, ob Eingang, Ausgang oder Merker ist einzig durch ihre Adresse bestimmt:
- ein Schliesser oder Öffner auf eine Adresse von 0 bis 777Q fragt immer eine Eingangskarte ab
- ein Schliesser oder Öffner auf eine Adresse von 1000Q bis 1777Q fragt immer einen Ausgangsmerker ab
- ein Schliesser oder Öffner auf eine Adresse von 3000Q bis 3777Q fragt immer einen Merker ab
- eine Anweisung A auf eine Adresse 0 bis 777Q ist äußerst unwahrscheinlich, er würde direkt einen Ausgang auf einer Ausgangskarte setzen, wenn unter der Adresse eine Ausgangskarte gesteckt ist. Dieser Ausgang kann nicht z.B. mit einer S Anweisung abgefragt werden.
- eine Anweisung A auf eine Adresse 1000Q bis 1777Q setzt einen Merker, der beliebig oft per S oder O abgefragt werden kann. Wenn unter der gleichlautenden Adresse im E/A Bereich eine Ausgangskarte gesteckt ist, so setzt die A-Anweisung auch diesen Ausgang.
- eine Anweisung A auf eine Adresse im Bereich 3000Q bis 3777Q setzt einen Merker, der beliebig oft wieder abgefragt werden kann.
Beispiele:
Versetzen Sie sich zurück in die Pioniertage der SPS
und sehen Sie, was Ihnen der geräuschvolle Matrixdrucker auf das
blau-weiß linierte Endlospapier gestanzt hat. Die grünen und roten Symbole sind Hinweise und erscheinen im Ausdruck nicht.
Schliesser, Öffner, Ausgang:
00020:| 0023 3105
0106 1036
1125
|---] [-------]/[-------]/[-------] [--------------------------( A )
(S)
(O) (O)
(S)
(A)
|
der Ausgang 1125 wird aktiv
wenn der Eingang 23 betätigt ist
(Schließer) und der Merker 3105
abgefallen ist (Öffner)
und der Eingang 106 nicht betätigt ist
(Ö
ffner) und Ausgang 1036
aktiv ist
(Schließer).
Netzwerke der PROMODUL-K können beliebig lang sein. Zur besseren
Lesbarkeit werden beim Ausdruck und bei der Bildschirmdarstellung
die Linien automatisch am rechten Rand umgebrochen und mit
Erweiterungsreferenzen
versehen.
Nebenlinien:
00030:| 0023 3105
|---] [-------]/[----------------------------------
| (S) (ON) |
| |
00032:| 0106 0025 1060 3712 3100 |
|---]/[-------] [-------] [-------]/[-------] [----
| (O) (S) (S) (O) (SN) |
| |
00037:| 0106 |
|---] [--------------------------------------------
| (SN) |
| |
00040:| 1062 0025 | 1125
|---]/[-------] [-----------------------------------------------( A )
(O) (S)
(kein SN weil letzter vor A!) (A)
|
Der Suffix -N kann mit der Anweisung S (SN) und mit der
Anweisung O (ON) programmiert werden. Er kennzeichnet das Ende
einer Nebenlinie und öffnet die nächste Nebenlinie. Die CPUs der
PROMODUL -K verkraften beliebig viele Nebenlinien mit beliebig
langen Netzwerksträngen. Bis der Programmspeicher voll ist. DOC 4.5
bricht komplexe Netzwerke automatisch um und setzt
Erweiterungsreferenzen. Es ist mir nicht bekannt, bis wie weit man
solche praxisfernen Spielchen treiben kann.
Die Ausgangsanweisung zieht das vorhergehende Netzwerk
selbstständig zusammen. Die Anweisung SN oder ON vor einer
Ausgangsanweisung ist nicht zulässig und wird durch das PEG und
DOC 4.5 abgelehnt.
Hauptlinien:
00060:| 0023
|---] [--------------
| (SN)
|
| |
00061:| 0106 0025 |
|---]/[-------] [---|
(O)
(SH) |
|
00063:
| 3125 0019
----] [-------]/[----
(S)
(OH) |
|
00065:
| 1034
|---] [----
| (ON) |
| |
00066: | 3735 |
|---] [---|
(SH) |
|
00067: | 112 3156
|---] [------( A )
(S) (A)
|
Der Suffix H kann mit Schließer (SH) oder mit Öffner (OH) programmiert werden.
Er dient dazu, nach der Anweisung das Netzwerk auf eine Line (Hauptlinie)
zusammenzuziehen, und dort einen Verzweigungspunkt für neue Nebenlinien zu bilden.
Die CPUs der PROMODUL -K verkraften beliebig viele Verzweigungen mit beliebig
langen Netzwerksträngen. Bis der Programmspeicher voll ist. DOC 4.5 bricht komplexe
Netzwerke automatisch um und setzt Erweiterungsreferenzen. Es ist mir nicht
bekannt, bis wie weit man solche praxisfernen Spielchen treiben kann.
Die Ausgangsanweisung zieht das vorhergehende Netzwerk selbstständig zusammen.
Die Anweisung SH oder OH vor einer Ausgangsanweisung ist nicht zulässig und wird
durch das PEG und DOC 4.5 abgelehnt
|
Einschränkungen
1. Verschachtelungstiefe
Die Netzwerke der PROMODUL-K haben eine Verschachtelungstiefe von 1. Angenommen,
Sie wollen in den obigen Programmabschnitt "Nebenlinie" folgende
änderung einbringen (Darstellungsweise der -K berücksichtigt): in der zweiten
Nebenlinie soll der Schliesser 1060 und der Öffner 3712 mit einem Öffner 100
überbrückt werden.
00030:| 0023 3105
|---] [-------]/[----------------------------------
| (S) (ON) |
| |
00032:| 0106 0025 |
|---]/[-------] [---- |
| (O) (SH) | |
| | |
00034:| | 1060 3712 |
| |---] [-------]/[---- |
| | (S) (ON) | |
| | | |
00036:| | 0100 | |
| |---]/[-------------| |
| (OH) | |
| | |
00037:| | 3100 |
| |---] [----
| (SN) |
| |
00040:| 0106 |
|---] [--------------------------------------------
| (SN) |
| |
00040:| 1062 0025 | 1125 |---]/[-------] [-----------------------------------------------( A )
(O) (S)
(A)
|
Das ist mit der PROMODUL-K (und allen weiteren Modellen bis zur P03) nicht
möglich. Wenn Sie versuchen, die rot markierten Anweisungen über DOC 4.5
einzubringen, so werden Sie das ursprüngliche Netzwerk nichtmehr erkennen!
Abhilfe bringt folgende Änderung (Schliesser 3100 zum besseren Verständnis
absichtlich falsch eingezeihnet):
00030:| 0023 3105
|---] [-------]/[----------------------------------
| (S) (ON) |
| |
00032:| 0106 0025 1060 3712 3100 |
|---]/[-------] [-------] [-------]/[-------] [----
| (O) (S) (S) (O) (SN) |
| |
00037:| 0106 0025 0100 3100 |
|---]/[-------] [-------]/[-----------------] [----
| (O) (S) (O) (SN) |
| |
00043:| 0106 |
|---] [--------------------------------------------
| (SN) |
| |
00044:| 1062 0025 | 1125
|---]/[-------] [-----------------------------------------------( A )
(O) (S)
(A)
|
Diese Programmierung benötigt drei Kontakte mehr als die nicht mögliche
Wunschprogrammierung.
Besieht man jedoch das Programm genauer, so schwindet der
"Nachteil": Für größere Verschachtelungstiefen braucht man
Anweisungen zum Einspeichern und auslesen des VKE-Stacks. Üblicher Weise
sind das Klammern, die allerdings konsequent bei jeder Verschachtelung
eingesetzt werden müssten. Eine Verschachtelungstiefe von zwei braucht also
vier Klammeranweisungen: zweimal "Klammer auf" und zweimal
"Klammer zu". Also vier zusätzliche Anweisungen.
2. Mehrfache Ausgänge
Angenommen, Sie wollen zum Ausgang 1125 'mal schnell den 1126 dazu hängen:
00020:| 0023 3105
0106 1036
1125
|---] [-------]/[-------]/[-------] [--------------------------( A )
(S)
(O)
(O)
(SH) |
(A)
| | 1126
|----------------------( A )
|
Das ist mit der PROMODUL K nicht zu machen. Statt dessen wird wie folgt
programmiert:
00020:| 0023 3105
0106 1036
1125
|---] [-------]/[-------]/[-------] [--------------------------( A )
| (S)
(O) (O)
(S)
(A)
00026:| 1125 1126
|---] [--------------------------------------------------------( A )
| (S) (A)
|
Der Merker des ersten Ausganges wird auf den zweiten Ausgang kopiert. Für
jeden weiteren Ausgang ist das zu wiederholen. Somit sind Aufgaben wie das
Vorbesetzen von Variablen problematisch. Hier schafft erst die P03 Abhilfe.
Kaltenberg, 14.06.11
|
|