TOF für S7-1500 ist kein FB, sondern eine Siemens-super-special-construct-"Anweisung", wo Siemens es nicht schafft, mal vollständig und korrekt das wirkliche Verhalten zu dokumentieren, was zu keinem bisher mit S7 verwendeten Timer kompatibel ist.
Verwirrendes aus der Hilfe zu TOF (TIA V13 SP1): AWL (S7-1500) /
TOF: Ausschaltverzögerung erzeugen (S7-1500)
TIA Informationssystem - TOF: Ausschaltverzögerung erzeugen schrieb:
Der Parameter Q wird gesetzt, wenn das Verknüpfungsergebnis (VKE) am Parameter IN von "0" auf "1" wechselt (positive Signalflanke).
1) in AWL ist am Eingang IN kein Verknüpfungsergebnis verschaltet sondern eine boolsche Variable oder Konstante
2) Ist das mit der Flanke nur falsch formuliert oder ist es wirklich so realisiert, daß an IN eine positive Flanke nötig ist?
Muß nach einem Reset des Timers (z.B. RESET_TIMER) der IN erst auf 0 und wieder auf 1 gehen, damit Q wieder 1 wird?
Ich meine, Q muß immer 1 sein wenn IN 1 ist. Unabhängig von einer Flanke.
Oder ist damit gemeint, daß die Anweisung überhaupt nur "ausgeführt wird" wenn an IN eine positive Flanke festgestellt wird und deshalb bei nicht-Flanke der Zustand von Q nicht aktualisiert wird??
TIA Informationssystem - TOF: Ausschaltverzögerung erzeugen schrieb:
Das folgende Beispiel zeigt die Funktionsweise der Anweisung:
Code:
CALL TOF, "TOF_DB" // Die Anweisung wird aufgerufen. Der Datenbaustein "TOF_DB" wird der Anweisung zugeordnet.
TIME
IN := "Tag_Start" // Bei einer positiven Signalflanke am Operanden [COLOR="#FF0000"]wird die Anweisung ausgeführt.[/COLOR]
PT := ...
Was heißt "wird die Anweisung ausgeführt"? Ist das nur falsch formuliert (oder falsch übersetzt) oder ist es die unauffällige Erklärung für das hier festgestellte nicht-Funktionieren des TOF, wenn IN mit sich selber verschaltet ist und deshalb am/beim CALL keine positive Signalflanke festgestellt werden kann?
Und was ist bei den anderen Fällen (IN ist 0 oder 1, außer 0-1-Flanke) - bewirkt die Anweisung dann gar nichts weil dann "wird die Anweisung nicht ausgeführt"??
Funktioniert folgender Code?
Code:
U "test"
= #tmp_Bool
= #tof_MP.IN
CALL #tof_MP
IN :=#tmp_Bool
PT :=#timeval
Q :=#O_ComActiv
ET :=
Harald