Aktorenüberwachung

HardAmLimit

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

wenn ich einen Zylinder (z.B. Z0) ansteuere und dieser in Arbeitsposition fährt, aber seinen Sensor (S0) nicht erreicht, dann möchte ich, das er zB. nach 1sec wieder in Grundstellung fährt. Denke das ist bei vielen Steuerungen so. Kriegs aber nicht hin. Habs mit TON versucht, aber leider bleiben in dem Funktionsblock die Inhalte der Variablen stehen und wenn Eingang IN keine fallende Flanke sieht Kriegt Timer kein Reset.

Gibts da ne einfache Alternative (Funktion?) die ich auf alle Zylinder in der Steuerung anwenden kann?

Wär schön wenn jemand nen kurzes Beispiel hier einbringen könnte.

Vielen Dank im voraus.

HAL
 
Ich zähle bei sowas gerne mit der zykluszeit (oder sonst irgendein takt) ein wort hoch. das hat den vorteil, das ich den reset in der hand habe.
 
Mit dem Timersignal würde ich mir einen Merker setzen, der heißt "Fehler Aktor". Damit kann dann das IN-Signal "unterbrochen" werden (als UN einbauen) und der Aktor kann damit zurückgestellt werden.

PS: Ich stelle nie etwas automatisch zurück, es bleibt wie es eh schon ist, bis der Benutzer ein Reset durchführt und den Fehler beseitigt.
 
Beispielsweise so:

Code:
TON_Watchdog(IN := bStartZylinderAuf AND NOT bZylinderAuf, PT := (*Überwachungszeit*));

IF TON_Watchdog.Q THEN  (* wenn Timer abgelaufen *)
 bStartZylinderAuf := FALSE;  (* Fahrbefehl für Zylinder auf abbrechen *)
 bStartZylinderZu := TRUE;    (* Fahrbefehl für Zylinder zu *)
END_IF
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Trinitaucher,

hab das im prinzip so mit CFC gelöst.
Das problem dabei ist, wenn Q nach Ablauf des Timers gesetzt ist,
und ich das ganze nochmal aufrufe, ist Q immer noch gesetzt und die Zeit läuft nicht ab. Wie kann ich Q Softwaremässig resetten? Also im prinzip wie der Anfangszustand des Timers ist. 1x funtioniert es ja.(Bei Start des Programmes).Selbst wenn ich TON mit low am IN aufrufe gibts kein reset. Q ist immer noch gesetzt. Aber laut Beschreibung wird der Timer mit low reset gesetzt und mit high ausgelöst. Check das igendwie nicht....:-(

Gruss HAL
 
Und Timer.IN wird ganz sicher FALSE? Wenn JA würde das heissen, das die Funktion TON fehlerhaft ist. Und das glaube ich nicht....
Überprüfe die Instanzen, ob der selbe Timer mehrmals aufgerufen wird. Also nur eine Instanz hat. Das ist wahrscheinlich so.
 
Krise...

Hi Repök

ich habe mal nen scrennshot angehängt.
Beim Start wird Z_ausgleich=1 --> Timer läuft und nach 2sec kommt Q.
Soweit OK.

Während des Programms wird Z-ausgleich öfter mal auf 0 gesetzt.
Wenn ich jetzt den Block mit dem Timer wieder aufrufe und Z_ausgleich wieder auf 1 setzte, ist Q immer noch gesetzt und die Zeit läut nicht ab.
es wird als Q nicht zuückesetzt. Was um alles in der welt mach ich falsch.
Krieg noch die Krise...hab den ganzen Sonntag mit dem Mist verbracht.


GRuss HAL
timer.jpg
 
Wenn ich jetzt den Block mit dem Timer wieder aufrufe

Mal ne Frage, wird der Timer umsprungen oder der Code nicht bearbeitet? Dann bekommt der Timer die Flanke am Eingang evtl. nicht mit bzw. wird in dem Moment wieder aufgerufen, wenn du den IN setzt? Komme eher aus der Siemens-Ecke, aber es ist eigentlich generell so, daß ein Timer, damit er ordentich arbeitet, möglichst dauerhaft, zumindest aber so aufgerufen wird, daß er alle Änderungen am IN auch mitbekommt, normalerweise auch als Flanken mitbekommt!
 
Der TON-FB sollte immer nur einmal im Code aufgerufen werden, mit TON_FB(). Entweder am Ende oder am Anfang des Codes, damit ein Mehrfachaufruf vermieden wird aber bei jedem Durchlauf eine Abarbeitung stattfindet.
Ansonsten sollte der FB immer nur mit TON_FB.IN oder TON_FB.Q bedient werden.
 
Zurück
Oben