In der Steuerungstechnik ist die Zeitbildung eine Grundfunktion. Mit Hilfe der Zeitbildung können zeitliche Abläufe programmiert werden. Zu den zeitlichen Abläufen gehören Wartezeiten, Überwachungszeiten, Zeitmessungen und Taktimpulse.
Es gibt laut der DIN EN 61131-3 vier Standardzeitfunktionen. Diese sind eine Echtzeituhr und weitere drei Standardfunktionsbausteine für die Zeitbildung.

Erklärung der Operanden:
Die am Markt erhältlichen SPS-Programmiersysteme haben neben den vier oben genannten Zeitfunktionen weitere firmenspezifische Zeitfunktionen. Diese firmenspezifischen Zeitfunktionen zeichnen sich durch erweiterte Funktionalitäten wie Nachtriggerung oder Rücksetzeingänge aus.
In alle CPU's der Baureihen S7-300/s7-400 ist eine Uhr (als Echtzeituhr oder Software-Uhr) integriert. Im Automatisierungssystem kann diese Uhr entweder als Uhrzeitmaster oder als Slave mit externer Synchronisierung verwendet werden. Mit Hilfe dieser integrierten Uhr werden Uhrzeitalarme und Betriebsstundenzähler realisiert. Die Uhr der CPU zeigt die Uhrzeit mit einer Mindestauflösung von einer Sekunde und das Datum mit Wochentag an. Einige CPU's ermöglichen auch die Anzeige von Millisekunden. Ob dies möglich ist erfährt man durch nachschlagen der CPU-Daten im Handbuch Automatisierungssystem S7-300 im Kapitel Aufbauen bei S7-300 und bei S7-400 durch nachschlagen im Referenzhandbuch Automatisierungssysteme S7-400, M7-400 unter Baugruppendaten.
Das Stellen von Uhr und Datum in Step7 wird durch aufrufen der Systemfunktion SFC 0 SET_CLK aus dem Anwenderprogramm heraus oder über einen Menübefehl vom Programmiergerät PG aus realisiert. Damit wird die Uhr und das Datum gestartet. Die aktuelle Uhrzeit und das aktuelle Datum wird durch aufrufen der Systemfunktion SFC 1 READ_CLK oder über einen Menübefehl vom Programmiergerät PG aus realisiert.
Die Standardfunktionsbausteine TP, TON und TOF sind in SIMATIC Step7 als Systemfunktionsbausteine SFB im Betriebssystem der CPU realisiert. Systemfunktionsbaustein SFB3 realisiert den Standard- funktionsbaustein TP, Systemfunktionsbaustein SFB4 realisiert den Standardfunktionsbaustein TON und Systemfunktionsbaustein SFB5 realisiert den Standardfunktionsbaustein TOF.
Diesen drei Systemfunktionsbausteinen ist in Step7 jeweils ein Instanzdatenbaustein zuzuordnen der die erforderlichen Daten als statische Lokalvariablen enthält. Der Operationsvorrat in Step7 beinhaltet neben den drei Standardzeitfunktionen fünf weitere Zeitfunktionen die statt der Instanzdatenbausteine die Verwendung eines Zeitoperanden Tx erforderlich machen.
Die SPS interne Umsetzung der Zeitbildung ist für den Anwender nicht von Bedeutung da es ausreichend ist zu wissen da ein integrierter Taktgeber Zählimpulse für einen Rückwärtszähler bereitstellt. Wenn man eine Zeit startet bedeutet dies der Zähler auf eine bestimmte Zahl voreingestellt wird. Das Ende des Ablaufes dieser Zeit tritt dann ein wenn der Zählerstand durch die internen Zählimpulse auf Null steht. Das Ablaufen dieser Zeit hat keinen Einfluß auf die zyklische Abarbeitung des Anwenderprogrammes. Die Zeitfunktion wird asynchron zur Programmabarbeitung aktualisiert. Diese Asynchronität hat zur Folge, das der Signalzustand dieses Zeitoperanden am Zyklusanfang einen anderen Wert hat als am Zyklusende.
Die von Step7 bereitgestellten erweiterten Zeitfunktionen Impuls SI, verlängerter Impuls SV, Einschaltverzögerung SE, speichernde Einschaltverzögerung SS und Ausschaltverzögerung SA zeichnen sich durch ihr einfacheres Handling gegenüber den Standardzeitfunktionsbausteinen nach DIN EN 6113-3 aus. Programmiert werden die Zeitfunktionen in Step7 unter Angabe des Datentyps S5TIME. Die Zeitfunktionen in Step7 können global über eine Symboltabelle definiert werden.

