Hallo,
ich fange gerade an mit der SPS Programierung und versuche ein kleines Program für eine Tankanlage in ST zu schreiben.
Wenn die Steuerung startet wird die Variable startup TRUE. In der PLC_PRG schreibe ich dann
IF startup=TRUE THEN
INIT();
END_IF
.
In dem Baustein INIT wird die komplette Anlage auf ausgangsstellung gefahren, fallls ein Stromausfall war und Ventile noch geöffnet sind.
Ebenfalls wird startup wieder False, damit der Baustein INIT nur beim Start aufgerufen wird.
v1:=FALSE; v2:=FALSE; v3:=FALSE; p1:=FALSE;
startup:=FALSE;
IF v1=false THEN
PLC_PRG();
Danach will ich zurück in die PLC_PRG.
beim Ãœbersetzen kommt dann allerdings die Fehlermeldung
Aufrufsrekursion:INIT->PLC_PRG->INIT.
Wo liegt da der Fehler? Eigentlich kann der Baustein INIT nicht mehr augerufen werden, da startup nun FALSE ist.
mfg Manuel
Hi
Zitat: IF v1=false THEN PLC_PRG(); END_IF
Entferne "PLC_PRG" das ist es gut.
Zitat: Danach will ich zurück in die PLC_PRG.
Du bist doch bereits "drinnen".
Nach dem "ende" deiner Programmsequenz beginnt "PLC_PROG" von neuem.
(Neuer Zyklus)
Die musst von dem Programmiergedanken eines PCs wegkommen.
Also entferne "PLC_PRG" in teste weiter.
(Z.b. mit einer Zählschleife" in der du siehst, dass PLC_PROG erneut aufgerufen wird.)
einfach mal den Aufruf von PLC_PRG() im Baustein Init löschen.
Der ist sinnlos,da nach Abarbeitung von Init() sowieso in den aufrufenden Baustein, also PLC_PRG zurückgesprungen wird.
Norbert
tja, da war ich wohl zu langsam
Zitat: tja, da war ich wohl zu langsam
Nö, ich zu schnell
Der Gedanke/Wille zählt.
Vielen Dank. Funktioniert.
Log in to post a comment.
Hallo,
ich fange gerade an mit der SPS Programierung und versuche ein kleines Program für eine Tankanlage in ST zu schreiben.
Wenn die Steuerung startet wird die Variable startup TRUE. In der PLC_PRG schreibe ich dann
IF startup=TRUE THEN
INIT();
END_IF
.
In dem Baustein INIT wird die komplette Anlage auf ausgangsstellung gefahren, fallls ein Stromausfall war und Ventile noch geöffnet sind.
Ebenfalls wird startup wieder False, damit der Baustein INIT nur beim Start aufgerufen wird.
startup:=FALSE;
IF v1=false THEN
PLC_PRG();
END_IF
Danach will ich zurück in die PLC_PRG.
beim Ãœbersetzen kommt dann allerdings die Fehlermeldung
Aufrufsrekursion:INIT->PLC_PRG->INIT.
Wo liegt da der Fehler? Eigentlich kann der Baustein INIT nicht mehr augerufen werden, da startup nun FALSE ist.
mfg Manuel
Hi
Entferne "PLC_PRG" das ist es gut.
Du bist doch bereits "drinnen".
Nach dem "ende" deiner Programmsequenz beginnt "PLC_PROG" von neuem.
(Neuer Zyklus)
Die musst von dem Programmiergedanken eines PCs wegkommen.
Also entferne "PLC_PRG" in teste weiter.
(Z.b. mit einer Zählschleife" in der du siehst, dass PLC_PROG erneut aufgerufen wird.)
Hallo,
einfach mal den Aufruf von PLC_PRG() im Baustein Init löschen.
Der ist sinnlos,da nach Abarbeitung von Init() sowieso in den aufrufenden Baustein, also PLC_PRG zurückgesprungen wird.
Norbert
tja, da war ich wohl zu langsam
Hi
Nö, ich zu schnell
Der Gedanke/Wille zählt.
Vielen Dank. Funktioniert.