Taktsignale in der Steuerungstechnik
In vielen SPS-Programmen werden Taktsignale benötigt, die in einem vordefiniertem Intervall immer wieder eine bestimmte Zeit lang ein Signal geben, z.B. 1 Sekunde 1, 1 Sekunde 0, 1 Sekunde 1, 1 Sekunde 0 usw. Solche Taktsignale könnte man in Kombination mit Binäruntersetzern oder Stromstoßschaltern dafür benutzen, um z.B. die Lichter einer Beleuchtungsanlage zu steuern, die immer im selben Takt an und aus gehen sollen. Solche Taktsignale werden in der Steuerungstechnik auch periodische Signale genannt, die ein Puls-Pause-Verhalten haben. Dabei können Taktsignale unterschiedliche Pulsdauer haben. Auch kann das Verhältnis zwischen Puls und Pause unterschiedlich sein, z.B. 2 Sekunden Puls, 1 Sekunde Pause.
Erzeugung von Taktsignalen
Fast jede Programmiersoftware für SPS-Steuerungen enthalten bereits fertige Bausteine, die Taktsignale erzeugen. Hier sollte man die Hilfefunktion der Programmiersoftware aufrufen und schauen, wie ein Taktsignal in der jeweiligen Software erzeugt werden kann. Die Standardbausteine haben dabei häufig ein Puls-Pause-Verhältnis von 1 zu 1. Das bedeutet, eine Sekunde lang ein Puls, eine Sekunde Pause. Benötigt man ein anderes Puls-Pause-Verhältnis, muss man diese häufig selbst mit Zeitgliedern erstellen. Hier hat man den Vorteil, dass man die Puls- und Pausendauer selbst festlegen kann.
Mit Step7 hat man mehrere Möglichkeiten, Taktsignale zu erzeugen und im Programm zu verwenden:
- Zeitfunktionen: Durch die Kombination verschiedener Zeitglieder kann man einen Taktgeber selbst programmieren.
- Taktmerker: Eine Merkerbyteadresse aus dem Register der Merker kann für die Taktsignale parametriert werden, dessen einzelne Bitadressen dann unterschiedliche Taktsignale liefern. Häufig wird hierfür Merkerbyte 100 genommen.
- Weckalarm: In den S7-CPU's werden Weckalarm-Organisationsbausteine zur Verfügung gestellt. Diese Bausteine können so eingestellt werden, dass sie periodisch aufgerufen werden und so die Programmabarbeitung unterbrechen.
Taktgeber mit Zeitfunktionen programmieren
In Step7 können Taktgeber durch die Verknüpfung von mehreren Zeitfunktionen programmiert werden. Der Vorteil bei dieser Variante ist, dass man selbst die Puls- und Pausendauer frei bestimmen kann und daher sehr flexibel ist. Nachfolgend ein Beispiel mit zwei Zeitgliedern vom Typ verlängerter Impuls.
Erläuterung zum Programm:
Ein Zeitglied vom Typ verlängerter Impuls hat das Verhalten, dass sobald ein Impuls am Setzeingang vorhanden ist, das Zeitglied gesetzt wird und die eingestellte Zeit abläuft. Als Startimpuls wurde beim Zeitglied eine positive Flanke des Operanden E0.1 gewählt. Nachdem die Zeit bei T1 abgelaufen ist, wird das Zeitglied zurückgesetzt. Diese negative Flanke wird dafür genutzt, das zweite Zeitglied (T2) zu setzen. Ist die Zeit bei T2 abgelaufen, wird die negative Flanke genutzt, um diesmal T1 wieder zu setzen. Auf diese Art und Weise werden beide Zeitglieder über die negative Flanke abwechselnd gesetzt. Mit dem Operanden E0.3 werden beide Zeitglieder zurückgesetzt. Man könnte nun das Signal eines Zeitglieds wählen und einem Ausgangsoperanden zuweisen. Hierbei hat man die Auswahl, welches Zeitglied man wählt.
Taktsignale über einen Taktmerker erzeugen
Die meisten Programmiersoftware bieten die Möglichkeit, eine Merkerbyte-Adresse als Taktmerker zu parametrieren. Häufig benutzt man hierfür die Merkerbyte-Adresse 100. Ist ein Taktmerker parametriert, können die Bitadressen des Taktmerkers, z.B. 100.7, als Taktsignale genutzt werden. Die Frequenzen der einzelnen Bitadressen sind dabei unterschiedlich und fest eingestellt. Sie sind also nicht veränderbar. Sie haben dabei das Puls-Pause-Verhältnis 1 zu 1. Eine Übersicht mit den zur Verfügung stehenden Frequenzen eines Taktmerkerbytes:
Taktmerkerbit des Taktmerkerbytes |
Mx.7 | Mx.6 | Mx.5 | Mx.4 | Mx.3 | Mx.2 | Mx.1 | Mx.0 |
Frequenz in Hz | 0,5 | 0,625 | 1 | 1,25 | 2 | 2,5 | 5 | 10 |
Periodendauer in Sekunden |
2 | 1,6 | 1 | 0,8 | 0,5 | 0,4 | 0,2 | 0,1 |
Taktmerker in der Hardwarekonfiguration festlegen
Welche Merkerbyte-Adresse man verwendet, legt der Programmierer selbst fest. Die Festlegung hierfür erfolgt in der Hardwarekonfiguration der CPU. Man geht dabei wie folgt vor:
- Starten der Hardwarekonfiguration
- Rechtsklick auf die CPU
- Aus dem Kontextmenü Eigenschaften auswählen
- Im Fenster Eigenschaften das Register Zyklus/Taktmerker auswählen
- Taktmerker aktivieren
- Merkerbyteadresse eingeben.
- Hardwarekonfiguration laden
Danach können die einzelnen Bitadressen des Taktmerkers genutzt werden, die je nach gewählter Bitadresse, ein Taktsignal geben.
Hat man z.B. die Merkerbyteadresse 100 gewählt, kann man M100.7 einem Ausgangsoperanden zuweisen und die Taktsignale beobachten.
Weckalarme als Taktsignal nutzen
Innerhalb der CPU's sind mehrere Organisationsbausteine verfügbar, die die zyklische Programmabarbeitung von OB1 aufgrund der höheren Prioritätsklasse unterbrechen können. Darunter befinden sich auch die Weckalarm-OB's. In Step7 sind das die Organisationsbausteine OB30 bis OB38.
Die Weckalarm-OB's werden bei der Programmabarbeitung in regelmäßigen Intervallen aufgerufen. Sie unterbrechen dabei die Abarbeitung von OB1 und das im Weckalarm befindliche Programm wird ausgeführt. Die Weckalarm-OB's beginnen mit dem Zeittakt beim Wechsel des Betriebszustands der SPS von STOP zu RUN. Nachfolgend ein Beispiel in einer Bildergalerie, wie man mit Weckalarm-OB's in regelmäßigen Intervallen das Signal 1 am Ausgang A1.0 erhält.
Wenn man mehrere Weckalarm-OB's benutzt, dann muss man darauf achten, dass für jeden Weckalarm-OB genug Zeit zur Verfügung steht und es keine Überschneidungen mit anderen Weckalarm-OB's gibt, da die OB's mit der höheren Prioritätsklasse die Abarbeitung unterbrechen können bzw. ein OB mit der niedrigeren Priorität nicht starten kann.
Die Zeittakte für die Weckalarm-OB's sind feste Werte, die im Parameterblock der CPU vorgegeben sind. Welcher OB welchen Zeittakt hat, kann man in der Hardwarekonfiguration in den Objekteigenschaften der CPU, im Register Weckalarme, sehen. Hier hat man auch die Möglichkeit, eigene Zeittakte für die OB's zu vergeben. Ob, wie viele OB's man selbst parametrieren kann und welchen Maximalwert man dabei eingeben kann, ist jedoch abhängig von der benutzten CPU.
Die Zeit der Weckalarm-OB's wird in Millisekunden (ein Tausendstel einer Sekunde) angegeben. Möchte man den Zeittakt umrechnen in Sekunden, muss man die angegebene Zeit durch 1000 teilen.
Es gibt auch die Möglichkeit, dass man einen Weckalarm abwählen kann. Diese dürfen dann im Programm nicht benutzt werden. Werden abgewählte OB's im Programm benutzt, wird ein Programmfehler in der CPU erzeugt und geht in den Zustand STOP.
Bei der Verwendung mehrerer Weckalarm-OB's kann man durch die Programmierung einer Phasenverschiebung erreichen, dass mehrere Weckalarm-OB's nicht gleichzeitig gestartet werden können. Mit der Phasenverschiebung wird erreicht, dass, dass die Bearbeitung des aufgerufenen Weckalarms nach dem Ablaufen des eingestellten Zeittaktes um einen bestimmten Zeitraum verschoben wird. Die Phasenverschiebung errechnet sich nach der Formel:
Phasenverschiebung = m(Phasenverschiebung) multipliziert mit Grundtakt (Bedingung: 0 ≤ m < t(t=Zeittakt des Weckalarm-OB's))
Übersicht über die voreingestellten Zeittakte und Prioritätsklassen der Weckalarm-OBs.
Weckalarm-OB | Zeittakt in Millisekunden | Prioritätsklasse des Weckalarm-OB's |
---|---|---|
OB30 | 5000 | 7 |
OB31 | 2000 | 8 |
OB32 | 1000 | 9 |
OB33 | 500 | 10 |
OB34 | 200 | 11 |
OB35 | 100 | 12 |
OB36 | 50 | 13 |
OB37 | 20 | 14 |
OB38 | 10 | 15 |
Wenn man Weckalarm-OB's verwendet, ändert sich dadurch auch die Zykluszeit des Programms, die abhängig ist von der verwendeten CPU. Sie verlängert sich um ca. 220µs bis zu 380µs.