(* MOXA NPort 5130A *)
TCP_MOXA(xEnable := NOT timertcp.Q, sIpAddr := '192.168.128.37', uiPort := 4001, tTimeout:=T#500MS);
IF TCP_MOXA.xDone OR TCP_MOXA.xError THEN
TCP_MOXA.xEnable := FALSE;
END_IF;
timertcp(IN := (TCP_MOXA.xDone OR TCP_MOXA.xError) AND NOT timertcp.Q, PT:= T#1S);
(* опрос расходомера (канал №1) *)
MB_US800_4_AI1(
xExecute := TCP_MOXA.xActive,
hConnection := TCP_MOXA.hConnection,
tTimeout := T#100MS, // Время ожидания ответа
xIsRtuOverTcpMode := TRUE, // Протокол MODBUS RTU over TCP
usiUnitId := 4, // Адрес устройства в сети RS485
eFuncCode := 16#03, // Функция MODBUS RTU
uiDataAddr := 16#200, // Начальный обрабатываемый регистр
uiDataCount := 4, // Количество обрабатываемых регистров
pData := ADR(awAI1),
szSize := SIZEOF(awAI1)
);
IF MB_US800_4_AI1.xDone OR MB_US800_4_AI1.xError THEN
MB_US800_4_AI1(xExecute := FALSE); // После выполнения блока, его надо сбросить
GVL.voc2a_F_fwd := WORD2_TO_REAL(awAI1[1], awAI1[2]); // Читаем Параметр1
GVL.voc2a_Fs_fwd := WORD2_TO_UDINT(awAI1[3], awAI1[4]); // Читаем Параметр2
END_IF;