ABB 800F: Schrittkette Abbruch herbeiführen

T800

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

+ Ich habe eine Schrittkette mit vielen Schritten.

+ Bei einem Problem soll die Schrittkette zum ersten Schritt (Ini) springen.

+ In mehreren Schritten sind jedoch Wartezeiten (TWA) vorhanden. Der aktuelle Schritt n würde also erst warten bis die Zeit abgelaufen ist um zum Ini zu springen.

+ AS Parameter können leider nicht verwendet werden, weil: "Das Rücksetzsignal wird nur in der Betriebsart Hand ausgewertet."
Ich müsste dem Programm also erst anweisen in Hand zu gehen damit ein Reset stattfinden kann. Ist aber auch problematisch, wenn der Benutzer auch gerade in Hand gehen möchte und die beiden sich in die Quere kommen. Ausserdem will das mein Chef nicht.

+ Man kann jedoch die Wartezeit per Variable beschreiben. Bei einem Problem beschreibe ich also die Wartevariable mit null Sekunden -> Schritt wartet nicht mehr.

+ Gleichzeitig muss ich aber auch irgendwo die reguläre Wartezeit (wenn kein Problem) in die Wartevariable schreiben.

+ Wenn ich das im Schritt n mache und die nachfolgende Transistion ist schon erfüllt, dann wird der Schritt n ohne Wartezeit und Bearbeitung durchlaufen.

+ Eine Lösung wäre, dem Schritt n ausserhalb der Schrittkette eine Standardwartezeit etwas grösser als die Zykluszeit zuzuweisen. Der Schritt n hätte damit genügend Zeit seine eigentliche Wartezeit zu schreiben. Ist aber unelegant und riskant, weil bei unverhofft grösserer Zykluszeit wieder kein Schreibvorgang im Schritt n stattfindet.

+ Jetzt habe ich herausgefunden, dass wenn ein Schritt beendet wird. Eine, ich nenne sie mal, Schrittaktiv Variable .X für einen Zyklus auf FALSE gesetzt wird. Auf diese Weise kann man noch Aktionen zurücksetzen.

+ Ich habe also im Schritt n-1 die Wartevariable beschrieben, sobald .X=False wird. Damit Schritt n beim Start gleich die richtige Wartezeit hat.

+ Und jetzt kommt das Schräge: Schritt n wird noch im selben Zyklus begonnen. Somit arbeitet Schritt n, noch mit den Werten aus Schritt n-1 VOR .X=FALSE.

1.jpg




Ausschnitt: ABB 3BDD012504R0403_Eng_Handbuch_IEC 61131-3_Programmierung_Deutsch, S. 342

+ Und genau das Problem habe ich auch. Meine Wartezeit wird im Schritt n-1 mit dem alten Wert beschrieben. Wenn Schritt Ini also eine Wartezeit von 0s hat, dann wird erst nach einem Durchlauf durch die ganze Schrittkette mit den richtigen Werten gearbeitet.



Ist das so gewollt? Wie realisiert ihr einen Abbruch?

PS: Schritt n-1 ist Analog zu S1, Schritt n Analog zu S2
 
Zuletzt bearbeitet:
Ich habe das Problem mit der "Viel-Arbeit" Methode gelöst. Die Wartevariablen werden nicht mehr in der Schrittkette beschrieben, sondern ausserhalb. Jetzt habe ich eine ganze Seite voller Binärverzweigungen.:-|

Mich würde aber wirklich noch interessieren, ob von ABB das Arbeiten mit alten Werten so vorgesehen ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die Nachwelt (und mich:):

Das Problem konnte ich (erneut) lösen in dem ich die Wartezeit nicht als Schrittaktion, sondern als Bedingung/Transiston eingeordnet habe (Warteparadigma).

Wenn man Problem in ein Echtwelt Problem übersetzen möchte, dann vielleicht so: Warten hat immer einen Grund. So stellt man sich zB an eine Bushaltestelle, weil man auf einen Bus wartet, aber nicht einfach so (zumindest mache ich sowas nicht).

Da Warten jedoch immer irgendwie in einem Programm vorkommt, wollte man bei ABB dies wohl irgendwie determinieren.
 
Zurück
Oben