Ich bin sicher, daß das asynchron zum Zyklus, also an beliebiger Stelle geschieht, da es bei Prodave, Libnodave, AgLink auch so ist. Wenn z.B ein Merker- oder Datenwort zunächst Zwischenwerte und erst später im Zyklus das Endergebnis eine Berechnung enthält, liest du zufällig alles mögliche.
Wenn du wirklich verhindern willst, daß du Mist liest, nimmst du einen DB und kopierst z.B. am Zyklusende die Werte hinein. Ich kann dir aber nicht sagen, ob es dennoch passieren könnte, das das Lesen der Daten z.B. mitten im Kopiervorgang erfolgt und daher z.B. die eine Hälfte eines Doppelworts schon die neuen, die andere noch die alten Byte-Werte enthält. Ist mir noch nicht passiert.
Dagegen hilft nur, den gleichzeitigen Zugriff zu verhindern:
1. OPC-Programm setzt einen Merker.
2. S7 Programm testet den Merker auf 1. Wenn 1 erfolgt Kopie. Merker wird gelöscht.
3. OPC-Programm fragt den Merker ab. Ist er 0, holt es die Werte.
4. Erst danach kann es den Merker wieder setzen.