-> Hier kostenlos registrieren
Hallo,
Ich habe ein Modbus-Profil, das für Register 40149 mit U32-Bit beschreibbar ist.
Ich verwende den WagoLibModbus_IP_01, als Modbus API in Codesys.
Mein Ansatz ist folgender:
Transmit_Data: ARRAY [0..1] OF WORD;
(* Datentyp S32 bzw DINT in 2 MODBUS-Register konvertieren *)
di:=-2000;
Transmit_Data[0] := DWORD_TO_WORD(SHR(DINT_TO_DWORD(di),16));
Transmit_Data[1] := DINT_TO_WORD(di);
KOMMU_E2(
xCONNECT:= TRUE ,
strIP_ADDRESS:= '192.168.2.13',
wPORT:= 502 ,
bUNIT_ID:= 3,
bFUNCTION_CODE:= 16#10,
wWRITE_ADDRESS:= 40149 ,
wWRITE_QUANTITY:= 2,
ptSEND_DATA:= ADR(Transmit_Data),
xSEND:= xSend
);
[FONT=Times New Roman,serif][FONT=Arial,sans-serif](* erneutes Senden, nachdem der vorherige Sendevorgang für Zeit x abgeschlossen ist *)[/FONT]
[FONT=Times New Roman,serif][FONT=Arial,sans-serif]TON1(IN:= NOT xSend[/FONT][/FONT]
[FONT=Times New Roman,serif][FONT=Arial,sans-serif], PT:= T#10s);[/FONT][/FONT]
[FONT=Times New Roman,serif][FONT=Arial,sans-serif]xSend:= TON1.Q;[/FONT][/FONT]
[/FONT]
Funktioniert aber leider nicht. Der Datentyp DINT das 32 Bit Unsigned ist kann ich nicht in zwei Word-Arrays transformieren und das Modbus-Gerät akzeptiert es auch nicht.
Ideen ?
Ich habe ein Modbus-Profil, das für Register 40149 mit U32-Bit beschreibbar ist.
Ich verwende den WagoLibModbus_IP_01, als Modbus API in Codesys.
Mein Ansatz ist folgender:
Transmit_Data: ARRAY [0..1] OF WORD;
(* Datentyp S32 bzw DINT in 2 MODBUS-Register konvertieren *)
di:=-2000;
Transmit_Data[0] := DWORD_TO_WORD(SHR(DINT_TO_DWORD(di),16));
Transmit_Data[1] := DINT_TO_WORD(di);
KOMMU_E2(
xCONNECT:= TRUE ,
strIP_ADDRESS:= '192.168.2.13',
wPORT:= 502 ,
bUNIT_ID:= 3,
bFUNCTION_CODE:= 16#10,
wWRITE_ADDRESS:= 40149 ,
wWRITE_QUANTITY:= 2,
ptSEND_DATA:= ADR(Transmit_Data),
xSEND:= xSend
);
[FONT=Times New Roman,serif][FONT=Arial,sans-serif](* erneutes Senden, nachdem der vorherige Sendevorgang für Zeit x abgeschlossen ist *)[/FONT]
[FONT=Times New Roman,serif][FONT=Arial,sans-serif]TON1(IN:= NOT xSend[/FONT][/FONT]
[FONT=Times New Roman,serif][FONT=Arial,sans-serif], PT:= T#10s);[/FONT][/FONT]
[FONT=Times New Roman,serif][FONT=Arial,sans-serif]xSend:= TON1.Q;[/FONT][/FONT]
[/FONT]
Funktioniert aber leider nicht. Der Datentyp DINT das 32 Bit Unsigned ist kann ich nicht in zwei Word-Arrays transformieren und das Modbus-Gerät akzeptiert es auch nicht.
Ideen ?