home

SCHLEICHER System Auswahl

Programmiergeräte Promodul-K

Programmier-sprache

Themen auf dieser Seite:


Servicekette

Löcher

Mehrfach-programmierung

Eingangsabbild

Lampentest

Entprellung

Impuls

Selbsthaltung

Flip Flop

Zeitglieder

Ausgewählte Standard Programmsequenzen der PROMODUL-K

 

Es ist müßig, anzunehmen, dass in der Zeit des angehenden dritten Jahrtausends irgend ein Mensch ein neues Programm für eine PROMODUL-K schreiben würde. Sehr wohl ist es aber möglich, dass eine PROMODUL-K unauffällig und fleißig jahrelang eine Maschine gesteuert hat. Nun interessiert man sich für das Programm, vielleicht um eine kleine Anpassung einzuprogrammieren, oder um die Steuerung auszutauschen.
Die Kontaktplantechnik ist weitgehend selbsterklärend, weit über Sprachbarrieren hinweg. Im Folgenden habe ich einige Besonderheiten herausgegriffen, die ohne Erklärung rätselhaft erscheinen.

Sollten Sie in Ihrem eigenen PROMODUL-K Programmausdruck rätselhafte Dinge entdecken, so schicken Sie mir bitte eine e-mail, ich will Ihnen gerne helfen.

Servicekette:

Es ist durchaus möglich, dass Ihnen DOC4.5 am Anfang eines PROMODUL-K Programms folgende Anweisungen zeigt:


zum besseren Verständnis wechseln Sie von der Darstellungsart "Schaltplan" in die Darstellungsart "Befehlsliste"
(siehe Fusszeile, zweiter Parameter von links):

Unter "Schritt" oder auch "Schrittnummer" versteht man in der PROMODUL-K die Zeilennummer einer Anweisung. Bitte beachten Sie, dass die Anweisungen oktal gezählt werden: nach der 7 folgt die 10Q, nach der 77Q folgt die 100Q.

Die Befehlsliste zeigt, dass auf Anweisung Nr. 0 der Befehl S 0000 programmiert ist und auf Anwg. Nr. 1 der
Befehl S 0001, auf Anwg. Nr. 2 steht S 0002, auf Anwg. Nr. 24 der Befehl S 0024 ...etc und das hat folgenden Grund:

In der PROMODUL-K gibt keine LEDs an den Ein- und Ausgangskarten. Dafür ist in jedes Grundgerät ein Daumenradschalter eingebaut, daneben eine Leuchtdiode. An dem Daumenradschalter kann eine Anweisungsnummer (Schrittnummer SNR) eingestellt werden. Die Leuchtdiode zeigt dann den Zustand der Adresse der Anweisung.

In dem obigen Programm wird also in Daumenradschalterstellung 53 der Zustand des Eingangs 53 dargestellt. Dieses Schema geht durch bis in die achte Zeile zur Anweisung Nr.77. Offenbar stecken in der Steuerung acht Eingangskarten auf den Steckplätzen 00 bis 07.

Mit Hilfe des Daumenradschalters und der LED können über die Servicekette die Zustände der Eingänge abgefragt werden.

Ab der Anweisung 100 in der neunten Zeile springen die Adressen auf 1100, 1101, 1102. In der Anweisung Nr. 145 steht S 1145. Die Adresse eines Ausgangsmerkers. Die Zustände von Ausgängen können nur über die Ausgangsmerker zurückgelesen werden. Offenbar stecken in der Steuerung ab dem Steckplatz 10. Ausgangskarten.
Mit Hilfe des Daumenradschalters und der LED können über die Servicekette die Zustände der Ausgangskarten abgefragt werden.

Meist haben das findige Maschinenführer bereits herausgefunden. Sie sind dann überrascht dass man mit dem vermeintlichen I/O Tester auch noch das ganze SPS Programm testen kann.

zurück zur Themenübersicht

Löcher im Programm:

Wenn sie nun schon einmal die Darstellungsart "Befehlsliste" aktiviert haben, lohnt es sich, weiter durch das Programm zu blättern. Vielleicht stossen Sie dabei auf eine Stelle wie die folgende:

 



