NachRad - 2017-03-08

Тут такая штука. переменные типа DWORD не передаются по модбас. в то время, как 1-регистовые работают на чтение и запись. в итоге оставил передачу только 2-х регистровых значений: в программе переменные заполняются, значения в них меняются, но при опросе - все адреса содержат нули.
вот так организованна передача данных из массива по регистрам:

PROGRAM MB_SERVER_PRG
VAR
.......
MBSlaveImage : ARRAY [0..1] OF MB_RTU_SIMPLE_SLAVE_DATA_DESCR :=
((eType := MBS_holding_REGISTER, wItemsCount:=82, wMbOffset:=0 ),)
(eType := MBS_input_REGISTER, wItemsCount:=30, wMbOffset:=0 ),
(eType := MBS_Coil, wItemsCount:=2, wMbOffset:=0 );

END_VAR


IF finit THEN

(MBSlaveImage[0].DataAddr := ADR(awSlaveRegisters[0]);)
MBSlaveImage[0].DataAddr := ADR(awSlaveRegistersD[0]);
MBSlaveImage[1].DataAddr := ADR(abySlaveCoils[0]);

END_IF
...............

использую СРМ713, связь пытаюсь установить через NIM742.

 

Related

Talk.ru: 1