Zeitfunktionen (Timer) in einer SPS
In SPS-Programmen werden häufig Zeitfunktionen benötigt, um z.B. eine zeitgesteuerte Aktion auszulösen. Das kann z.B. ein Zylinder sein, der in Endlage mehrere Sekunden verbleiben soll, ehe es wieder zurückbewegt wird. Oder eine Alarmleuchte, die für mehrere Sekunden aufleuchten soll. Für solche Aktionen benötigt man Zeitglieder, mit denen zeitgesteuerte Funktionen programmiert werden können. Gemäß der Programmiernorm 61131-3 wurden vier Zeitfunktionen festgelegt. Diese sind:
- Echtzeituhr
- Funktionsbaustein für die Erzeugung eines Impulses (TP)
- Funktionsbaustein für die Einschaltverzögerung (TON)
- Funktionsbaustein für die Ausschaltverzögerung (TOF)
Übersicht Standardfunktionsbausteine nach DIN EN 61131-3
Erklärung der Operanden:
- IN = Startbedingung, Signalwechsel von 0 auf 1
- PT = Zeitvorgabe
- Q = Status der Zeit
- ET = aktueller Zeitwert
Zeitfunktionen in der Programmiersoftware
Die vier Zeitfunktionen, die in der Programmiernorm 61131-3 festgelegt wurden, waren den Ansprüchen vieler Programmierer nicht gerecht. Beispielsweise sehen die Zeitfunktionen nach 61131-3 keine Möglichkeit der Rücksetzung eines Zeitglieds. Daher haben viele Hersteller von SPS-Programmiersoftware eigene, in der Funktionalität erweiterte, Zeitfunktionen. In Step7 sind folgende erweiterte Zeitfunktionen enthalten:
- Zeitfunktion SA: Ausschaltverzögerung
- Zeitfunktion SE: Einschaltverzögerung
- Zeitfunktion SI: Impuls
- Zeitfunktion SS: Speichernde Einschaltverzögerung
- Zeitfunktion SV: Verlängerter Impuls
Übersicht über die Bezeichnungen und Impulsdiagramme von Zeitfunktionen in Step7
Möchte man in Step7 die drei Standardzeitfunktionen TP, TON und TOF verwenden, muss man dies über den Aufruf folgender Systemfunktionsbausteinen realisieren:
- SFB3: Für TP
- SFB4: Für TON
- SFB5: Für TOF
Wenn diese Systemfunktionsbausteine verwendet werden, müssen für diese auch jeweils ein Instanzdatenbaustein zugeordnet sein, damit die notwendigen Daten als statische Lokalvariablen vorhanden sind. Benutzt man dagegen die firmenspezifischen Zeitfunktionen, muss man anstatt einem Instanzdatenbaustein einen Zeitoperanden, z.B. T1, verwenden. Man kann die Zeitoperanden auch global in der Symboltabelle definieren.
Die firmenspezifischen Zeitfunktionen in Step7 sind im Handling einfacher und haben einen größeren Funktionsumfang. Beispielsweise hat jede Zeitfunktion einen Rücksetzeingang. Als Datentyp für die Zeit wird dabei S5TIME verwendet.
Wie die SPS intern die Zeitbildung umsetzt, kann für den Programmierer egal sein. Man muss dabei nur wissen, dass ein interner Taktgeber Zählimpulse bereitstellt, über den die Zeit rückwärts abläuft. Wenn man also bei einem Zeitglied eine Zeit einstellt, dann wird der Zähler voreingestellt. Durch die Zählimpulse läuft die Zeit ab und der Zähler erhält mit Ablauf der Zeit den Zählerstand 0.
Die zyklische Abarbeitung des Programms wird dabei nicht beeinflusst, da die Zeitfunktion asynchron zur Programmabarbeitung aktualisiert wird. Dadurch haben Zeitglieder am Zyklusanfang einen anderen Wert als am Zyklusende.
Verwendung der Echtzeituhr
In allen CPU's der Baureihen S7-300 und S7-400 ist wurde eine Uhr, entweder als Echtzeituhr oder Software-Uhr, implementiert. Eine integrierte Uhr kann dabei auf zwei verschiedene Art und Weise genutzt werden:
- Master: In diesem Fall fungiert die integrierte Uhr als Hauptuhr.
- Slave: In diesem Fall spielt die Uhr eine untergeordnete Rolle eines Masters und sich mit dem Master synchronisiert.
Mit einer integrierten Uhr können bei Bedarf Uhrzeitalarme oder auch Betriebsstundenzähler realisiert werden. Dabei zeigt die Uhr folgende Werte:
- Uhrzeit, mindestens mit der Anzeige von Sekunden
- Datum
- Wochentag
Ob auch die Millisekunden angezeigt werden, hängt von der verwendeten CPU ab. Hier muss man im Referenzhandbuch des Geräts nachschauen, um Näheres zu erfahren.
Das Datum und die Uhrzeit Uhr kann vom Programmierer selbst gestellt werden. Hierfür ist der Aufruf folgender Systemfunktion im SPS-Programm notwendig:
- SFC0 (SET_CLK)
Alternativ kann man das auch über das Menü des Programmiergeräts realisieren. Hierfür geht man im Programmiergerät online, öffnet das Menü Zielsystem und wählt aus dem Menü Uhrzeit stellen. Man kann die Zeit entweder direkt vom Programmiergerät/PC übernehmen oder selbst ein Datum und Uhrzeit eingeben.
So kann man auch die aktuelle Uhrzeit und das Datum der CPU auslesen. Um das Datum und die Uhrzeit direkt im Programm auszulesen, benutzt man die Systemfunktion SFC1 (READ_CLK).