TheBadFrog
Level-2
- Beiträge
- 12
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hi arbeite gerade an einem FB in dem von einem DP Slave über SFC 14 bzw. 15 jeweils 10 Byte Daten gelesen und geschrieben werden sollen!
Bin mir mit der Byteoffset nicht sicher.
Ist der Rest so OK?
//konsistent vom PAE einlesen(SFC 14)
CALL "DPRD_DAT" // Aufruf zur konsistenten Datenübertragung
LADDR :=#InputAdr // Eingangs-Byteaddresse
RET_VAL:=#Error
RECORD :=#InputData // Zeiger auf Ziel
LAR1 P##InputData // Adr. des Any-Pointer in AR1
T W [AR1,P#2.0] // Wiederholungsfaktor (10 Byte)
L W#16#1002 // Kennung Typ Any / Datentyp Byte
T W [AR1,P#0.0] // in Zielpointer eintragen
L DINO // Instanzdatenbausteinnummer (DIB) laden
T W [AR1,P#4.0] // und in Zielpointer eintragen
TAR2 // Basisadresse im Instanz-DB in den Akku holen
L DW#16#???? // Byteoffset ausmaskieren
UD
L P##Ablage // Adresse Zieldatenbereich laden
+D // Byteoffset addieren
T D [AR1,P#6.0] // Pointer auf Zieldatenbereich im Any-P eintragen
Ich will vom SFC 14 die Daten (10Byte 2 Byte Status und 8 Byte Nutzdaten) in die Ablage kopieren,
wobei ich Input Data im FB als Any Pointer angelegt habe.Ablage ist ein Array
Leider scheint im oberen Programmteil etwas nicht OK zu sein, die Datenbytes erscheinen leider nicht in meinem Programm !
Die 2 Bytes Status bzw. Control muss ich dann noch auflösen!
Byte 1, da benoötige ich die einzelnen Bits
Byte 2 sind die Sende bzw. Empfangsdatenlänge
Bin mir mit der Byteoffset nicht sicher.
Ist der Rest so OK?
//konsistent vom PAE einlesen(SFC 14)
CALL "DPRD_DAT" // Aufruf zur konsistenten Datenübertragung
LADDR :=#InputAdr // Eingangs-Byteaddresse
RET_VAL:=#Error
RECORD :=#InputData // Zeiger auf Ziel
LAR1 P##InputData // Adr. des Any-Pointer in AR1
T W [AR1,P#2.0] // Wiederholungsfaktor (10 Byte)
L W#16#1002 // Kennung Typ Any / Datentyp Byte
T W [AR1,P#0.0] // in Zielpointer eintragen
L DINO // Instanzdatenbausteinnummer (DIB) laden
T W [AR1,P#4.0] // und in Zielpointer eintragen
TAR2 // Basisadresse im Instanz-DB in den Akku holen
L DW#16#???? // Byteoffset ausmaskieren
UD
L P##Ablage // Adresse Zieldatenbereich laden
+D // Byteoffset addieren
T D [AR1,P#6.0] // Pointer auf Zieldatenbereich im Any-P eintragen
Ich will vom SFC 14 die Daten (10Byte 2 Byte Status und 8 Byte Nutzdaten) in die Ablage kopieren,
wobei ich Input Data im FB als Any Pointer angelegt habe.Ablage ist ein Array
Leider scheint im oberen Programmteil etwas nicht OK zu sein, die Datenbytes erscheinen leider nicht in meinem Programm !
Die 2 Bytes Status bzw. Control muss ich dann noch auflösen!
Byte 1, da benoötige ich die einzelnen Bits
Byte 2 sind die Sende bzw. Empfangsdatenlänge
Zuletzt bearbeitet: