Код:
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
Код:
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
ПЛК 304, всегда ошибка 255 и светодиод не мигает на обмене.