in einem Schritt in Ablaufsprache lasse ich einen TON-Timer als Verzögerung laufen. Wenn die Schrittkette ein zweites mal durchlaufen wird, verzögert der Timer nicht, sonder schaltet sofort den Ausgang auf True, da ET bereits die komplette Zeit anzeigt.
Wie kann ich den Timer wieder zurücksetzen, damit er mit jedem Durchlauf der Schrittkette funktioniert? IN auf False setzen alleine scheint nicht zu funktionieren.
Vielen Dank im voraus.
Klaus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Deine Zeit wird warscheinlich nur im Schritt mit TRUE am Eingang aufgerufen. Der TON Baustein benötigt zum starten der Zeit aber einen Flankenwechsel. Das einfachste bei Schrittketten ist im Schritt davor die Zeit mit der Eingangsbedingung FALSE aufzurufen.
mfG Jochen
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
danke für die Antworten. Das Problem konnte ich bisher nicht lösen.
Die Startbedingung für den Timer wird in dem Schritt zurvor auf False gesetzt. Nur in dem Schritt, wo der Timer laufen soll, wird sie auf True gesetzt.
In anderen Beiträgen habe ich gelesen, daß teiweise mit Triggern gearbeitet wird. Muß ich das hier auch machen?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
das problem ist aber das du in einer Transition keine Zuweisung machen kannst. Wenn du nur eine bestimmte Zeit warten willst ist das OK, aber wenn du z. B. ein Schütz schalten willst ist das über die Transition nicht möglich.
gruß bonatus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Danke für die Antworten bisher, aber dieses Thema muß ich nochmal aufgreifen, ich habe das Problem noch nicht gelöst. Hier ist ein Beispielprogramm mit meinem Problem. Der Timer funktioniert nur ein mal.
Hallo Forum,
in einem Schritt in Ablaufsprache lasse ich einen TON-Timer als Verzögerung laufen. Wenn die Schrittkette ein zweites mal durchlaufen wird, verzögert der Timer nicht, sonder schaltet sofort den Ausgang auf True, da ET bereits die komplette Zeit anzeigt.
Wie kann ich den Timer wieder zurücksetzen, damit er mit jedem Durchlauf der Schrittkette funktioniert? IN auf False setzen alleine scheint nicht zu funktionieren.
Vielen Dank im voraus.
Klaus
Hallo,
normalerweise sollte das reichen.
Hast du die Deklaration vom TON vielleicht irgendwo ein zweites mal verwendet? So äußert sich das oft.
MfG
Marcel
Hallo Klaus
Deine Zeit wird warscheinlich nur im Schritt mit TRUE am Eingang aufgerufen. Der TON Baustein benötigt zum starten der Zeit aber einen Flankenwechsel. Das einfachste bei Schrittketten ist im Schritt davor die Zeit mit der Eingangsbedingung FALSE aufzurufen.
mfG Jochen
Hallo,
danke für die Antworten. Das Problem konnte ich bisher nicht lösen.
Die Startbedingung für den Timer wird in dem Schritt zurvor auf False gesetzt. Nur in dem Schritt, wo der Timer laufen soll, wird sie auf True gesetzt.
In anderen Beiträgen habe ich gelesen, daß teiweise mit Triggern gearbeitet wird. Muß ich das hier auch machen?
Hallo,
in AS kannst du die AS-Flags nutzen um solche Aufgaben zu meistern
Wenn du in deiner Aktion eines Schrittes folgendes machst:
Aktionsname.AC.Q - ist nur aktiv solabge der Schritt aufgerufen wird.
Diese Flag kannst du als Eingang deines Timers benutzen.
Bei mir klappts, es kann sein das du noch eine Bibo einbinden musst . Ich weiß jetzt leider nicht genau welche da ich unter TwinCat programmiere.
Edit: Es ist nicht der Schrittname sondern der Aktionsname.
gruß bonatus
Hallo,
ich habs in Erinnerung das es bei Codesys mit IEC-Bib Schritt.x ist.
MfG
Marcel
Timer1: TON;
EINGANG: BOOL;
AUSGANG:BOOL;
Timer1(IN:=EINGANG,PT:= T#1000ms);
AUSGANG:=Timer1.Q;
IF AUSGANG= TRUE THEN
EINGANG:=FALSE;
ELSE
EINGANG:=TRUE;
END_IF;
Moin,
( Instanz )
T_WARTEN: TON;
( Wartezeit in AS )
Schritt 'PAUSE' anlegen
danach Transition 'T_WARTEN.Q'
AWL-Code im Schritt Pause:
LD PAUSE
CAL T_WARTEN(IN:=PAUSE, PT:=T#10s)
Gruß Volker
Hallo,
hier nochmal mein vorschlag ohne viel schnickschnack
Es geht noch einfacher!
Doppelklick auf den Strich der Transition -> Programmiersprache Auswählen, und go...
MfG
Marcel
hallo,
das problem ist aber das du in einer Transition keine Zuweisung machen kannst. Wenn du nur eine bestimmte Zeit warten willst ist das OK, aber wenn du z. B. ein Schütz schalten willst ist das über die Transition nicht möglich.
gruß bonatus
doch klar.
Du setzt im Schritt z.B. Step18 dein Schütz.
Dann steht in der Transition darunter
Ton(IN:=Step18.x, PT:=t#5s)
o.ä.
Somit schaltet die Transition durch nachdem 5 Sekunden Schritt 18 gesetzt ist.
MfG
Marcel
Ja, könnt man auch machen...
Hallo,
Danke für die Antworten bisher, aber dieses Thema muß ich nochmal aufgreifen, ich habe das Problem noch nicht gelöst. Hier ist ein Beispielprogramm mit meinem Problem. Der Timer funktioniert nur ein mal.
Vielen Dank im voraus,
Klaus
TIMER_TON.pro [24.25 KiB]
Hallo Klaus
Dein Fehler ist das deine Zeit nur mit dem Zustand des Eingang TRUE
Aufgerufen wird.
Ändere Deine Ausgangsaktion folgend.
Dein Timer wird dadurch einmal mit FALSE aufgerufen so das beim nächsten Aufruf die Zeit eine neue Flanke erkennt.
mfG Jochen
Vielen Dank!