Reset von Schrittketten

Für Themen rund um logi.RTS und logi.CAD 3
User avatar
Ingo
Posts: 266
Joined: 10 Nov 2016, 21:56
Answers: 1
Location: Luth.Wittenberg

Re: Reset von Schrittketten

Post by Ingo »

da er ja von aussen das ganze resetten möchte durch eine Notabschaltung
ist es besser, dem Programm eine input variable anzufügen, die einfach FBInit oder wie auch immer heißt.

z.b.
Programm xxxx (FB)
VAR_INPUT
FBInit : BOOL;
END_VAR

Extern wird dann ein Bit angehängt, wenn dieses Bit eine Flanke bringt, geht die Schrittkette auf den Schritt Init zurück. und schon sollte er wieder im Initialschritt sein.
Da die EN lösung nicht sehr elegant ist würde ich das schon so machen.
Kai
Posts: 10
Joined: 01 Apr 2018, 17:48
Answers: 0

Re: Reset von Schrittketten

Post by Kai »

Hallo Ingo,
erst mal vielen Dank für Dein Engagement. Natürlich kann man die Schrittketten mit RS-Gliedern umsetzen oder den Baustein mit einem Reseteingang anlegen. Im Falle der Ablaufsteuerung müsste aber dann parallel zu jeder Transition disjunktiv eine Weitere eingefügt werden, die auf den Reset-Eingang abfragt und in Schritt 0 springt.
Falls es von Logicals keine Lösung gibt, wäre das der Weg. Allerdings ist es ja Sinn der Ablaufsteuerungen, den Logikablauf einigermaßen übersichtlich darzustellen und die administrativen Anteile weitestgehend zu verbergen. Wenn man da rumbasteln muss ist dieser Vorteil schnell wieder dahin.
Andere Systeme (z.B. Siemens PCS7) bieten daher die Möglichkeit die Schrittketten von außen zu resetten oder die aktuelle Schrittnummer auszugeben. Es wäre wirklich sehr schön, wenn mit LogiCAD so etwas auch realisierbar wäre. Sei es über systemseitig vorhandene (vielleicht derzeit versteckte) Eingänge, Systemaufrufe, o.ä.
Vielleicht bekommen wir ja eine Lösung von Walter.

Viele Grüße
Kai
User avatar
Walter
Official 3rd Party Support logi.cals
Posts: 77
Joined: 15 Dec 2016, 12:56
Answers: 0

Re: Reset von Schrittketten

Post by Walter »

Hallo,

In logi.CAD 3 sind die Schrittketten streng nach IEC-Norm abgebildet, daher haben diese keine Resetmöglichkeit.
Um dennoch eine "State Machine" mit ähnlicher Übersicht wie bei einer Schrittkette zu programmieren, jedoch die Möglichkeit eines Resets zu haben, ist folgender Workaround geeignet:
alternative_Schrittkette.png
alternative_Schrittkette.png (32.42 KiB) Viewed 4865 times
Kai
Posts: 10
Joined: 01 Apr 2018, 17:48
Answers: 0

Re: Reset von Schrittketten

Post by Kai »

Hallo,

also erst mal vielen Dank in die Runde. Ich möchte hier noch meine Lösung vorstellen, vielleicht hilfts ja jemandem weiter.

Die Anforderungen sind:
  • Die Schrittkette muss durch einen Reset Eingang jederzeit auf den Initialschritt zurückgesetzt werden können. Solange dieser Eingang true ist, darf die Schrittkette nicht mehr starten.
  • Die Nummer des aktiven Schrittes muss von außen zugreifbar sein.

Um die Rücksetzbarkeit zu erreichen wurde zu jeder normalen Transition eine weitere Transition parallel geschaltet. Wichtig ist hierbei, dass sich die beiden Bedingungen exklusiv ausschließen, also niemals beide gleichzeitig true sein können. In den Schrittaktionen wird dann noch die Schrittnummer rausgeschrieben.
Schrittkette.JPG
Schrittkette.JPG (37.39 KiB) Viewed 4855 times
Hier die zugehörige Umsetzung der Schrittkette in ST.

Code: Select all

FUNCTION_BLOCK SFC_Test

VAR_INPUT
	RESET : BOOL := FALSE;
END_VAR

VAR_OUTPUT
	ST : INT := 0; // Aktuelle Schrittnummer
END_VAR


// *************************************************************** Struktur 

INITIAL_STEP step0:
  act0();
END_STEP

TRANSITION T0 FROM step0 TO step10
  :=  	RESET = FALSE;
END_TRANSITION

STEP step10:
  act10();
END_STEP

TRANSITION T10 FROM step10 TO step20
  :=  	 // Hier Bedingung einfügen
         	AND NOT RESET;
END_TRANSITION

STEP step20:
	act20();
END_STEP

TRANSITION T20 FROM step20 TO step30
  :=  	 // Hier Bedingung einfügen
         	AND NOT RESET;
END_TRANSITION

STEP step30:
	act30();
END_STEP

TRANSITION T30 FROM step30 TO step10
  :=  	 // Hier Bedingung einfügen
         	AND NOT RESET;
END_TRANSITION

// **************************************************** Reset - Transitionen

TRANSITION T10r FROM step10 TO step0
  :=   RESET = TRUE;
END_TRANSITION

TRANSITION T20r FROM step20 TO step0
  :=   RESET = TRUE;
END_TRANSITION

TRANSITION T30r FROM step30 TO step0
  :=   RESET = TRUE;
END_TRANSITION


// *************************************************************** Aktionen 

ACTION act0:
	ST := 0;
END_ACTION

ACTION act10:
	ST := 10;
	// Hier Aktionen des Schritt 10 einfügen
END_ACTION

ACTION act20:
	ST := 20;
	// Hier Aktionen des Schritt 20 einfügen
END_ACTION

ACTION act30:
	ST := 30;
	// Hier Aktionen des Schritt 30 einfügen
END_ACTION

END_FUNCTION_BLOCK

Post Reply