PLC210 - опрос 2ТРМ1 по Modbus
Доброго дня!
Уже несколько дней бьюсь над простейшей задачей - опросить 2ТРМ1 (свежий, новый) с ПЛК210.
Пересмотрел все видео по теме, читал документацию - не работает. В ответ всегда тайм-аут. ТРМ рабочий, его опросил с компа через преобразователь без проблем. На ПЛК пробовал оба интерфейса. Светодиод RS на ТРМ мигает в момент запроса и всё.
Версия OCL 3.5.11.7.
Настройки на трм: rtu, 10, 9.6, 8n1.
Сделал отдельный чистый проект, там только код для опроса:
Код:
PROGRAM PLC_PRG
VAR
iStateCOM: BOOL := 0;
fbComControl: OCL.COM_Control; // ФБ настройки и открытия порта COM
fbMBRead: OCL.MB_SerialRequest;
arrAI1: ARRAY [0..1] OF WORD;
VAL: REAL;
iError: INT := 0;
END_VAR
Код:
IF NOT iStateCOM THEN
fbComControl
(
xEnable := TRUE,
udiComPort := 5,
udiBaudrate := 9600,
udiByteSize := 8,
eParity := OCL.COM_PARITY.NONE,
eStopBit := OCL.COM_STOPBIT.ONE
);
IF fbComControl.xDone THEN
iStateCOM := 1;
END_IF
END_IF
IF iStateCom THEN
fbMBRead
(
xExecute := fbComControl.xActive,
tTimeout := T#200MS,
usiRetry := 0,
hCom := fbComControl.hCom,
xIsAsciiMode := FALSE ,
usiSlaveId := 10,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4105,
uiDataCount := 2,
pData := ADR(arrAI1),
szSize := SIZEOF(arrAI1)
);
IF fbMBRead.xDone OR fbMBRead.xError THEN
iError := fbmbread.eError;
VAL := OCL.WORD2_TO_REAL(arrAI1[0], arrAI1[1], FALSE);
fbMBRead(xExecute := FALSE);
END_IF
END_IF
Прошу помочь!