Also muss ich schon angeben was wohin soll im Baustein
Das wollte ich damit noch sagen..
Es geht aber nicht nur darum, wohin man Objekt-Teile kopiert, sondern auch darum, ob die Teile, die man zu einem Objekt zusammenkopiert, überhaupt zusammengehören = "
konsistent" sind. Das garantiert nur das Kopieren mit SFC14/SFC15
Kommunikation dauert eine Weile (länger als ein Zyklus), so dass oft nicht alle Teile gleichzeitig im Zielsystem ankommen. Wenn man nun einfach unbekümmert Teilstückchen aus dem Empfangspuffer in einen Zielspeicherbereich kopiert, dann kann es passieren, dass die ersten/vorderen Teile schon von einer neueren Übertragung stammen und die letzten/hinteren Teile noch von der vorherigen Übertragung - die Teile gehören also gar nicht zusammen! Dadurch können Werte zusammengebastelt werden, die so nie übertragen wurden ...
einfaches Beispiel: es wird (z.B. alle 100ms) die Uhrzeit als DATE_AND_TIME (8 Byte) übertragen
(1) DT#2024-10-05-
13:59:59.950 = 16#241005
13_59599507
(2) DT#2024-10-05-
14:00:00.050 = 16#241005
14_00000507
Beim Empfänger wird mit L/T DWord-weise in eine DT-Variable DT1 umkopiert:
Code:
L DWORD[1] // 16#24100514 aus neuer Übertragung (2)
T DT1_dw1
L DWORD[2] // 16#59599507 aus vorheriger Übertragung (1)
T DT1_dw2
--> das ergibt 16#241005
14_59599507 = DT#2024-10-05-
14:59:59.950 !!!
Ein Sprung von fast einer Stunde, der so nie übertragen wurde, nur weil nicht-konsistent zusammenkopiert wurde! (und 100ms später ein Sprung 1 Stunde zurück zu 14:00:00, deshalb fällt es vielleicht nicht auf)
Das gleiche kann auch bei kürzeren Datentypen wie REAL oder WORD passieren, wenn nicht-konsistent auf Teile der Datentypen zugegriffen wird.
(...)
L PEW 1606
T "DB Transfer_2 <=> X&X".REC.int2
Hier werden Wörter verwendet und keine Bytes der Grund wäre die Konsistenz oder ab 4Bytes muss man mit den SFC Bausteinen arbeiten!
Diese habe ich im Baustein nicht gefunden SFC14/15
Code, den man in fremden oder eigenen Programmen findet, kann auch falsch oder schlecht sein, und nur durch Glück zufällig funktionieren ...

Oder nur auf bestimmten CPU oder nur bestimmten Firmware-Versionen funktionieren und nach Migration auf andere CPU oder neuere FW-Versionen nicht oder anders funktionieren.
Bin eigentlich nicht schwer von Begriff aber das hmm...
Nochmal: lies die Beschreibung von SFC14/SFC15 durch. Da wird auch die "Datenkonsistenz" ausführlich erklärt. In der TIA Hilfe ganz unten "Siehe auch: Abschnitt Datenkonsistenz"
Zu den Namen der SFC:
Wenn z.B. Konsistenz "Gesamt" > 4 Bytes projektiert ist, dann muss mit SFC14 DPRD_DAT/SFC15 DPWR_DAT auf die Peripherieadressen zugegriffen werden.
Alternativ einfach auf E/A-Adressen projektieren, die im Prozessabbild PAE/PAA liegen, dann kümmert sich das Betiebssystem um die korrekten Peripheriezugriffe, und im Anwenderprogramm kann man beliebig auf EB910, EW910, ED910 oder auch E912.3 zugreifen, dito für Ausgänge.