Die fünf Zeitfunktionen, die Step7 anbietet, können über die Programmiersprachen Funktionsplan FUP, Anweisungsliste AWL, Kontaktplan KOP oder in der Hochsprache S7-SCL aufgerufen werden. Alle Zeitfunktionen verwenden die gleichen Eingangs- und Ausgangsvariablen. Die Zeitfunktionen / Zeitoperanden sind in Step7 in einem Speicherbereich im Systemspeicher der S7-CPU's abgelegt. Von welcher Art (SA, SE, SI, SS oder SV) die Zeit sein soll legt man durch das Anwenderprogramm fest. Die mögliche Anzahl der zur Verfügung stehenden Zeiten ist CPU-abhängig.
Zeitfunktionen bzw. TIMER gehören zu den Parametertypen in SIMATIC® Step7®. Der Parametertyp TIMER hat eine Größe von 2Bytes bzw. WORD (16 Bit).
Werden in einem Anwenderprogramm mehr Zeiten programmiert als die CPU zur Verfügung hat, kommt die Fehlermeldung synchroner Fehler und es wird OB121 gestartet.

Beschreibung: |
|
|---|---|
|
|
Tx: | Zeitoperand T0 bis T15 (Bezeichnung ist CPU abhängig) |
T-Funktion: | Zeitfunktion (SA; SE; SI; SS; SV) |
S: | Starteingang (setzen der Zeit durch Eingangssignal, binärer Operand, 1 Bit) |
TW: | Vorgabewert für die Zeitdauer (Wortoperand, z.B. 16 Bit) |
R: | Rücksetzeingang (rücksetzen der Zeit durch ein Signal, binärer Operand, 1 Bit) |
DUAL: | Restwert der Zeit dual codiert (Wortoperand, z.B. 16 Bit) |
DEZ: | Restwert der Zeit BCD-codiert (S5TIME) (Wortoperand, z.B. 16 Bit) |
Q: | Abfrage des Status des Zeitoperanden (binärer Operand, 1 Bit) |
Gestartet wird die Zeit durch einen Zustandswechsel am Starteingang. Nun beginnt die am Eingang TW vorgegebene Zeit abzulaufen. Dieser Ablauf gleicht sich bei allen oben in der Übersichtstabelle aufgelisteten Zeitfunktionen. Die Zeitfunktionen Einschaltverzögerung SE, speichernde Einschaltverzögerung SS, Impuls SI und verlängerter Impuls SV starten mit der positiven Flanke, also dem Zustandswechsel von 0 auf 1.
Eine Ausnahme bildet die Zeitfunktion Ausschaltverzögerung SA. Diese startet mit der negativen Flanke, also mit dem Zustandswechsel des Startsignals am Starteingang von 1 auf 0.
Der Vorgabewert für die Zeitdauer muss vor dem Starten der Zeit in den Akkumulator 1 geladen werden. Beim Starten der Zeitfunktion wird dieser Wert aus dem Akkumulator 1 von der Zeitfunktion ausgewertet. Zu empfehlen wäre an dieser Stelle den Vorgabewert für die Zeitfunktion unmittelbar vor die Startoperation der Zeitfunktion in das Anwenderprogramm zu schreiben um die Zuordnung von einem Vorgabewert und einer Zeitfunktion zu erleichtern.
Der Vorgabewert für die Zeitdauer setzt sich aus einem Wert für den Zeitfaktor und einem Wert für die Zeitbasis zusammen. In Akku 1 wird der Vorgabewert über eine Konstante oder eine Variable geladen. Der Wert für die Zeitdauer errechnet sich aus dem Produkt von Zeitbasis und Zeitfaktor. Die Zeitbasis gibt hierbei ein Zeitraster an. Je kleiner man dieses Zeitraster ist umso größer wird die Genauigkeit für die abzuarbeitende Zeitdauer.
Die Zeitdauer kann in Step7® über zwei Möglichkeiten eingegeben werden, einmal als Variable mit Hilfe des BCD-Codes und als Konstante.
| Zeitdauer | Syntaxeingabe | Eingabe von Zeitraster und Zeitfaktor | ||||
|---|---|---|---|---|---|---|
| Zeitraster | 102 | 101 | 100 | |||
| Bit -> | 15-12 | 11-8 | 7-4 | 3-0 | ||
| 20ms | S5T#20ms | 0 | 0 | 0 | 2 | |
| 350ms | S5T#350MS | 0 | 0 | 3 | 5 | |
| 13,3s | S5T#13S300MS | 1 | 1 | 3 | 3 | |
| 3min 25,3s = 205,3s | S5T#3M25S | 2 | 2 | 0 | 5 | |
| 2h 25min 15s = 8715s | S5T#2H25M15S | 3 | 8 | 7 | 1 | |
Um eine Zeitdauer in S5TIME eingeben zu können muß die Zeit in Sekunden umgerechnet werden. Bei den Zeiten 3min 25,3s und 2h 25min 15s ist unter Eingabe von Zeitraster und Zeitfaktor zu erkennen das die Zeitdauer gerundet wurde da die mögliche Auflösung des Zeitrasters überschritten wurde. Der Zeitfaktor bestimmt mit welcher Genauigkeit die Zeit abläuft.
Zeiten können in Step7® auch in Millisekunden-Schritten eingegeben werden, auch hierbei wird der eingegebene Zeitwert an ein Zeitraster
angepasst. Die Wahl des Zeitrasters ist abhängig von der Größe der eingegebenen Zeit in Millisekunden, z.B. 142 ms ergeben 140 ms, die 2ms werden
abgerundet
Mögliche Zeitbereiche innerhalb der einzelnen Zeitraster
| Zeitbasis | Auflösung |
|---|---|
| 0,01s | 10ms bis 9990ms (9s990ms) |
| 0,1s | 100ms bis 99900ms (1min 39s 900ms) |
| 1s | 1s bis 999ms (16min 39s) |
| 10s | 10s bis 9990s (2h 46min 30s) |
Die Darstellung in der Tabelle gibt Auskunft über den binären Aufbau des Datentyps S5Time in Step7.
| Zeitfaktor | Zeitbasis | Akkumulator 1, Bitbelegung der Zeitdauer | |||||
|---|---|---|---|---|---|---|---|
| Zahl von 1 bis 999 |
Zeitraster: 0 = 0,01s 1 = 0,1s 2 = 1s 3 = 10s |
Akkubits | Bit 15-12 | Bit 11 - 8 | Bit 7 - 4 | Bit 3 - 0 | |
| Zeitraster: 0 = 0,01s 1 = 0,1s 2 = 1s 3 = 10s |
102 | 101 | 100 | ||||
| Zeitfaktor in BCD-Code | |||||||
Das Zeitraster "0" entspricht der Binäreingabe "00", das Zeitraster "1" entspricht der Binäreingabe "01", das Zeitraster "2" entspricht der Binäreingabe "10", das Zeitraster "3" entspricht der Binäreingabe "11", abzulesen auf Bit 12 und Bit 13 des Akkumulators. Bit 14 und Bit 15 sind irrelevant, sie werden nach dem Starten der Zeit ignoriert.
Wie aus der Tabelle ersichtlich ist die Datenbreite des Datentyps S5TIME in Step7 16 Bit (1 Wort). Durch die Angabe von Zeitraster und Zeitfaktor kann die Zeitdauer in Step7 in einem Wortoperanden (16 Bit) hinterlegt werden und so in den Akku geladen werden. Die Tabelle zeigt die Faktoren die beachtet werden müssen wenn eine Zeit direkt BCD-codiert eingegeben wird. Die Zeitdauer für die BCD Eingabe errechnet sich aus dem Produkt von Zeitfaktor und Zeitbasis. Die Zeitbasis entspricht dem Zeitraster (Zeitbasis = Zeitraster). Die eingegeben Zeit wird wenn sie läuft um den im Zeitraster als Faktor verwendeten Wert beim Zählen dekrementiert (heruntergezählt) bis der Zeitwert "0" ist.
Die größtmöglichste Zeit die mit S5TIME programmiert werden kann sind 2 Stunden, 46 Minuten und 30 Sekunden. Dies entspricht dem Maximalwert von 9990 Sekunden der Zeitbasis 3. Aufgrund der Datenbreite von 16 Bit können im Datentyp S5TIME nur Zeitwerte von 0 bis 999 angegeben werden. Der Maximalwert für den Zeitwert 999 wird im BCD-Format in der Form W#16#3999 dargestellt. Der maximale Zeitwert 999 resultiert aus der Verwendung des BCD-Codes in Step7 der hier nur BCD-codierte Zahlen von 0 bis 9 zulässt, d.h. unter der Verwendung des 8421-BCD-Codes.
Alle Step7 Zeitfunktionen haben einen Rücksetzeingang "R". Steht an diesem Rücksetzeingang "R" der Signalzustand "1" an so wird das Zeitglied Tx (der Zeitoperand Tx) zurückgesetzt. Die Zeit wird gestoppt und kann erst wieder gestartet werden wenn der Siganlzustand an "R" wieder "0" ist und die Aktivierung des Zeitgliedes über den Setzeingang "S" erfolgt. Ist das Zeitglied nicht aktiviert hat ein anliegender Signalzustand von "1" am Rücksetzeingang "R" keine Auswirkungen auf die Augänge DUAL, DEZ und Q. Die Abfrage des Zeitoperanden und die Abfrage des Restzeitwertes ergibt dann ebenfalls den Wert "0".
Der Restzeitwert einer ablaufenden Zeit kann über Ladebefehle im Funktionsplan FUP mit dem Übergabeparameter MOVE und in SCL über eine Wertzuweisung ( : = ) abgefragt werden. Mit Hilfe der Anweisungen L Tx (dualcodiertes laden des Restzeitwertes) und LC Tx (BCD-codiertes Laden des Restzeitwertes) kann der Restzeitwert in den Akku geladen werden. Soll der Restzeitwert dualcodiert geladen werden geht das Zeitraster verloren. Bit 12 und Bit 13 des Akkumulators haben den Wert 0. Bit 0 bis Bit 11 entsprechen einer positiven Zahl im Datenformat INT. Diese Zahl kann bei Vergleichsfunktionen im Anwenderprogramm genutzt werden. Läd man den Restzeitwert BCD-codiert gehen Zeitraster und Zeitfaktor nicht verloren und werden in den Akkumulator geschrieben. Von da aus kann dieser Restzeitwert unter anderem dazu genutzt werden um eine Timerfunktion mit der Restlaufzeit erneut zu starten.
Ebenso wie Eingänge, Ausgänge oder Merker können Zeitoperanden Tx über binäre Abfragen wie UND, ODER, NAND, NOR oder XOR abgefragt werden. Bei der Abfrage von Zeitoperanden während des Ablaufes eines Anwenderprogrammes ist es empfehlenswert Hilfsoperanden zu benennen die anstelle der Zeitoperanden abgefragt werden. So wird einer Fehlfunktion des Anwenderprogrammes vorgebeugt, da der oder die abzufragenden Zeitoperanden während eines Programmablaufes verschiedene Werte haben können. Hierzu muß dem Hilfsoperanden an der Abfragestelle der Signalwert des Zeitoperanden zugewiesen werden. Als Hilfsoperanden können Merker verwendet werden.
| Übergabeparameter | Parameter | Operand | Datentyp |
|---|---|---|---|
![]() |
Tx | T | TIMER |
| S | E, A, M, DBX, L, T, Z | BOOL | |
| DUAL | EW, AW, MW, DBW, LW | WORD | |
| TW | Konstante, EW, AW, MW, DBW, LW | S5TIME | |
| DEZ | EW, AW, MW, DBW, LW | WORD | |
| R | E, A, M, DBX, L, T, Z | BOOL | |
| Q | E, A, M, DBX, L | BOOL |