Erster Zyklus nach Neustart

Dirty Harry

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

ich arbeite mich in gerade Beckhoff ein.

Wie ist unter Beckhoff oder allgemein CoDeSys der erste Zyklus nach einem Neustart der SPS detektierbar?
Bei S7 würde ich die Programmierung vom OB100 oder die Auswertung der Variable OB1_SCAN1 anwenden.
Danke für die Hilfe.

Harry
 
Ich mache das immer über eine Variable. Diese Variable ist initialisiert mit False. Nachdem ich meine Initalisierung gemacht habe schalte ich sie um auf True in ST sieht das so aus.

VAR
StartUpDone:BOOL:=FALSE;
END_VAR


if StartUpDone=FALSE THEN
Die zu erledigende Arbeit
StartUpDone:=TRUE;
end_if

Gruss
Thomas
 
Zuletzt bearbeitet:
für eine selbstkreierte Variable kannst du aber auch auf die Systemvariable
SystemTaskInfoArr[1].FirstCycle zurückgreifen.

Aufpassen: funktioniert jedoch NICHT beim Umschalten des SPS-Programmes von STOP auf START, sondern nur beim Hochstarten des Systems. Bin da mal ziemlich übel darübergestolpert. Wir lösten das Problem damals über die System-Ticks.

Frohe Ostern ! (hoffentlich ohne Software-Eier)
 
Ich mache das immer über eine Variable. Diese Variable ist initialisiert mit False. Nachdem ich meine Initalisierung gemacht habe schalte ich sie um auf True in ST sieht das so aus.

VAR
StartUpDone:BOOL:=FALSE;
END_VAR




if StartUpDone=FALSE THEN
Die zu erledigende Arbeit
StartUpDone:=TRUE;
end_if

Gruss
Thomas


Die Idee finde ich Klasse. Ich habe sie gleich in meinem aktuellen CODESYS 3.5 Projekt ausprobiert. Leider funktioniert es zumindest bei einfachen Stop/Start nicht. Hat noch jemand eine andere Idee, wie einen Neustart erfassen kann?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Idee finde ich Klasse. Ich habe sie gleich in meinem aktuellen CODESYS 3.5 Projekt ausprobiert. Leider funktioniert es zumindest bei einfachen Stop/Start nicht. Hat noch jemand eine andere Idee, wie einen Neustart erfassen kann?


Ein "einfacher Stop/Start" ist ja bekannt als "Warmstart" und soll ja genau das bewirken: Programm wird da fortgesetzt, wo es aufgehört hat. Für welchen Zweck möchtest Du den Warmstart detektieren?

Ich kenne die Beckhoff nicht, aber kannst Du Dir ggf. einen Task anlegen, der ereignisgesteuert aufgerufen wird beim Warmstart? Entspräche dem OB bei Siemens...
 
Man kann in Codesys bei bestimmten Systemereignissen einen seperaten Taskaufruf machen. z.B. "PrepareStart" (führt einen Code aus bevor der Controller in Run versetzt wird um z.B. Variablen zu initialisieren)
Das ganze geschieht in der Taskkonfiguration. Habe eben kein Codesys da. wenn du es nicht findest kann ich heute Abend ein Bild machen.

Task vor Run.jpg

Holger
 
Zuletzt bearbeitet:
Zurück
Oben