Андрей_ТМЗ
06.06.2024, 12:39
Здравствуйте. Опрашиваю модули МВ210-101, МВ210-212 и запись в модули МУ210-402 с помощью библиотеки OWENCommunication. В чем суть проблемы: при загрузке проекта в контроллер, модули опрашиваются только один раз. Нет циклического опроса. При этом опрос проходит без ошибок, данные получаю. Опрос организовал согласно "CoDeSys V3.5. Настройка обмена по протоколу Modbus. Раздел 5.9.3" при небольших изменениях. Возможно я что-то не учел. Прошу помочь, так как в моем понимании все должно работать. Опрос модулей и запись в модули разделены на 3 POU. Привожу код опроса модулей МВ210-101.
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
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