Код:PROGRAM PLC_PRG VAR get1_modbus: MB_RD_HOLD_REGS; t: DWORD; a: WORD:=0; port_opened: BYTE:=0; Settings: COMSERICE.SysCom.COM_Settings; SettingsEx: COMSERICE.SysCom.COM_SettingsEx; Com_service1:Com_service; master1: BYTE:=1; enabl: BOOL; TimeOut: TIME:=T#50ms; Buffer: ARRAY [0..255] of byte; Complete: BOOL; err: INT; Exception: INT; ByteCnt: WORD; cmpl: BOOL; x: WORD; DataSize: BYTE; TempWateOutMB: REAL; ptr_D: POINTER TO BYTE; END_VARПЛК 304, всегда ошибка 255 и светодиод не мигает на обмене.Код:IF port_opened=0 THEN Settings.sPort:=1; Settings.ulBaudRate:=115200; Settings.byParity:=0; Settings.ulTimeOut:=0; Settings.byStopBits:=0; Settings.ulBufferSize:=0; SettingsEx.byByteSize:=8; SettingsEx.bBinary:=TRUE; COM_SERVICE1(Enable:=(port_opened=0), Settings:=Settings, (*sets_ex:=Setting*****) Task:=OPEN_TSK); END_IF IF COM_SERVICE1.ready THEN port_opened:=2; END_IF IF port_opened=2 THEN get1_modbus( Enable:=enabl, Mode:=MB_RTU, DevAddr:=1, FirstAddr:=4, Quantity:=2, ComHandle:=Settings.sPort, TimeOut:=TimeOut, Buffer:=Buffer, Complete=>cmpl, Exception=>err, ByteCnt=>DataSize); IF cmpl THEN IF err=0 THEN ptr_D:=ADR(TempWateOutMB); 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 END_IF IF enabl=FALSE THEN enabl:=TRUE; END_IF IF err<>0 THEN enabl:=FALSE; END_IF END_IF