TON ET Parameter speichern / verwenden für weiteren TON

Breakstuff

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe grade eine kleinen Hänger bei dem ihr mir sicher sofort helfen könnt ;)

Ich habe einen TON1 "Durchlaufzeit" mit dem ich die Zeit messen möchte in der eine Lichtschranke unterbrochen ist.
Für einen TON2 möchte ich nun diese gemessene Zeit ET von TON1 als PT von TON2 nutzen.

Alles soll in einem FB laufen und wird zyklisch aufgerufen.

Mein Problem ist jetzt das ET natürlich auf 0 springt sobald die Lichtschranke wieder frei ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du könntest ET VOR dem Aufruf ton1 in eine variable sichern solange die Lichtschranke unterbrochen ist. Die Sicherung hängst du an ton2.

Damit fragst du et ab bevor ton die Lichtschranke wieder sieht.

Mit freundlichen Grüßen René
 
Man könnte ja auch einfach in einer DWORD Variable die Zykluszeit (in ms) aufaddieren solange die Lichtschranke unterbrochen ist, dann spart man sich den ersten Timer. Dem PT des 2ten Timers weist man dann DWORD_TO_TIME(Variable) zu.
 
Man könnte ja auch einfach in einer DWORD Variable die Zykluszeit (in ms) aufaddieren solange die Lichtschranke unterbrochen ist, dann spart man sich den ersten Timer. Dem PT des 2ten Timers weist man dann DWORD_TO_TIME(Variable) zu.
Würde ich bei TwinCat mit seinen festen Zykluszeitrastern auch so machen. Aber es gibt ja auch CoDeSys-Steuerungen mit freilaufendem Zyklus, bei denen man sich zur Zeitmessung mit einem Timer behelfen muss.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei TwinCAT gibt es in der TcSystem.lib im SystemTaskInfoArr ja eine Variable die die real benötigte Zykluszeit ausgibt. Evtl. gibt es ja bei Codesys etwas ähnliches? Der Timer muss ja auch wissen wie lang der vorherige Zyklus war.....
 
Mag schon sein, dass andere CoDeSys-Steuerungen eine vergleichbare Systemvariable haben. Kommt dann aber darauf an, ob sie die gesamte Zykluszeit angibt oder nur die für das Anwenderprogramm benötigte Zeit.
 
benutze NOW() dan bisst du nicht abhangig von zyklen.
fur genaue nur dieses programteil laufen lassen und
also startzeit:= NOW() when die zelle aus geht(mit R_TRIG)
endzeit := NOW() when die zelle wieder angeht (mit F_TRIG)
dan endzeit-startzeit
 
Zurück
Oben