Das Programm hat "Löcher"! und das hat folgende Bewandnis:
Für die PROMODUL-K  gibt es keinen Powerflow Test des Programms. Zum Test braucht man einen gültigen Programmausdruck und viel Hornhaut auf dem Daumen: Zunächst sucht man im Programmausdruck die Stelle die man sich genauer besehen will. Dann stellt man über den Daumenradschalter die Anweisungsnummer (Schrittnummer SNr) ein, und sieht an der Leuchtdiode den Zustand des Signals das an dieser Stelle programmiert ist.
Die Anweisungsnummer hat also eine Schlüsselbedeutung für den Test des Programms. Muß man eine Anweisung löschen, und zöge der Editor automatisch den Rest des Programms zusammen so wären ab dieser Stelle alle Anweisungen verschoben. Der Matrixdrucker müßte bemüht werden, um ein neues Programmlisting zu erstellen, bis zur nächsten Änderung.
Um das zu vermeiden zieht der Editor lediglich das geänderte Netzwerk zusammen, der Rest des Programms bleibt unverschoben. So entstehen die Löcher.
Es gab sogar Anwender die solche Zwischenräume vorschrieben, um Reserven zu schaffen für das Einfügen von Anweisungen.
An dieser Stelle sieht man auch gut die Arbeitsweise der PROMODUL-K: Ein leerer Programmspeicher besteht aus 4096 NOP Anweisungen, die der Programmzähler stur abarbeitet. "Programmieren" besteht darin, die "NOPs" durch sinnvolle Anweisungen zu ersetzen

zurück zur Themenübersicht

Mehrfachprogrammierung:

Programmiert man in der PROMODUL-K eine Sequnz von Anweisungen, so wir diese alle 10 msec abgearbeitet. Wenn z.B. ein Grenztaster abgefragt wird, der einen Antrieb stoppen soll, so wird alle 10 msec dieser Kontakt abgefragt und der Ausgang für den Fahrantrieb wird ggf. gestoppt. Die Zeit von der Betätigung des Kontaktes bis zur Auslösung des Stopps kann maximal 10 msec (1 Programmzyklus) oder minimal 5 Mikrosekunden betragen. Wenn die 10 msec zu langsam sind kann man zu folgendem Trick greifen:
Wenn man die Sequenz nach genau 4000Q Anweisungen wiederholt, so führt die Steuerung die Anweisungen zweimal je Zyklus durch. Die Reaktion auf das oben geschilderte Ereignis erfolgt also mit einer Verzögerungszeit von 5 Mikrosekunden bis 5 msec.

