Код:
(*Устанавливаем настройки COM-порта*)
IF port_opened=0 THEN
		Settings.Port:=com_num;               (*номер COM-порта*)
		Settings.dwBaudRate:= 115200;    (*скорость*)
		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  );
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF COM_SERVICE1.ready THEN
	port_opened:=2;
	Buffer_out := ADR(Buffer1);
END_IF

IF port_opened=2 THEN (*Удачно проинициализировали*)

CASE master1 OF

0: (* функция 03 инт  - ФБ считывает значение параметра  типа int из прибора с адресом162 в регистр с номером 48 по протоколу Modbus-RTU*)

get1_modbus(
	Enable:= NOT get1_modbus.Complite,			(* разрешение работы блока *)
	UnitID:=8 ,				(*адрес*)
	REF:=2 ,				(*номер регистра*)
	Count:=1,				(*количество регистров*)
	Handle:=Settings.Port , (*номер COM-порта*)
	Delay:=TimeOut , 		(*Таймаут T#50ms*)
	PNTFF:=Buffer_out,			(* буфер данных *)
	Complite=>cmpl ,		(* скопировать признак завершения операции *)
	ErrCode=>err ,			(* скопировать регистр ошибок *)
	 );		(*кол-во считанных байтов *)
(*если установлен признак завершения операции, то *)
IF cmpl THEN
	IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
		n:=n+1;
		(*x:=BYTE_TO_WORD(BUFFER_out[1]) OR SHL(BYTE_TO_WORD(BUFFER_out[0]),8);*)
	ELSE
		errcount:=errcount +1;
	END_IF
	master1 := 3;
END_IF


2:  get1_modbus(
	Enable:= NOT get1_modbus.Complite,  (*разрешение работы блока *)
	UnitID:=48 ,				(*адрес*)
	REF:=50 ,				(*номер регистра*)
	Count:=1,				(*количество регистров*)
	Handle:=Settings.Port , (*номер COM-порта*)
	DELAY:=TimeOut , 		(*Таймаут T#50ms*)
	PNTFF:=Buffer_out,			(* буфер данных *)
	Complite=>cmpl ,		(* скопировать признак завершения операции *)
	ErrCode=>err ,			(* скопировать регистр ошибок *)
	 );		(*кол-во считанных байтов *)
(*если установлен признак завершения операции, то *)
IF cmpl THEN
	IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
		n:=n+1;
	 (*	x:=BYTE_TO_WORD(BUFFER_out[1]) OR SHL(BYTE_TO_WORD(BUFFER_out[0]),8);*)
	ELSE
		errcount:=errcount +1;
	END_IF
	master1 := 3;
END_IF


3:
 TimeOut2(IN :=TRUE,PT:=T#100ms);
 TimeOut2;
 IF TimeOut2.Q THEN
	g:=g+1;
	master1 := 0;
 	(*IF g/2 = TRUNC(g/2) THEN
		 master1 := 2; 
	END_IF *)
	TimeOut2.IN := FALSE;
	TimeOut;
END_IF

END_CASE

END_IF
Буфер инициализировал, ошибка 60 теперь какая то постоянно. Modbus RTU в бибке? Переключателя не увидел.