Код:
PROGRAM PLC_PRG
VAR
	iStateCOM: INT := 0;
	fbComControl: OCL.COM_Control; // ФБ настройки и открытия порта COM
	fbMBRead: OCL.MB_SerialRequest;
	arrAI1: ARRAY [0..1] OF WORD;  
	VAL: REAL;
	iError: INT := 0;
END_VAR
Код:
CASE iStateCOM OF
0:
        fbComControl
	(
		xEnable := TRUE,
		udiComPort := 5,
		udiBaudrate := 9600,
		udiByteSize := 8,
		eParity := OCL.COM_PARITY.NONE,
		eStopBit := OCL.COM_STOPBIT.ONE
	);
        IF fbComControl.xError THEN
		iStateCOM := 2;
                fbComControl(xEnable := FALSE);
	END_IF
	IF fbComControl.xDone THEN
		iStateCOM := 1;
	END_IF

1:
	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[1], arrAI1[0], FALSE);
		fbMBRead(xExecute := FALSE);
                iStateCOM := 2;
	END_IF
2:
                iStateCOM := 0;
END_CASE