Alexander Sewald
Hutgartenweg 5a
82269 Kaltenberg
Deutschland
Alexander.Sewald@ABSengineering.de

Tel.:
Fax:
Handy (sms)

08193-939-718
08193-939-719
0179-117-2368

Logo ABS engineering

home

SCHLEICHER System Auswahl

Programmiergeräte Promodul-K

Die Programmiersprache der PROMODUL-K

Anweisungen

Adressraum

Programme verstehen

Kontaktplantechnik (KOP):

In der IEC 61131 sind folgende Darstellungsformen des Programms einer SPS vorgesehen:

Anweisungsliste AWL
Die Anweisungen stehen in einer Liste untereinander, in jeder Zeile steht eine Anweisung
Kontaktplan KOP
die Anweisungen werden in der Art eines Stromlaufplanes (Schaltplan) dargestellt, der um 90° nach links gedreht ist.
Funktionsplan FUP
die programierten logischen Funktionen (Und, Oder, Zeitglied, Flipflop .. etc.)werden in Boxen dargestellt, die mit Wirkungslinien verbunden sind
strukturierter Text ST
die Schulprogrammiersprache PASCAL stand Pate. In der Art von Hochsprachen stehen zu Blöcken zusammengefasste Anweisungen in einer Zeile nebeneinander
(Befehlsliste)
dieser Begriff ist nicht genormt. In der PROMODUL-K verwendet SCHLEICHER diesen Begriff um das Programm kompakt darzustellen. In einer Matrix erscheinen je Zeile acht Anweisungen. Der Sprung von einer Zeile in die nächste is 10Q. Kommentare werden nicht angezeigt. NOP Anweisungen werden als leere Plätze angezeigt. So erhält man einen schnellen Überblick über das Programm.

Seiner Zeit löste die PROMODUL-K Schütz- und Relaissteuerungen ab. Man wollte jene Fachleute ansprechen, die bisher Steuerungen gestaltet haben: Elektriker! Folglich entschied man sich für die Kontaktplantechnik obwohl KOP damals noch nicht definiert war.

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

Schaltplan, waagerecht

 

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.

Schaltplan, senkrecht

 

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