Frage zu S5-Timern

Flux

Level-1
Beiträge
314
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

nach ausführlicher Suche in der S7-Hilfe und hier im Forum suche ich weiterhin nach ner Antwort zu folgendem Sachverhalt:

Wenn ich einen Timer beispielsweise als Einschaltverzögerung nutze, also z. B.:

Code:
      U     E      0.0
      L     S5T#6s
      SE    T     1

      U     T      1
      =     A      0.0

und an einer völlig anderen Stelle im Baustein den Timer Abfrage (unabhängig von der Sinnhaftigkeit), also z. B.:

Code:
      U     T      1
      =     A      1.0

dann würde A 1.0 erst dann "1", wenn T1 abgelaufen ist (wie SE eben). Aber für mein Empfinden hätte ich eine "1" erwartet, solange T1 noch nicht abgelaufen ist (also ungleich 0).

Wie ist diese Verbindung zwischen Timer und Operation (SI, SE, SA, SS, ...) zu erklären?

Lt. S7-Hilfe ist ein Timer nichts weiter als ein Doppelwort (1 Byte Zeitbasis, 3 Byte BCD-Zeitwert), wo wird die Operation mit abgespeichert??

MfG
 
Ich glaube Du denkst zu kompliziert. Die Abfrage "U T1" fragt den Status des Timers T1 ab. Bei SE ist T1 halt erst nach Ablauf der Zeit TRUE, bei SA halt sofort und ausschaltverzögert.
 
Ja, aber wie erwähnt, wenn ich den Timer an einer Stelle weiter unten im Programmcode abfrage verhält sich das Abfrageergebnis weiterhin wie bei SE - mir fehlt da die Verbindung :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lt. S7-Hilfe ist ein Timer nichts weiter als ein Doppelwort (1 Byte Zeitbasis, 3 Byte BCD-Zeitwert)
Wo steht das?

Ich erinnere mich so, daß der Timer-Status 1 Word = 16 Bit ist. 12 Bit sind die 3 BCD-Ziffern der ablaufenden Zeit, 2 Bit sind die Zeitbasis, 2 Bit sind undokumentiert, eines davon zeigt an, wenn der Timer läuft (und das andere ist vielleicht der Eingangs-Flankenmerker?).

Mit den Operationen SA, SE, SI, ... werden die Timer entsprechend diesen Operationen gestartet und gestoppt und das Ausgangs-Statusbit aktualisiert.

Harald
 
Wenn Du den Timer abfragst wird nur der Zustand des Ausgangs-Statusbits abgefragt. Bei SE ist das erst dann 1, wenn der Timer abgelaufen ist und der Eingang noch 1 ist. Bei SA ist das Statusbit 1, wenn der Timer noch nicht abgelaufen ist oder das Eingangsbit 1 ist.

Harald
 
Die S5-Timer sind im Systemspeicher abgelegt (die Anzahl ist deshalb begrenzt). Sie werden vom Betriebssystem der CPU aktualisiert. Mit den Operationen werden sie nur gestartet und gestoppt. Ich weiß nicht, ob die aktuelle Betriebsart (Operation) mit abgespeichert wird, kann mir aber vorstellen, daß das vielleicht gar nicht nötig ist. Das Betriebsystem muß nur wissen, ob der Timer läuft und ob der Ausgangsstatus als 1 oder 0 angezeigt werden muß.

Harald
 
Nachtrag zu #6:
Das Ausgangs-Statusbit wird auch ohne die Operationen SA, SE, SI, ... aktualisiert. Das kann zu schwer findbaren Programmfehlern führen, wenn ein Timer mehrmals im Programm abgefragt wird. Wird der Timer-Status mehrmals benötigt, dann auf einen Merker legen und dann nur den Merker abfragen.

Harald
 
Zurück
Oben