Прошу помощи. Не могу наладить работу двух МВ110(2а и 2ас) и ПЛК110-60 по ModBusRTU
Когда одно из устройств опрашивается, то все идет, как пытаюсь два, то второе устройство даже не мигает. Ошибка 255.Подскажите, пожалуйста в чем ошибка.
FUNCTION_BLOCK COM_RS_485_1
VAR_INPUT
END_VAR
VAR_OUTPUT
DAV_SISTEM:REAL;
DAV_SISTEM1: REAL;
END_VAR
VAR
get1_modbus1: MB_RD_HOLD_REGS; (*функция 03 - чтение параметра типа INT*)
get2_modbus2: MB_RD_HOLD_REGS; (*функция 03 - чтение параметра типа INT*)
Buffer: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)
Buffer1: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)
cmpl: BOOL;
port_opened: BYTE := 0;
Init: BOOL; Settings:COMSETTINGS;
com_num: PORTS:=0; (*0 - RS-485, 2 - RS-482-2, 1 - RS-232*)
enabl: BOOL; (*состояние работы блока*)
err: INT; (*номер ошибки*)
TimeOut: TIME:=T#100ms; (*таймаут*)
Exception: BYTE;
DataSize: WORD;
master1: BYTE:= 0;
t: DWORD; (*переменная для организации счетчика*)
A: WORD := 0; (*счетчик*)
COM_SERVICE1: COM_SERVICE;
ptr_R1:POINTER TO BYTE;
ptr_D:POINTER TO BYTE;
ptr_D1:POINTER TO BYTE;

END_VAR
###########################################
t:=t+1;
IF (t MOD 1000)=0 THEN
A := A + 1;
IF A > 9999 THEN
A := 0;
END_IF
END_IF
IF port_opened=0 THEN
Settings.Port:=com_num;
Settings.dwBaudRate:=38400;
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF
COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
IF COM_SERVICE1.ready THEN
port_opened:=2;
END_IF

IF port_opened=2 THEN
CASE master1 OF
0: (* Опрашиваем МВ110-2ас*)
get1_modbus1(
Enable:=enabl ,
Mode:=MB_RTU ,
DevAddr:=2 ,
FirstAddr:=264 ,
Quantity:=2,
ComHandle:=Settings.Port ,
TimeOut:=TimeOut ,
Buffer:=Buffer ,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );


IF cmpl THEN
IF err=0 THEN
ptr_D:=ADR(DAV_SISTEM);
ptr_D^:=buffer[3];
ptr_D:=ptr_D+1;
ptr_D^:=buffer[2];
ptr_D:=ptr_D+1;
ptr_D^:=buffer[1];
ptr_D:=ptr_D+1;
ptr_D^:=buffer[0];
END_IF


IF cmpl THEN
master1:=1;
END_IF


END_IF

1: (* Опрашиваем МВ110-2а*)
get2_modbus2(
Enable:=enabl ,
Mode:=MB_RTU ,
DevAddr:=3 ,
FirstAddr:=4,
Quantity:=2,
ComHandle:=Settings.Port ,
TimeOut:=TimeOut ,
Buffer:=Buffer1 ,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );


IF cmpl THEN

IF err=0 THEN
(* ==> Сюда программа не входит вообще, так как выдает ошибку 255 <<==*)
ptr_D1:=ADR(DAV_SISTEM1);
ptr_D1^:=buffer1[3];
ptr_D1:=ptr_D1+1;
ptr_D1^:=buffer1[2];
ptr_D1:=ptr_D1+1;
ptr_D1^:=buffer1[1];
ptr_D1:=ptr_D1+1;
ptr_D1^:=buffer1[0];
END_IF
master1:=0;


END_IF

END_CASE

IF enabl = FALSE THEN
enabl := TRUE;
END_IF

IF err <> 0 THEN
enabl := FALSE;
END_IF

END_IF