TIA Zeitausgang ET vom TON Speichern

Zuviel Werbung?
-> Hier kostenlos registrieren
Es wird nicht der letzte aktuelle Zeitwert vor dem TON.IN=0 in "Test".Speicher gespeichert, sondern der Wert von einem Zyklus vorher. Der Wert ist also um eine Zykluszeit zu niedrig. siehe auch Beitrag #14
Das komplette Netzwerk mit dem MOVE muss unterhalb des Timeraufrufes sein. Nicht überhalb.
Fehlt nicht immer ein Zyklus, egal wo der Move ausgeführt wird? Zumindest wenn nicht wie @Gleichstromer bereits erwähnt hat, der "IEC_Timer_0_DB".ET abgefragt wird?
Wenn am Move.EN und am TON.IN das gleiche Signal hängt, dann fehlt doch auch der letzte Zyklus. Wenn TON.IN 0 ist und dann der Move nicht ausgeführt wird, steht dort doch auch der Wert vom letzten Zyklus drin.
Müsste nicht der Move vor dem Timer sein und dann mit der negativen Flanke vom Signal der "IEC_Timer_0_DB".ET gespeichert werden? Und im nächsten Netzwerk bekommt der Timer.IN sein Low-Signal.
 
Das komplette Netzwerk mit dem MOVE muss unterhalb des Timeraufrufes sein. Nicht überhalb.
Da geht auch eine Zykluszeit verloren. Auch da wird der ET-Wert aus dem Zyklus vorher gespeichert und nicht aus dem aktuellen Zyklus.

Egal wo das MOVE-Netzwerk ist, das eigentliche Problem ist das doppelte Kopieren, dass der ET-Wert beim TON-Aufruf in %MD104 gespeichert wird, und erst in dem MOVE-Netzwerk im nächsten Zyklus von %MD104 in "Test".Speicher umgespeichert wird. Wenn da der EN=FALSE geworden ist, dann wird das Umspeichern nicht ausgeführt und der letzte Wert geht verloren.

Darauf hat @Gleichstromer schon in #12 hingewiesen:
Genau genommen müsste man bei dem MOVE nicht das MD104 nach "Test".Speicher übertragen, sondern die ElapsedTime "IEC_Timer_0_DB".ET nach MD104 und den Timer-ET-Ausgang unbeschaltet, da es sonst noch die Waschzeit aus dem Zyklus davor ist. Ist aber hier wohl eher Erbsenzählerei.

Also nochmal drüber nachgedacht: Die beste (und logischste) Variante wäre: das MOVE vor dem TON-Aufruf, aber anstatt dem MD104 den "IEC_Timer_0_DB".ET nach "Test".Speicher kopieren.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also nochmal drüber nachgedacht: Die beste (und logischste) Variante wäre: das MOVE vor dem TON-Aufruf, aber anstatt dem MD104 den "IEC_Timer_0_DB".ET nach "Test".Speicher kopieren.
Kommt IMHO auf's Gleiche raus, wie mit Kopieren ins MD und nach dem Timer.
Genau genommen fehlt dann sogar noch die Ausführungszeit des Timers im NW nach dem MOVE.

Bei IN=1 wird mit dem MOVE vorher die aktuelle Zeit ET aktualisiert, ausgelesen und gespeichert,
dann wird der Timer ausgeführt und die ET-Zeit wieder aktualisiert und (sofern vorhanden) dem MD zugewiesen.
So ist ein MOVE nach dem Timer ein paar ns aktueller.
 
Da geht auch eine Zykluszeit verloren. Auch da wird der ET-Wert aus dem Zyklus vorher gespeichert und nicht aus dem aktuellen Zyklus.
Das stimmt IMHO so nicht:
TIA-Hilfe F1 schrieb:
TON Einschaltverzögerung erzeugen (S7-1500)
  • Die Aktualwerte der Ausgänge Q und ET werden in folgenden Fällen aktualisiert:
    • Bei einem Aufruf der Anweisung, wenn die Ausgänge ET oder Q verschaltet sind.
      Oder
    • Bei einem Zugriff auf Q oder ET.
Es wäre also die Zeit unmittelbar vor dem Aufruf des Timers.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es wäre also die Zeit unmittelbar vor dem Aufruf des Timers.
Ja, allerdings in dem vorhergehenden Zyklus, als TON.EN noch 1 war. In dem Zyklus, wo EN=0 wurde, wird der MOVE nach dem TON ja nicht mehr ausgeführt.
PS: der MOVE vor dem TON aber auch nicht... :unsure: Man erhält (egal ob vor oder nach) immer den Wert vom Zyklus vorher, als der EN noch 1 war.
PPS: wenn es genau sein soll, dann geht es wohl nicht soo einfach. Man könnte aber vor dem TON speichern, wenn TON.ET <> 0 ist.
 
Zuletzt bearbeitet:
Also, mit Hilfe der Lokalzeit selber einen Zähler bauen. Allerdings glaube ich, dass bei der Trägheit der Waschmediumversorgung in diesem Fall auch eine Zykluszeit von 100ms unerheblich ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder mit der negativen Flanke von TON.IN vor dem TON, dann fehlt dir nur der Wechsel zum nächsten Netzwerk. Dazu natürlich TON.ET verwenden, nicht einen Zwischentransfer
Ja, so geht es auch.

Wann genau startet eigentlich der S7-1200-TON? (da könnte sich auch noch ein +/- 1 Zykluszeit verstecken) 😜
 
Zurück
Oben