Доброго дня!
Уже несколько дней бьюсь над простейшей задачей - опросить 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
Прошу помочь!