Initialisierungsimpuls - Einfach ein Bit für den "ersten Zyklus" setzen

MikeJ

Level-1
Beiträge
80
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich stehe irgendwie auf dem Schlauch: ich möchte einfach beim Neustart der SPS einen "Initialisierungs-Impuls" für den ersten Zyklus setzen - sollte eigentlich kein Problem sein, aber ich bekomme es nicht hin!

In 'Main' habe ich eine Boolsche Variable mittels bInit: BOOL := TRUE; deklariert, welche ich im letzten Netzwerk von 'Main' mittels 'Reset' wieder ablösche. In den Netzwerken dazwischen rufe ich nun verschiedene Programme auf, welche dann mittels 'MAIN.bInit' auf diese Variable zugreifen sollen. Allerdings ist die Variable in den aufgerufenen Programmen immer False, obwohl das Rücksetzen erst später passiert. In 'Main' selbst ist die Variable auch gesetzt - warum in den Aufgerufenen Programmen nicht? Wenn ich den Reset weglasse, sehe ich auch in den aufgerufenen Programmen, dass die Variable TRUE ist - warum bei der "1.Zyklus-Variante" nicht? Werden Aufgerufene Programme Asynchron zu 'MAIN' ausgeführt?!

Vielen Dank für Eure Hilfe
Gruß Mike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...weil ich die bisher noch nicht kannte :)

Aber wie bekomme ich das blöde Ding eingebuden?! In der Doku steht
"Systemflags sind implizit deklarierte Variablen, die von Ihrer speziellen Steuerung abhängig sind. Um herauszufinden, welche Systemflags Ihr System besitzt, wählen Sie den Befehl 'Einfügen''Operand', es erscheint der Eingabehilfedialog, hier wählen Sie die Kategorie System Variable."

Der Befehl "Einfügen" hat aber kein "Operand" und auch sonst finde ich nichts wie das funktionieren soll?!
 
Wenn es um eine Art "Initialisierung" geht, kannst du auch ein Programmblock schreiben und den ausführen lassen, bevor die SPS mit dem PLC_PRG beginnt. Schreibe einfach ein Programm (z.B. init) und trage es unter Resourcen -> Taskkonfiguration -> System-Ereignisse bei 'start' dann rechts unter 'aufgerufener POU' ein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

'Einfach eintragen' geht :) - da hätte ich auch selbst drauf kommen können! Bin davon ausgegangen, dass ich erst eine Variable anlegen muss.
Aber: das mit der Initialisierungsroutine geht nicht. Bei mir gibt es kein "System-Ereignisse bei Start" - kann das damit zusammenhängen, dass ich eine Lokale Runtime verwende?!

Gruß Mike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Markus,

das ist es ja, was ich ursprünglich vorhatte - aber aus irgendwelchen Gründen nicht geht. Die Variable ist in den FB´s schon FALSE, obwohl Main noch nicht das Ende erreicht hat.
Habe es jetzt mit der Systemvariablen wie von Cerberus empfohlen gelöst - funktioniert einwandfrei.

Viele Grüße
Mike
 
Ich verstehe das Problem nicht. Du legst zwei globale Variblen an. Zum Beispiel RUN und START. Am Anfang vom zyklischen Programm schreibst Du:

START:= NOT RUN;
RUN:= TRUE;

Sollte eigentlichen bei jeder SPS funktionieren, bei der die Variblen beim normiert werden.
 
Zurück
Oben