Frage zu S5-Timern

Flux

Well-known member
Beiträge
314
Punkte Reaktionen
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
 

Tigerente1974

Well-known member
Beiträge
1.815
Punkte Reaktionen
289
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.
 
OP
Flux

Flux

Well-known member
Beiträge
314
Punkte Reaktionen
11
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:
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.595
Punkte Reaktionen
5.172
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
 
OP
Flux

Flux

Well-known member
Beiträge
314
Punkte Reaktionen
11
Also hab ich den Timer-Status fälschlicherweise für den Timer selbst gehalten.. ? :TOOL:
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.595
Punkte Reaktionen
5.172
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
 
OP
Flux

Flux

Well-known member
Beiträge
314
Punkte Reaktionen
11
Zuviel Werbung?
->Hier kostenlos registrieren
Und der eigentliche Timer verbirgt sich irgendwo im Systemspeicher? Dort ist dann auch die aktuell auf ihn angewendete Operation hinterlegt?
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.595
Punkte Reaktionen
5.172
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
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.595
Punkte Reaktionen
5.172
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
 
Oben