00100:|  3125       3707
      |---] [-------]/[----
      |                   |
      |                   |
00102:|   3130            |
      |---] [-------------|
                          |
                          |
00103:                    |   1027      3126      0046                3130
                          ----]/[-------] [-------]/[----------------( A )

00107:|   3130      0062                                              1121
      |---] [-------]/[----------------------------------------------( A )


 


02107:|   3130      0062                                              1121
      |---] [-------]/[----------------------------------------------( A )



 


04107:|   3130      0062                                              1121
      |---] [-------]/[----------------------------------------------( A )



 


06107:|   3130      0062                                              1121
      |---] [-------]/[----------------------------------------------( A )



Das Netzwerk ab Anwg. 00100Q erzeugt eine Freigabebedingung für das schnelle Abschalten. Diese Bedingungen, sie können auch über mehrere Netzwerke gehen, sind "langsam": "nur" 10 msec.

In dem schnellen Netzwerk ab Anwg. 00107Qist nur noch die Freigabe 3130 und der schnelle Eingang 0062, der den Ausgang 1121 abschaltet.

Das schnelle Netzwerk wird dreimal wiederholt. Symmetrisch über den Programmspeicher verteilt ab 02107Q, ab    
04107Q und ab 066107

Während das Gesamtprogramm eine Zykluszeit von 10ms hat, reagiert der Ausgang 1121 nach spätestens 2,5msec auf den Sperreingang 62.


Die Umsetzung dieser Sequenzen auf eine andere SPS erfordert Kenntnisse über das Zielsystem. Am einfachsten geht das bei einer SPS die über ein Realtime Multitask Betriebssystemn verfügt, wie die SCHLEICHER XCS. Wenn die Sequenz viermal programmiert war, definieren Sie eine Task mit 2ms Zykluszeit und übertragen die Anweisungen. Einige Aufmerksamkeit muß den E/A gwidmet werden, um die Verzögerung des E/A Abbildes zu umgehen.

 

zurück zur Themenübersicht

Eingangsabbild:

Sieht der Anfang Ihres Programms so aus?


Die PROMUDUL-K arbeitet ohne E/A Abbild. Wann immer im Program ein S 10 auftaucht, so holt er seine Daten direkt von der Eingangskarte.

Die Adresse 10 kann während der Programmlaufzeit ihren Zustand ändern. Wenn das stört, so empfiehlt es sich den Eingang auf einen Merker zu legen und im Programm immer nur auf diesen Merker zuzugreifen.

Manche Ästheten haben, wie oben gezeigt, prinzipiell alle Eingänge auf Merker gelegt. Wenn Sie so ein Programm auf eine andere Steuerung umsetzen, dann können Sie diese Anweisungen sparen, da heute alle Systeme per Betriebssystem über E-/A-Abbild fahren.

zurück zur Themenübersicht

Lampentest

Zur Zeit der PROMODUL-K waren Bildschirme noch teuere Geräte, in Leitwarten von Kraftwerken anzutreffen. An SPS kontrollierten Maschinen leuchteten noch Einzellämpchen z.B in Muldentastern oder als Luxusversion in Blindschaltbildern der Anlage. Besonders aber auch zur Anzeige von Störungen. Eine dunkle Lampe bedeutete keine Störung oder ein durchgebranntes Lämpchen. Deshalb gibt es einen Lampentesttaster, den man jederzeit betätigen kann um zu sehen ob noch alle Lampen funktionieren.

Zur Zeit der PROMODUL-K war Speicherplatz noch rar: von den Milliardenbytes heutiger Tage himmelweit entfernt. Der Ausgangsmerker des Anzeigelämpchens war dann auch zugleich die Selbsthaltung für Zustände wie Automatik oder einzelne Störungen. Beim Lampentest wären sie überschrieben worden und wären verloren gegangen.

Da nützen einige Programmierer eine Eigenart der Organisation der Ausgänge der PROMODUL-K

 

00210:|  0065
      |---] [----
      |         |
      |         |
      |   1321  |
00211:|---] [---|
                |
                |
00212:          |   0006                                              1321
                ----]/[----------------------------------------------( A )

00214:|  1321
      |---] [----
      |         |
      |         |
00215:|   0010  |                                                     0321
      |---] [--------------------------------------------------------( A )
      |


Das erste Netzwerk ab 00210 ist eine Selbsthaltung, zum Beispiel ein Fehlerspeicher. Das Störereignis von Eingang 0065 setzt die Selbsthaltung, und der Quittungstaster 0006 löscht sie wieder.

Mit der Anweisung A 1321 wird zugleich der  Merker mit der Adresse 1321 gesetzt als auch der Ausgang 321 auf der Ausgangskarte auf Steckplatz 32.

Eigentlich wäre das folgende Netzwerk, das den Zustand des Merkers 1321 auf den Ausgang 321 kopiert nicht nötig. Jedoch liegt parallel zum Schliesser 1321 der Lampentest Taster 0010. Dieser setzt den Ausgang direkt, auch wenn 1321 abgefallen ist. Ausserdem stört er den Zustand des Merkers 1321 nicht.

Mit einem Oszilloskop könnte man sehen, dass während des Lampentests der Ausgang 0321 tatsächlich kurz weg geht, um nach 7,5 μsec wieder zu kommen. So schnell reagiert aber der Glühfaden des Lämpchens nicht, und, falls eine der modernen steckkompatiblen LEDs zum Einsatz kommt ist das menschliche Auge viel zu träge.

Ähnliche Kniffe wurden übrigens auch für das Blinken von Störanzeigen ("gehend", aber noch nicht quittiert) angewendet.

Beim Umsetzen auf eine andere SPS wird man den Lampentest anders organisieren.

zurück zur Themenübersicht

Entprellung (Einschaltverzögerung):

00110:|  0065       3511                                              3510
      |---] [-------] [----------------------------------------------( A )
      |

00113:|   0065                                                        3511
      |---] [--------------------------------------------------------( A )
      |

00115:|   0066      3521      3522                                    3520
      |---] [-------] [-------] [------------------------------------( A )
      |

00121:|   0066      3522                                              3521
      |---] [-------] [----------------------------------------------( A )
      |

00124:|   0066                                                        3522
      |---] [--------------------------------------------------------( A )
      |


Funktion:
Diese Sequenz nützt die zyklische Arbeitsweise der CPU.

vor dem 1. Zyklus:
der Eingang 65 ist nicht betätigt; folglich sind auch die Merker 3510 und 3511 =0 (AUS)
1. Zyklus:
seit dem letzten Zyklus ist der Eingang 65 eingeschaltet worden. Im ersten Netzwerk sperrt immer noch der Schliesser 3511, weil er im letzten Zyklus auf AUS gehalten worden ist. Also ist auch 3510 AUS. Danach wird im zweiten Netzwerk der Merker 3511 EIN geschaltet
2. Zyklus:
der Eingang 65 ist immer noch EIN. Da nun auch, seit dem letzten Zyklus, der Merker 3511 EIN ist, kommt das Signal bis an die Anweisung A 3510 und schaltet den  Merker 3510 EIN. Der Merker 3510 wird also um einen Programmzyklus verzögert eingeschaltet, wenn der Eingang 65 im letzten und in diesem Zyklus EIN war.
Da die Zykluszeit der PROMODUL-K quarzstabilisiert 10msec (für einen 4K Programmspeicher) beträgt, ist die Verzögerung exakt 10 msec.

In den Netzwerken darunter ist eine zweistufige Verzögerung gezeigt. Diese verzögert exakt um 20 msec.

 

Anwendung:
Die PROMODUL-K arbeitet ohne E-/A Abbild. Sie greift direkt auf Eingänge zu, an welcher Stelle des Programms auch immer eine Eingangsanweisung programmiert ist. So könnte der Eingang bei der einen Anweisung EIN sein, bei einer anderen Anweisung später im Programm nichtmehr. Wenn diese Inkonsistenz zu Problemen führt hilft vielleicht diese Sequenz.
Entprellen: Diese Art Verzögerung verschwendet keine Hardware Zeitglieder und stellt trotzdem einen sicheren Kontakt her.
Prioritäten: bei Gleichzeitigkeit von Signalen kann diese Sequenz für Priorität sorgen

zurück zur Themenübersicht

 

Impuls:


00160:|   0043                                                        3043
      |---] [--------------------------------------------------------( A )
      |

00162:|   3043      3521                                              3520
      |---] [-------]/[----------------------------------------------( A )
      |

00165:|   3043                                                        3521
      |---] [--------------------------------------------------------( A )
      |

Funktion:
Wenn Sie eine Impulsbildung von einem Eingangssignal sehen, so wird hoffentlich immer der Eingang auf einen Abbildmerker gelegt worden sein, von dem dann der Impuls gebildet wird. Die Pulsbildung nützt die zyklische Arbeitsweise der CPU.

vor dem 1. Zyklus:
der Eingang 0043 ist nicht betätigt; folglich sind auch die Merker 3043, 3520 und 3521 =0 (AUS). Dadurch ist der zweite Kontakt (Öffner 3521) bereit, ein von links kommendes Signal weiter zu schalten.
1. Zyklus:
seit dem letzten Zyklus ist der Eingang 0043 eingeschaltet worden. Im Netzwerk ab 00110  schaltet jetzt der Schliesser 3043 Signal auf den noch immer geschlossenem Öffner 3521. Das Signal kommt durch bis auf den Ausgang und schaltet A 3520 EIN.
2. Zyklus:
der Eingang 0043 und der Abbildmerker 3043 sind immer noch EIN, folglich wird immer noch Signal auf den
Öffner 3521 geschaltet. Dieser ist seit dem letzten Zyklus EIN, folglich uterbricht er den Signalfluss. Der Ausgang A 3520 fällt nach einem SPS Zyklus wieder ab.
Der Impuls 3520 war also an der steigenden Flanke von Eingang 0043 10 ms lang EIN. Beim Abfall des Eingangs 0043 wird der Pulsmerker AUS bleiben.

zurück zur Themenübersicht

Selbsthaltung:

00170:|  0065
      |---] [----
      |         |
      |         |
      |   1121  |
00171:|---] [---|
                |
                |
00172:          |   0066                                              1121
                ----]/[----------------------------------------------( A )



Funktion:
Wenn der Kontakt 0065 betätigt wird, erhält der Ausgang 1121 Signal und geht EIN.
Wenn der Kontakt 0065 wieder abfällt, hält sich der Ausgang selbst über den eigenen Kontakt 1121 in der parallelen Nebenlinie zum Startkontakt 0065. 
Wenn der Kontakt 0066 betätigt wird, unterbricht (Öffner!) er den Stromfluß, der Ausgang A 1121 fällt ab. Dadurch fällt auch der Selbsthaltekontakt 1121 in der Nebenlinie zum Startkontakt ab.
Fällt nun der Kontakt 0066 wieder ab, würde er zwar ein Signal wieder zum Ausgang durchschalten, jedoch ist nun der Selbsthaltekontakt 1121 nichtmehr EIN, als auch der Startkontakt 0065 noch nicht betätigt.

Anwendung:
Die Selbsthaltung ist eine der Grundsequenzen jedes SPS Programms. Mit einer Selbsthaltung merkt sich ein SPS Programm Ereignisse - z.B. die Betätigung eines START Tasters. Oder auch ein vorübergehendes Störereignis. In der PROMODUL-K ist dies auch das einzige mögliche Verfahren zur Speicherung von Zuständen. Aber auch in Steuerungen mit unterschiedlichen Möglichkeiten Bits zu setzen, greifen faire Programmierer gerne auf diese selbsterklärende Technik zurück.
In der PROMODUL-K gehen Selbsthaltungen mit dem Ausfall der Versorgungsspannung verloren.
Selbsthaltungen mit Merkern im Bereich 3000Q bis 3777Q sind nach dem Hochlauf der Steuerung undefiniert.
Selbsthaltungen im Bereich der Ausgangsmerker 1000Q bis 1777Q sind nach dem Hochlauf zurückgesetzt.

zurück zur Themenübersicht

Flip Flop


00200:|   0044                                                       3044
      |---] [--------------------------------------------------------( A )
      |

00202:|   3044      3523                                             3522
      |---] [-------]/[----------------------------------------------( A )
      |

00205:|   3043                                                       3523
      |---] [--------------------------------------------------------( A )
      |

00207:|   3522      1121
      |---] [-------]/[----
      |                   |
      |                   |
      |   3522      1121  |                                          1121
00210:|---]/[-------] [----------------------------------------------( A )


Eigentlich ist das Flip Flop eine Selbsthaltung mit vorgeschaltetem Impulsgeber.
Wenn kein Puls anliegt schaltet  in dem unteren Zweig der Selbsthaltung ab 00210 der Öffner 3522 Signal auf den Selbsthaltekontakt Schliesser 1121. Die Selbsthaltung "merkt" sich ihren Zustand.
Wenn ein Puls anliegt, so wird der obere Zweig der Selbsthaltung aktiviert. Der Puls Schliesser 3522 schaltet Signal auf den folgenden Kontakt, ein Öffner des Zustandes der Selbsthaltung 1121. Wäre der Impuls ein Dauersignal, so würde der Zustand des FlipFlops bei jedem Programmzyklus wechseln: Ein 50 Hz Blinker.

zurück zur Themenübersicht

Zeitglieder

Die Programmiersprache der PROMODUL-K kennt keine Zeitglieder.
Dafür gibt es Analogzeitkarten. Steckkarten mit acht Analogzeitgliedern. Wenn man das Steuerungsgehäuse nach vorne herausklappt, so entdeckt man auf den Zeitkarten acht Potentiometer, auf denen die Verzögerungszeiten eingestellt werden. Bei manchen Karten gibt es kleine Schiebeschalter mit denen man den Zeitbereich umschalten kann.

Die SPS sieht von der Zeitkarte ach Ausgänge und acht Eingänge auf einem gemeinsamen Steckplatz.
über den Ausgang wird ein Zeitglied gestartet
über den Eingang wird das Zeitglied abgefragt
Alle Zeiten funktionieren wie anzugsverzögerte Zeitrelais.
Die Programmierung ist nicht leicht zu erkennen wenn das Programm unkommentiert ist.

Der Start des Zeitgliedes könnte etwa so aussehen:

Im zweiten Netzwerk ab Anweisung 00737 wird der  Ausgang 1200 angesteuert bringt. Wenn die Kette das Signal bis zum Ausgang durchschaltet, wird A 1200 EIN geschaltet und das Zeitglied wird gestartet.

Die Abfrage der Verzögerungszeit geschieht über den Eingang 200. Er kann über das ganze Programm verstreut sein, und steht dort meist mitten in einem Netzwerk:

Zum Beispiel im oben dargestellten Programm im Netzwerk ab Anweisung 00732, gleich oberhalb des Zeitgliedesr. In der zweiten Nebenlinie, ganz am Ende steht ein Öffner 0200.

Mit etwas detektivischen Gespür kann man die Querverweisliste zu Rate ziehem. Man muß sie allerdings an zwei Stellen lesen:


SOHN 1177:  00177
 
SOHN 1200:  00200
   A 1200:  00742
 
SOHN 1201:  00201
   A 1201:  02714
 
SOHN 1202:  00202
   A 1202:  01721


"SOHN" bedeutet: Schliesser, Öffner, Hauptlinie, Nebenlinie. also die Verknüpfungen der PROMODUL-K .

In der ersten Zeile SOHN 1177: offenbar steckt in Steckplatz 17 eine Ausgangskarte, dessen 8. Ausgang noch frei ist (Reserve). Die einzige Programmierung ist auf Anweisung Nummer 177... in der Servicekette!

In der zweiten Zeile SOHN 1200: diese Adresse wird zwar auch in der Servicekette auf Anwg. Nr. 200 abgefragt, sie wird aber auch, siehe nächste Zeile als A 1200 programmiert und zwar auf Anweisung Nummer 00742.

Zu einem Zeitglied wird aber dieser Ausgang erst, wenn irgendwo der zugeordnete Eingang 200 programmiert wurde.


SOHN 0200: /00735  01452  01532
 
SOHN 0201: /02267  02301  02713
 

Weiter vorne in der Querverweisliste findet man die oben dargestellten Zeilen. SOHN 0200 finden wir auf Anweisung 00735, dem Netzwerk auf dem Bildschirm, oben. ferner noch auf Anweisung 01452 und 01532.

Das folgende Zeitglied 1201 / 201 steht gleich darunter.

So kann man Zeitglieder in einem undokumentierten Programm aufstöbern.

Nun stellt sich die Frage nach dem Zeitwert. Die Winkelstellung des Potentiometers lässt sich nämlich schlecht als Zeitparameter in eine andere Steuerung eingeben. Abhilfe schaffen hier die Besitzer einer Mini-PDPS. Die Steckkarte kann in die PDPS gesteckt werden. Über die Wortanweisungen der PDPS kann man ein kleines Programm schreiben, das alle Verzögerungszeiten einer Karte startet und die Verzögerungszeiten mißt.

 

zurück zur Themenübersicht