Примерно так?
Код:
IF port_opened=0 THEN
		settings.Port:=0;	(*номер порта RS-485*)
		settings.dwBaudRate:=baud_rate; 	(*скорость*)
		settings.byParity:=0;
		settings.dwTimeout:=0;
		settings.byStopBits:=0;
		settings.dwBufferSize:=0;
		settings.dwScan:=0;
END_IF

(*открываем COM-порт*)

com_service1(enable:=(port_opened=0), settings:=settings, task:=open_tsk);

(*если COM-порт открыт, пепреходим к приему и передаче данных*)

IF com_service1.Ready THEN
			port_opened:=2;
END_IF

IF (port_opened=2) THEN

Buffer[1].0:=out1;
...
Buffer[0].7:=out16;

		send_modbus(
				enable:=enabl, (*резрешение работы блока*)
				mode:=mb_rtu, (*режим передачи*)
				DevAddr:=slave_addr, (*адрес*)
				FirstAddr:=50, (*номер первого регистра*)
				quantity:=16, (*количество записываемых регистров*)
				ComHandle:=settings.Port, (*номер СОМ-порта*)
				TimeOut:=TimeOut, (*таймаут, естессно*)
				buffer:=buffer, (*ну буфер же*)
				Complete=>cmpl, (*копировать признак завершения операции*)
				Exception=>err, (*копируем регистр ошибок*)
				RegCnt=>DataSize); (*кол-во записанных байтов*)
END_IF
Где-то что-то напутал, индикатор rs-485 теперь не загорается. Пойду разберу экибану, надо адрес перепроверить.