Guten Abend,
ich habe die folgende Ablaufkette in SCL programmiert:
grafcet.png
Bei linearen Ablaufketten verwende ich eine CASE-Anweisung, sodass ich nur eine Schrittvariable habe, und nicht wie hier bei der Parallelen Ablaufkette für jeden Schritt einen (Schritt_1, Schritt_2, usw.)
Da bei der parallelen Ablaufsteuerung zwei Abarbeitungen gleichzeitig stattifnden, ist es meines Erachtens nicht möglich an dieser Stelle mit einer Variablen zu arbeiten. Gäbe es denn hier generell irgend welche Vereinfachungen, die ich vornehmen könnte? Ich komme da auf keinen grünen Zweig....
ich habe die folgende Ablaufkette in SCL programmiert:
grafcet.png
Code:
IF "Startimpuls" THEN
"Schritt_0" := 1;
END_IF;
IF "Schritt_0" THEN
"BWG_U" := 0;
IF "Freigabe" THEN
"Schritt_0" := 0;
"Schritt_1" := 1;
"Schritt_3" := 1;
END_IF;
ELSIF "Schritt_1" AND "Schritt_3" THEN
"BWG_R" := 1;
"BWG_O" := 1;
IF "rechte Endlage" THEN
"Schritt_1" := 0;
"Schritt_2" := 1;
"BWG_R" := 0;
ELSIF
"obere Endlage" THEN
"Schritt_3" := 0;
"Schritt_4" := 1;
"BWG_O" := 0;
END_IF;
ELSIF "Schritt_1" OR "Schritt_3" THEN
IF "rechte Endlage" THEN
"Schritt_1" := 0;
"Schritt_2" := 1;
"BWG_R" := 0;
ELSIF
"obere Endlage" THEN
"Schritt_3" := 0;
"Schritt_4" := 1;
"BWG_O" := 0;
END_IF;
ELSIF "Schritt_2" AND "Schritt_4" THEN
IF "Punkt erreicht" THEN
"Schritt_2" := 0;
"Schritt_4" := 0;
"Schritt_5" := 1;
END_IF;
ELSIF "Schritt_5" THEN
"BWG_U" := 1;
IF "abwärts" THEN
"Schritt_5" := 0;
"Schritt_0" := 1;
END_IF;
END_IF;
Da bei der parallelen Ablaufsteuerung zwei Abarbeitungen gleichzeitig stattifnden, ist es meines Erachtens nicht möglich an dieser Stelle mit einer Variablen zu arbeiten. Gäbe es denn hier generell irgend welche Vereinfachungen, die ich vornehmen könnte? Ich komme da auf keinen grünen Zweig....