Welcher Ablauf ist der Richtige?

jokey

Level-1
Beiträge
80
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin,

als ich gerade jemandem erklärte, wie eine SPS grundlegend arbeitet, bin ich über eine leichte Unstimmigkeit gestolpert, habe aber gerade keine passende Hardware, um es zu probieren.

Laut "S7-300 CPU 31xC und CPU 31x: Technische Daten Firmware V2.6" vom 20.5.2009, Kapitel 4, Seite 110 heißt es
"Das Programm berechnet während des Zyklus die Werte für die
Ausgänge und legt sie im Prozessabbild der Ausgänge ab. Am
Ende des OB 1-Zyklus schreibt die CPU die errechneten
Ausgangswerte in die Ausgabebaugruppen."

Blickt man aber auf die Abbildung eine Seite weiter, so schreibt die SPS direkt nach dem Anlauf erstmal ein PAA auf die Ausgänge. Nur ist doch jetzt die Frage a) warum, bevor ein Programm etwas dort verändert hat und b) warum werden die Ausgänge bei Zyklusbeginn und nicht bei Zyklusende geschrieben? Vor allem kann es im ersten Anlauf doch ein, dass noch "Müll" in dem PAA steht, die Ausgänge wären damit in undefiniertem Zustand...
 
Moin moin,

als ich gerade jemandem erklärte, wie eine SPS grundlegend arbeitet, bin ich über eine leichte Unstimmigkeit gestolpert, habe aber gerade keine passende Hardware, um es zu probieren.

Laut "S7-300 CPU 31xC und CPU 31x: Technische Daten Firmware V2.6" vom 20.5.2009, Kapitel 4, Seite 110 heißt es
"Das Programm berechnet während des Zyklus die Werte für die
Ausgänge und legt sie im Prozessabbild der Ausgänge ab. Am
Ende des OB 1-Zyklus schreibt die CPU die errechneten
Ausgangswerte in die Ausgabebaugruppen."

Blickt man aber auf die Abbildung eine Seite weiter, so schreibt die SPS direkt nach dem Anlauf erstmal ein PAA auf die Ausgänge. Nur ist doch jetzt die Frage a) warum, bevor ein Programm etwas dort verändert hat und b) warum werden die Ausgänge bei Zyklusbeginn und nicht bei Zyklusende geschrieben? Vor allem kann es im ersten Anlauf doch ein, dass noch "Müll" in dem PAA steht, die Ausgänge wären damit in undefiniertem Zustand...

Leider habe ich die Dokumentation nicht hier, doch folgendes zur Erklärung:
Nach dem Einschalten ist das PAA definiert, warum sollte es dies nicht sein?
Außerdem ist ein Zyklus ein paar Millisekunden lange, da schalten keine Aktoren durch, wenn der Ausgang auf 1 für einen Zyklus ist.

Lass dich nicht durch die Zeitscheibe, die gezeichnet ist, verwirren, wenn da am Ende des Zyklus das BESY steht und nicht wie beschrieben das PAA.
Es ist eine Frage der Definition wann der Zyklus beendet ist.
Durch die vielen zusätzlichen BESY Funktionen, die früher nicht in PLC waren und die auch Zeit kosten, wird dies jetzt dokumentiert, früher war es auch so, doch es hat niemand gestört.
Für das Programmieren macht das keinen Unterschied.

Ich hoffe ich habe es klar ausgedrückt.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für das Programmieren macht das keinen Unterschied.

bike

Ich gebe dir absolut recht.

Vielleicht noch ein Gedankengang von mir: beim Anlauf der CPU steht im PAA üblicherweise alles auf False. Also werden alle Ausgänge erstmal auf False gesetzt.

Bei der weiteren Bearbeitung spielt es keine Rolle.
PAA, PAE, OB1, PAA, PAE, OB1, PAA, PAE, OB1, PAA, PAE, OB1,
|___ Zyklus___|___ Zyklus___|___ Zyklus___|___ Zyklus___|
oder
.....|___ Zyklus___|___ Zyklus___|___ Zyklus___|...
 
Zuletzt bearbeitet:
Wenn mich nicht alles täuscht, sind die Ausgänge nicht im remanenten Speicher, ein Setzen auf Stop definiert danach alle Ausgänge zu 0. Es stellt sich jetzt nur die Frage, ob dieser Speicher dann definiert mit 0 beschrieben wird vor dem ersten Anlauf.

In sich ist mir klar, dass es hier um nur einen Zyklus geht, in dem das wirklich relevant ist. Aber ich fand es doch eine interessante Erkenntnis, dass das Anlaufverhalten somit eigentlich nicht ganz klar definiert ist.

EDIT:
Gerade bei einer 313-C beobachtet... Bevor sie nach dem Einschalten anläuft, überführt sie sich erst in den Zustand Stop und macht dann den Anlauf, in sofern ist das Ausgangsbild dann zu 0 definiert und kann gefahrlos auf die ja ohnehin noch deaktivierten Ausgänge geschrieben werden.

Sicherheitsbaugruppen haben ja per Parameter einen definierten Zustand aus dem sie erst im laufenden Programm geholt werden können, somit ist die Zustandskette doch geschlossen.

Interessant jedoch, dass das nicht bei solcher Dokumentation dabei steht.
 
Zuletzt bearbeitet:
Zurück
Oben