Step 7 DP/DP Koppler Adressen Bereich

Also muss ich schon angeben was wohin soll im Baustein
Das wollte ich damit noch sagen..

L PEW 1600
T DB65.DBW 0
L PEW 1602
T DB65.DBW 2
L PEW 1604
T "DB Transfer_1 <=> X&X".REC.int1
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

Bin eigentlich nicht schwer von Begriff aber das hmm...

Danke für eure Hilfe und Gedult!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier werden Wörter verwendet und keine Bytes der Grund wäre die Konsistenz oder ab 4Bytes muss man mit den SFC Bausteinen arbeiten!
Ich sag ja, du hast das Thema Konsistenz noch nicht verstanden und kann dir nur empfehlen mal in die Hilfe zu schauen.

Diese habe ich im Baustein nicht gefunden SFC14/15
"DB Transfer_2 <=> X&X".REC.int2
Aufgrund der Sonderzeichen im Namen gehe ich fest davon aus, du nutzt TIA. Die Bausteine findest du rechts im Katalog. Dort nach dem Namen der Bausteine suchen ( Und bevor jetzt die Frage kommt, wie heißen die denn => steht in der Hilfe alles drin ).
 
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#24100513_59599507
(2) DT#2024-10-05-14:00:00.050 = 16#24100514_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#24100514_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 ... :cool: 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.
 
Zurück
Oben