Zeitglied SFB4 (SCL) bei bei erneutem Aufruf .Q sofort true

max_sho

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

bei meinem Zeitglied Timer_1 : SFB4 (SCL-Quelle) funktioniert der erste Aufruf einwandfrei. Allerdings wenn ich am Ende des gesamten Progs angekommen bin und wieder am Anfang beginne(fotlaufend), dann "läuft" er über das Zeitglied hinweg. Die Zeit läuft nicht erneut ab, es wird sofort Timer_1.Q true.

Sieht folgendermaßen aus:
(Var1 wird an dieser Stelle gerade von false auf true)

IF ( Var1 = true)

Time_1(IN := Var1
,PT := t#30s
);
Var2 := Time_1.Q;
END_IF;

... Var1 wird hier wieder false

Vielen Dank & Gruß

Max
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
der SFB4 möchte (genau wie der SE-Timer in AWL) gerne eine Flanke am Eingang mitbekommen. Das kann er aber nicht, wenn du ihn in einer IF-Abfrage stellst - dadurch würde er im AWL-Code übersprungen. Timer IMMER bearbeiten - nicht bedingt.

Und so, wie du es gemacht hast, brauchst du die vorgeschaltete IF-Abfrage sowieso nicht - schmeiss die also einfach raus - dann gehts.

Gruß
Larry
 
Hallo,

TON= Einschaltverzögerung. sollte doch 30s lang eine 1 am "IN" anstehen, bevor Ausgang=true ist.

Desweiteren ist der timer in einer If-Then anweisung. Übersprungene SE-Timer funktionieren so doch nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank.

Die IF Anweisung hat bei mir noch drei Bedingungen. Das Zeitglied soll nur anlaufen wenn IF (STOP = false, Var1 = true, VarXY = true)THEN Zeitglied.

Kann ich in der IF-Anweisung eine neue Variable setzten (Diese dann auf IN) und somit eine Flankenänderung für das Zeitglied erzeugen? Funktioniert das so bei Zeitgliedern?

Danke & Gruß

Max
 
Die IF Anweisung hat bei mir noch drei Bedingungen. Das Zeitglied soll nur anlaufen wenn IF (STOP = false, Var1 = true, VarXY = true)THEN Zeitglied.
Die Möglichkeit von IF-Zweigen und Schleifen in SCL läßt leider oft die Programmierer vergessen, wie die CPU tatsächlich funktioniert.

Damit ein Timer nur unter 3 Bedingungen läuft, weist man das Verknüpfungsergebnis der 3 Bedingungen einer boolschen Hilfsvariable zu und ruft den Timer IMMER mit dieser Hilfsvariable als IN auf. Etwa so:
Code:
Var3 := bedingung1 AND bedingung2 AND bedingung3 ;
Time_1(IN := Var3, PT := t#30s);

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Timer...

Also Ich mach das in meinen Bausteinen in AWL immer so, das Ich Zeitglieder ganz am Ende des Bausteines Aufrufe, und diese immer durchlaufe. Es gibt dann kein BEA oder BEB im Baustein, sonderen ein SPA Ende oder SPB Ende.

Sollte ja in SCL auch so möglich sein... Die Zeiten einfach immer ans Ende des SCL-Codes, so das sie aber nicht von einer Bedingung eingeschlossen sind, und immer durchlaufen werden!
 
*, sry zu früh gepostet ohne zu Überlegen.
Naja egal Beitrag löschen geht net...Ich schreibs doch mal rein:

Ich hatte mal ähnliches Problein beim Wiedereinschalten der CPU weil Timer und Merker im Remanenten Bereich der CPU waren.
 
Zuletzt bearbeitet:
Zurück
Oben