Sprünge in AWL - Programmierfehler?

xj900mb

Level-2
Beiträge
178
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute
Ihr seht hier dies ersten beide Netzwerke meines FC1.
Mit dem Taster "E_Ein" soll der Merker M_Ein gesetzt und mit 0-Signal von E_Not_Aus oder E_Aus oder E_F5 resettet werden.
Dieser M_Ein gilt für die ganze Maschine und daher werden bei 0-Signal von M_Ein alle Ausgänge und Schrittkettenmerker resettet.
Damit sie nachher nichtmehr gesetzt werden können und um die Zykluszeit kurz zu halten wollte ich einen Sprung programmieren.
Sobald M_Ein 0-Signal liefert springe zurück zum Anfang von Netzwerk 1.
Wenn ich den FC1 und den OB1 in PLCSIM lade und starte, geht die CPU nach ein paar Sekunden auf "SF" und stopp.
Nachdem ich die Sprungoperation ausgeklammert habe, trat der Fehler nicht auf.
Wo liegt mein Fehler ???

Netzwerk1

Ma01: U #E_Ein
S #M_Ein

UN #E_Aus
ON #E_F5
ON #E_Not_Aus
R #M_Ein

U #M_Ein
= #A_Ein (Meldeleuhte)

UN #M_Ein
R #A_K_runter
R #A_K_hoch
R #A_S_zu
R #A_S_auf
R #A_Ein
R #A_Auto
R #A_Hand
R #M_Zyklus
R #M_Schritt_1
R #M_Schritt_2
R #M_Schritt_3
R #M_Schritt_4




Netzwerk 2


U #M_Ein
SPBN Ma01




mfg xj900mb
 
Du hast dir eine endlosschleife gebaut, wenn dein M_Ein "0" ist springt er immer wieder
an den Netzwerkanfang, zu deiner Sprungmarke. Für so etwas hat Siemens einen Watchdog
eingebaut und lässt die CPU in den Stop gehen.

Macht dir mal Gedanken ob dein Programm so aussehen muß
 
WOW schnelle antworten, cool

Nach diesen zwei Netzwerken kommen noch ein paar in denen die Hand- und Automatik-Betriebe programmiert sind und genau die wollte ich damit überspringen.
@matze001: ich verstehe nicht warum das eine Endlosschleife sein soll. Wenn M_ein 1-Signal hat würde das Prgramm doch auch die folgenden Netzwerke durchlaufen

Ich habe jetzt die Sprungmarken nach den Sprungbefehlen gesetzt und nun funktioniert es auch einwandfrei, aber warum meine erste Variante nicht klappt hab ich noch nicht verstanden .. . naja immerhin läufts ;)
Dankeschön
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
WOW schnelle antworten, cool

Nach diesen zwei Netzwerken kommen noch ein paar in denen die Hand- und Automatik-Betriebe programmiert sind und genau die wollte ich damit überspringen.
@matze001: ich verstehe nicht warum das eine Endlosschleife sein soll. Wenn M_ein 1-Signal hat würde das Prgramm doch auch die folgenden Netzwerke durchlaufen

Hallo,

du hast die Frage eigentlich schon selbst beantwortet. Wenn das Signal M_ein 0 ist, wird rückwärts gesprungen zum Netzwerk 1 => Endlosschleife.

Sprünge rückwärts sind manchmal sinnvoll, z.B. zum sortieren von Werten, in deinem Code aber absolut tödlich.

Gruß
Woldo
 
AAah natürlich! Die Schleife läuft solange wie M_Ein 0-Signal liefert und daher kann der FC 1 und damit auch der OB1 gar nich ganz durchlaufen.
Jetzt hats Klick gemacht.
Danke!
 
Mann könnte aber auch den Baustein bedingt beenden und somit benötigt man keinen Rücksprung ;)
Es spricht da die Zykulsszeitüberwachung an! Daher geht die Steuerung dann in stop über!
Ggf. könnte man auch die Kette in einen zweiten Baustein verpacken und diese dann n ur bedingt aufrufen wenn das Signal 1 führt!

Aber ob dies wirklich so viel bei der Zyklusszeit bringt wage ich einmal zu bezweifeln!
Denke wir sprechen da im µs Bereich was da ganze brint!
 
Zurück
Oben