PHP код:
PROGRAM Read_AI_All
VAR
// ФБ Открытие коммуникационного блока
fbTCPClient_AI1 : ocl.TCP_Client;
fbTCPClient_AI2 : ocl.TCP_Client;
fbTCPClient_AI3 : ocl.TCP_Client;
fbTCPClient_AI4 : ocl.TCP_Client;
fbTCPClient_AI5 : ocl.TCP_Client;
fbTCPClient_AI6 : ocl.TCP_Client;
fbTCPClient_AI7 : ocl.TCP_Client;
fbTCPClient_AI8 : ocl.TCP_Client;
fbTCPClient_AI9 : ocl.TCP_Client;
fbTCPClient_AI10 : ocl.TCP_Client;
fbTCPClient_AI11 : ocl.TCP_Client;
fbTCPClient_AI12 : ocl.TCP_Client;
// ФБ опроса модуля
fbMV210_101_AI1 : ocl.MB_TcpRequest; // МВ210-101 AI1 (каналы 1 - 8)
fbMV210_101_AI2 : ocl.MB_TcpRequest; // МВ210-101 AI2 (каналы 1 - 8)
fbMV210_101_AI3 : ocl.MB_TcpRequest; // МВ210-101 AI3 (каналы 1 - 8)
fbMV210_101_AI4 : ocl.MB_TcpRequest; // МВ210-101 AI4 (каналы 1 - 8)
fbMV210_101_AI5 : ocl.MB_TcpRequest; // МВ210-101 AI5 (каналы 1 - 8)
fbMV210_101_AI6 : ocl.MB_TcpRequest; // МВ210-101 AI6 (каналы 1 - 8)
fbMV210_101_AI7 : ocl.MB_TcpRequest; // МВ210-101 AI7 (каналы 1 - 8)
fbMV210_101_AI8 : ocl.MB_TcpRequest; // МВ210-101 AI8 (каналы 1 - 8)
fbMV210_101_AI9 : ocl.MB_TcpRequest; // МВ210-101 AI9 (каналы 1 - 8)
fbMV210_101_AI10 : ocl.MB_TcpRequest; // МВ210-101 AI10 (каналы 1 - 8)
fbMV210_101_AI11 : ocl.MB_TcpRequest; // МВ210-101 AI11 (каналы 1 - 8)
fbMV210_101_AI12 : ocl.MB_TcpRequest; // МВ210-101 AI12 (каналы 1 - 8)
// Данные с модулей МВ210-101
Read_AI1 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI1 (каналы 1 - 8)
Read_AI2 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI2 (каналы 1 - 8)
Read_AI3 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI3 (каналы 1 - 8)
Read_AI4 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI4 (каналы 1 - 8)
Read_AI5 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI5 (каналы 1 - 8)
Read_AI6 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI6 (каналы 1 - 8)
Read_AI7 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI7 (каналы 1 - 8)
Read_AI8 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI8 (каналы 1 - 8)
Read_AI9 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI9 (каналы 1 - 8)
Read_AI10 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI10 (каналы 1 - 8)
Read_AI11 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI11 (каналы 1 - 8)
Read_AI12 : ARRAY [1..8] OF Read_AI; // Данные с модуля МВ210-101 AI12 (каналы 1 - 8)
tTimeout_TCPClient : TIME := T#400MS;
tTimeOut_TCPRequest : TIME := T#400MS;
i : INT;
iAI_Number : INT := 1;
END_VAR
====================================================================
CASE iAI_Number OF
1: //Опрос модуля AI1
fbTCPClient_AI1
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.4',
uiPort := 502
);
IF fbTCPClient_AI1.xActive THEN
fbMV210_101_AI1
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI1.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI1),
szSize := SIZEOF(Read_AI1)
);
IF fbMV210_101_AI1.xDone THEN
A1_AI1_LT1_1 := Read_AI1[1].rValue;
A1_AI1_TT1_1_01 := Read_AI1[2].rValue;
A1_AI1_TT1_1_02 := Read_AI1[3].rValue;
A1_AI1_TT1_1_03 := Read_AI1[4].rValue;
A1_AI1_LT1_2 := Read_AI1[5].rValue;
A1_AI1_TT1_2_01 := Read_AI1[6].rValue;
A1_AI1_TT1_2_02 := Read_AI1[7].rValue;
A1_AI1_TT1_2_03 := Read_AI1[8].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI1(xExecute := FALSE);
// Закрытие ТСР-соединения
//fbTCPClient_AI1(xEnable := FALSE);
//iAI_Number := 2;
//iAI_Number := 3;
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI1.xDone OR fbMV210_101_AI1.xError THEN
fbMV210_101_AI1.xExecute := FALSE;
//iAI_Number := 2;
iAI_Number := 3;
END_IF
END_IF
IF fbTCPClient_AI1.xError THEN
fbTCPClient_AI1(xEnable := FALSE);
//iAI_Number := 2;
iAI_Number := 3;
END_IF
//iAI_Number := 2;
//iAI_Number := 3;
2: // Опрос Модуля AI2
fbTCPClient_AI2
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.5',
uiPort := 502
);
IF fbTCPClient_AI2.xActive THEN
fbMV210_101_AI2
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI2.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI2),
szSize := SIZEOF(Read_AI2)
);
IF fbMV210_101_AI2.xDone THEN
A1_AI2_LT1_3 := Read_AI2[1].rValue;
A1_AI2_TT1_3_01 := Read_AI2[2].rValue;
A1_AI2_TT1_3_02 := Read_AI2[3].rValue;
A1_AI2_TT1_3_03 := Read_AI2[4].rValue;
RGS4.A1_AI2_LT1_4 := Read_AI2[5].rValue;
RGS4.A1_AI2_TT1_4_01 := Read_AI2[6].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI2(xExecute := FALSE);
//fbTCPClient_AI2(xEnable := FALSE);
//iAI_Number := 3;
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI2.xDone OR fbMV210_101_AI2.xError THEN
fbMV210_101_AI2.xExecute := FALSE;
//iAI_Number := 3;
END_IF
END_IF
IF fbTCPClient_AI2.xError THEN
fbTCPClient_AI2(xEnable := FALSE);
//iAI_Number := 3;
END_IF
iAI_Number := 3;
3:
fbTCPClient_AI3
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.6',
uiPort := 502
);
IF fbTCPClient_AI3.xActive THEN
fbMV210_101_AI3
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI3.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI3),
szSize := SIZEOF(Read_AI3)
);
IF fbMV210_101_AI3.xDone THEN
NS1.A1_AI3_PIT_01 := Read_AI3[1].rValue;
NS2.A1_AI3_PIT_02 := Read_AI3[2].rValue;
NS2.A1_AI3_PIT_03 := Read_AI3[3].rValue;
NS2.A1_AI3_PIT_04 := Read_AI3[5].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI3(xExecute := FALSE);
//iAI_Number := 4;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI3.xDone OR fbMV210_101_AI3.xError THEN
fbMV210_101_AI3.xExecute := FALSE;
//iAI_Number := 4;
END_IF
END_IF
IF fbTCPClient_AI3.xError THEN
fbTCPClient_AI3(xEnable := FALSE);
//iAI_Number := 4;
END_IF
//iAI_Number := 4;
iAI_Number := 5;
4:
fbTCPClient_AI4
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.7',
uiPort := 502
);
IF fbTCPClient_AI4.xActive THEN
fbMV210_101_AI4
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI4.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI4),
szSize := SIZEOF(Read_AI4)
);
IF fbMV210_101_AI4.xDone THEN
NS1.A1_AI4_TT1_01 := Read_AI4[1].rValue;
NS1.A1_AI4_TT1_02 := Read_AI4[2].rValue;
NS1.A1_AI4_TT1_03 := Read_AI4[3].rValue;
NS1.A1_AI4_TT1_04 := Read_AI4[4].rValue;
A1_AI4_TT1_05 := Read_AI4[5].rValue;
A1_AI4_TT1_06 := Read_AI4[6].rValue;
A1_AI4_TT1_07 := Read_AI4[7].rValue;
A1_AI4_TT1_08 := Read_AI4[8].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI4(xExecute := FALSE);
//iAI_Number := 5;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI4.xDone OR fbMV210_101_AI4.xError THEN
fbMV210_101_AI4.xExecute := FALSE;
//iAI_Number := 5;
END_IF
END_IF
IF fbTCPClient_AI4.xError THEN
fbTCPClient_AI4(xEnable := FALSE);
//iAI_Number := 5;
END_IF
iAI_Number := 5;
5:
fbTCPClient_AI5
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.8',
uiPort := 502
);
IF fbTCPClient_AI5.xActive THEN
fbMV210_101_AI5
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI5.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI5),
szSize := SIZEOF(Read_AI5)
);
IF fbMV210_101_AI5.xDone THEN
A1_AI5_TT1_09 := Read_AI5[1].rValue;
A1_AI5_TT1_10 := Read_AI5[2].rValue;
NS2.A1_AI5_TT1_11 := Read_AI5[3].rValue;
NS2.A1_AI5_TT1_12 := Read_AI5[4].rValue;
NS2.A1_AI5_TT1_13 := Read_AI5[5].rValue;
NS2.A1_AI5_TT1_14 := Read_AI5[6].rValue;
NS2.A1_AI5_TT1_15 := Read_AI5[7].rValue;
NS2.A1_AI5_TT1_16 := Read_AI5[8].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI5(xExecute := FALSE);
//iAI_Number := 6;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI5.xDone OR fbMV210_101_AI5.xError THEN
fbMV210_101_AI5.xExecute := FALSE;
//iAI_Number := 6;
END_IF
END_IF
IF fbTCPClient_AI5.xError THEN
fbTCPClient_AI5(xEnable := FALSE);
//iAI_Number := 6;
END_IF
iAI_Number := 6;
6:
fbTCPClient_AI6
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.9',
uiPort := 502
);
IF fbTCPClient_AI6.xActive THEN
fbMV210_101_AI6
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI6.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI6),
szSize := SIZEOF(Read_AI6)
);
IF fbMV210_101_AI6.xDone THEN
Other.A1_AI6_TT1_18 := Read_AI6[1].rValue;
Other.A1_AI6_TT1_19 := Read_AI6[2].rValue;
//Other.A1_AI6_TT1_20 := Read_AI6[3].rValue;
A1_AI2_LT1_3 := Read_AI6[3].rValue;
A1_AI2_TT1_3_01 := Read_AI6[4].rValue;
A1_AI2_TT1_3_02 := Read_AI6[5].rValue;
A1_AI2_TT1_3_03 := Read_AI6[6].rValue;
A1_AI4_TT1_05 := Read_AI6[7].rValue;
A1_AI4_TT1_06 := Read_AI6[8].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI6(xExecute := FALSE);
//iAI_Number := 7;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI6.xDone OR fbMV210_101_AI6.xError THEN
fbMV210_101_AI6.xExecute := FALSE;
//iAI_Number := 7;
END_IF
END_IF
IF fbTCPClient_AI6.xError THEN
fbTCPClient_AI6(xEnable := FALSE);
//iAI_Number := 7;
END_IF
iAI_Number := 7;
7:
fbTCPClient_AI7
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.10',
uiPort := 502
);
IF fbTCPClient_AI7.xActive THEN
fbMV210_101_AI7
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI7.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI7),
szSize := SIZEOF(Read_AI7)
);
IF fbMV210_101_AI7.xDone THEN
Other.A1_AI7_TT2_01 := Read_AI7[1].rValue;
A1_AI7_TT2_02 := Read_AI7[2].rValue;
A1_AI7_TT2_03 := Read_AI7[3].rValue;
A1_AI7_TT2_04 := Read_AI7[4].rValue;
A1_AI4_TT1_07 := Read_AI7[5].rValue;
A1_AI4_TT1_08 := Read_AI7[6].rValue;
NS1.A1_AI4_TT1_01 := Read_AI7[7].rValue;
NS1.A1_AI4_TT1_02 := Read_AI7[8].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI7(xExecute := FALSE);
//iAI_Number := 8;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI7.xDone OR fbMV210_101_AI7.xError THEN
fbMV210_101_AI7.xExecute := FALSE;
//iAI_Number := 8;
END_IF
END_IF
IF fbTCPClient_AI7.xError THEN
fbTCPClient_AI7(xEnable := FALSE);
//iAI_Number := 8;
END_IF
iAI_Number := 8;
8:
fbTCPClient_AI8
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.11',
uiPort := 502
);
IF fbTCPClient_AI8.xActive THEN
fbMV210_101_AI8
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI8.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI8),
szSize := SIZEOF(Read_AI8)
);
IF fbMV210_101_AI8.xDone THEN
RGS4.A1_AI8_TT3_01 := Read_AI8[1].rValue;
A1_AI8_TT3_02 := Read_AI8[2].rValue;
A1_AI8_TT3_03 := Read_AI8[3].rValue;
A1_AI8_TT3_04 := Read_AI8[4].rValue;
Other.A1_AI8_TT3_05 := Read_AI8[5].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI8(xExecute := FALSE);
//iAI_Number := 9;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI8.xDone OR fbMV210_101_AI8.xError THEN
fbMV210_101_AI8.xExecute := FALSE;
//iAI_Number := 9;
END_IF
END_IF
IF fbTCPClient_AI8.xError THEN
fbTCPClient_AI8(xEnable := FALSE);
//iAI_Number := 9;
END_IF
iAI_Number := 9;
9:
fbTCPClient_AI9
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.12',
uiPort := 502
);
IF fbTCPClient_AI9.xActive THEN
fbMV210_101_AI9
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI9.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI9),
szSize := SIZEOF(Read_AI9)
);
IF fbMV210_101_AI9.xDone THEN
Other.A1_AI9_TT4_01 := Read_AI9[1].rValue;
Other.A1_AI9_TT4_02 := Read_AI9[2].rValue;
RGS4.A1_AI2_LT1_4 := Read_AI9[6].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI9(xExecute := FALSE);
//iAI_Number := 10;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI9.xDone OR fbMV210_101_AI9.xError THEN
fbMV210_101_AI9.xExecute := FALSE;
//iAI_Number := 10;
END_IF
END_IF
IF fbTCPClient_AI9.xError THEN
fbTCPClient_AI9(xEnable := FALSE);
//iAI_Number := 10;
END_IF
iAI_Number := 10;
10:
fbTCPClient_AI10
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.13',
uiPort := 502
);
IF fbTCPClient_AI10.xActive THEN
fbMV210_101_AI10
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI10.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI10),
szSize := SIZEOF(Read_AI10)
);
IF fbMV210_101_AI10.xDone THEN
Other.A1_AI10_TT1_21 := Read_AI10[1].rValue;
RGS4.A1_AI2_TT1_4_01 := Read_AI10[2].rValue;
NS1.A1_AI4_TT1_03 := Read_AI10[3].rValue;
NS1.A1_AI4_TT1_04 := Read_AI10[4].rValue;
Other.A1_AI10_TT1_25 := Read_AI10[5].rValue;
Other.A1_AI10_TT1_26 := Read_AI10[6].rValue;
Other.A1_AI10_TT1_27 := Read_AI10[7].rValue;
// Сброс блока после выполнения
//fbMV210_101_AI10(xExecute := FALSE);
//iAI_Number := 11;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI10.xDone OR fbMV210_101_AI10.xError THEN
fbMV210_101_AI10.xExecute := FALSE;
//iAI_Number := 11;
END_IF
END_IF
IF fbTCPClient_AI10.xError THEN
fbTCPClient_AI10(xEnable := FALSE);
//iAI_Number := 11;
END_IF
//iAI_Number := 11;
iAI_Number := 1;
11:
fbTCPClient_AI11
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.14',
uiPort := 502
);
IF fbTCPClient_AI11.xActive THEN
fbMV210_101_AI11
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI11.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI11),
szSize := SIZEOF(Read_AI11)
);
IF fbMV210_101_AI11.xDone THEN
// Сброс блока после выполнения
//fbMV210_101_AI11(xExecute := FALSE);
//iAI_Number := 12;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI11.xDone OR fbMV210_101_AI11.xError THEN
fbMV210_101_AI11.xExecute := FALSE;
//iAI_Number := 12;
END_IF
END_IF
IF fbTCPClient_AI11.xError THEN
fbTCPClient_AI11(xEnable := FALSE);
//iAI_Number := 12;
END_IF
iAI_Number := 12;
12:
fbTCPClient_AI12
(
xEnable := TRUE,
tTimeOut := tTimeout_TCPClient,
sIPAddr := '192.168.51.15',
uiPort := 502
);
IF fbTCPClient_AI12.xActive THEN
fbMV210_101_AI12
(
xExecute := TRUE,
tTimeOut := tTimeOut_TCPRequest,
usiRetry := 3,
hConnection := fbTCPClient_AI12.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 255,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 4000,
uiDataCount := 24,
pData := ADR(Read_AI12),
szSize := SIZEOF(Read_AI12)
);
IF fbMV210_101_AI12.xDone THEN
// Сброс блока после выполнения
//fbMV210_101_AI12(xExecute := FALSE);
//iAI_Number := 1;
//fbTCPClient_AI3(xEnable := FALSE);
END_IF
// Сброс блока после выполнения или в случае ошибки
IF fbMV210_101_AI12.xDone OR fbMV210_101_AI12.xError THEN
fbMV210_101_AI12.xExecute := FALSE;
//iAI_Number := 1;
END_IF
END_IF
IF fbTCPClient_AI12.xError THEN
fbTCPClient_AI12(xEnable := FALSE);
//iAI_Number := 1;
END_IF
iAI_Number := 1;
END_CASE