Hallo floppy,
dieses zusätzliche Einlesen der Peripheriedaten muss auch nicht unbedingt notwendig sein. Vielleicht wollte sich der Programmierer nur sicher sein, dass die Werte aktuell sind.
Oder er kommt noch aus alten SPS Zeiten, wo die Zykluszeit wesentlich länger sein konnte als heute bei einer normalen S7.
Die Zykluszeit zu wissen wäre interessant. Wenn der OB 35 in einem Zyklus mehrmals aufgerufen wird, macht es schon wieder Sinn.
Der OB 35 und alle anderen 30er OBs werden zyklisch (OB 30 = 5000ms bis OB 38 = 10ms Voreinstellung, das kann man auch ändern) aufgerufen. Der aktuelle Baustein wird unterbrochen. Der OB wird abgearbeitet (einschliesslich der dort aufgerufenen Bausteine. Dann wird das Programm an der Abbruchstelle fortgesetzt.
In anderen Welten nennt sich das halt Interrupt.
Man kann dies Funktion auch sperren, wenn man die Unterbrechung eines Bausteines vermeiden will.
Der LPEW T EW Befehl kann auch einen etwas kompliziteren Sinn haben:
Der OB 35 wird alle 100ms aufgerufen.
Sagen wir mal, Dein Programm hat eine Zykluszeit von 30 ms .
Ist zwar viel, macht's aber zum erklären einfacher.
Nach 3,3 Zyklen wird der OB 35 aufgerufen.
Nach 6,6 Zyklen wird der OB 35 aufgerufen.
Nach 9,9 Zyklen wird der OB 35 aufgerufen.
....
Beim Aufruf des OBs ist also irgendwann Dein Prozessabbild schon fast 30 ms "alt", also schon ein Drittel der Aufrufzeit des OB 35. Das kann schon Probleme verursachen.
Ist natürlich etwas vereinfacht, weil die Zyklen oft nicht exakt gleich lang sind.
Noch ne gaaaanz andere Idee::icon_idea:
Bei Inbetriebnahmen, wenn noch nicht alle Signale zur Verfügung stehen, mach ich auch schon mal sowas:
L PEW 0
L MW 0
UW
TEW 0
In einer VAT steuere ich dann die Bits im MW 0.
Dem Programm werden dann die Eingänge "vorgegaukelt"
Da werden jetzt bestimmt Viele :sm12:
Vielleicht ist das ein Überbleibsel von so was ähnlichem.