Frage zur Abarbeitung

Fetzi

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute :).

Bin neu in der S7 Welt bzw beschäftige mich erst seit kurzem in meiner neuen Arbeit damit. In der Schule wurde uns SPS nur oberflächlich und ungenau erklärt.

Meine Frage lautet folgendermaßen:

Wenn in einem OB1 ein Programm erstellt wird mit mehreren Netzwerken, werden die Netzwerke dann parallel abgearbeitet oder untereinander?
Ich bin es gewohnt, dass ein Programm strukturiert von oben nach unten abläuft. Nur wenn in einem unteren Netzwerk ein Operand seinen Status ändert, wird er in darüberstehenden Netzwerken sofort geändert, obwohl der Zyklus noch nicht alle Netzwerke abgearbeitet hat??

Kann mir das jemand genau erklären?

Dankeschön
 
Das Programm wird immer von oben nach unten abgearbeitet. Wenn das letzte NW des OB 1 erreicht ist wird das Programm wieder am Anfang fortgesetzt. Wenn sich im NW 10 ein Wert ändert, dann wird NW10 bis letztes NW mit diesem neuen Wert bearbeitet, anschließend wieder NW1, ebenfalls nun mit diesem neuen Wert. Es gibt noch OB, die den Programmablauf unterbrechen können, sich also irgendwo einschieben, z.Bsp. in einem festen Zeitraster.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Fetzi,

das Programm wird von "Oben nach Unten" abgearbeitet.
Dies betrifft das Anwenderprogramm. Der OB1 ist sozusagen die Schnittstelle zwischen System und Anwender und sollte auch so genutzt werden.
d.h. Dein (Anwender)Programm sollte strukturiert in FCs/FBs geproggt sein und im OB1 aufgerufen.
Für die Reihenfolge gilt das oben gesagte: OB1 von Oben nach Unten bis ein Aufruf FC/FB kommt, Verzweigung in den Baustein, wieder von Oben nach Unten, Rücksprung in den OB1, weiter nach Unten.
So einen Durchlauf nennt man Zyklus.

Noch eine Anmerkung:
Die digitalen Eingänge und Ausgänge werden ausserhalb des OB1-Zyklus aktualisiert.
So stehen im ganzen Zyklus identische Eingänge an (verändern sich nicht).

Gruß Roland

Edit: Ralle war schneller
 
Zuletzt bearbeitet:
Überschrift: "Zyklus"

Im OB 1 und in allen darin aufgerufenen FC, FB
erfolgt die Abarbeitung von oben nach unten.

Sinngemäss werden am Start des Zyklus die Eingänge eingelesen (PAE/ Pheripheri Abbild der Eingänge wird gelesen PAE steht noch vom letzten Zyklus zur Verfügung.)

Wenn du jetz zb. an verschidenen Zeitpunkten einen Eingang abfragst hast du immer den Zustand des PEW.
Wenn du einen Ausgang / Merker beschreibst und den später nochmals beschreibst (Stichwort Doppelzuweisung) dann wirkt immer der zuletzt (im Sinne der Abarbeitung, also "von oben anch unten") beschriebene.
Am Ende des Zyklus (für die Besserwisser: je nach Betrachtungsweise auch am Beginn des Zyklus) wird das PAW (Pheripheri Ausgangs Wort) an die Ausgänge geschrieben.

Für Zeitkritische Bereiche kann mann das auch aushebeln indem man direkt auf die Ein/Ausgänge zugreift, aber für die "normalen" Anwendungen stimmt obiges.

PS Ralle und Der Pfälzer waren noch schneller :)
 
Zuletzt bearbeitet:
Hm ok dankeschön.
Nur versteh ich dann dieses Programm nicht.
Wenn du dir dieses kurz ansehen könntest:

http://www.sps-lehrgang.de/loesung-werbeschild/

In diesem Programm wird ein Schild erstellt, dass immer ein Wort zum leuchten bringt (So etwas wie ein Lauflicht). Es ist in FUP geschrieben und die Bedingung für das Setzen des Wortes ist immer, dass das vorherige Wort gesetzt ist. Und die Rücksetzbedingung ist, dass das nächste Wort leuchtet bzw gesetzt wird.

Bsp.:
Im Netzwerk 3 wird das Werbeschild "Schall" gesetzt, im nächsten Netzwerk 4 wird dadurch das Wort "und" gesetzt. Die Rücksetzbedingung des Wortets "Schall" wär hiermit erfüllt. Nur wenn das Programm von oben nach unten durchlaufn würde, würdn doch zuerst alle Schilder leuchten und erst im nächsten Zyklus ausgehen. So ist es aber nicht, es leuchtet immer nur ein Schild.
 
Hallo Fetzi,
diese Progrämmchen entspricht einer Schrittkette.
Jedes RS-Glied entspricht einem Schritt.
Getaktet (weiterschalten) wird mit M0.3. Dies ist ein vom Taktmerkerbyte abgeleiteter Impuls (siehe NW2).
Ich muss schon zugeben, das Beispiel ist etwas eigenwillig.
Es scheint so (Habs nicht probiert), dass im 1.Zyklus alle Merker (bis auf "GmbH", wird ja von "Schall" rückgesetzt) gesetzt sind. An den Ausgängen wird das nicht sichtbar sein (zu schnell).
Ab dem 2.Zyklus greifen dann die NICHT-UNDs.

Wirklich eine komische Art einer Schrittkette.

@Winnman
Takt kommt vom CPU-Taktmerkerbyte

Gruß Roland
 
Zurück
Oben