fbTon3(IN :=TRUE, PT := T#2S);//(IN должно становится TRUE после выполнения всего вложеного кода ,НО становится TRUE сразу
fbr_trig3(CLK:=fbTon3.Q);
IF fbr_trig3.Q THEN
fbTon3(IN :=FALSE);
ReadWorksErrorsFank:=TRUE;
END_IF;
IF ReadWorksErrorsFank THEN
CASE eState1 OF
STATE_MB1.CONNECTING:
fbTcpClient1
(
xEnable := TRUE ,
tTimeout := T#5S,
sIpAddr := '192.168.0.6',
uiPort :=502
);
IF fbTcpClient1.xActive THEN
fbWRRequest1 (xExecute := FALSE);
eState1 := STATE_MB1.WR;
ELSIF fbTcpClient1.xError THEN
fbTcpClient1(xEnable := FALSE);
eState1 := STATE_MB1.CONNECTING;
END_IF
STATE_MB1.WR:
fbWRRequest1
(
xExecute :=TRUE,
tTimeout :=T#1500MS,
usiRetry :=5,
hConnection := fbTcpClient1.hConnection,
xIsRtuOverTcpMode :=FALSE,
usiUnitId :=1,
eFuncCode :=OCL.MB_FC.READ_INPUT_REGISTERS,
uiDataAddr:=24, // Начальный регистр
uiDataCount:=8,// колво регистров в запросе
pData:=ADR (awReadData),
szSize:=SIZEOF (awReadData)
);
ErrorsFank1.Errors_Fan_WORD[0]:=awReadData[0];
ErrorsFank1.Errors_Fan_WORD[1]:=awReadData[1];
ErrorsFank1.Errors_Fan_WORD[2]:=awReadData[2];
ErrorsFank1.Errors_Fan_WORD[3]:=awReadData[3];
WorksFank1.Works_Fan_WORD[0]:=awReadData[4];
WorksFank1.Works_Fan_WORD[1]:=awReadData[5];
WorksFank1.Works_Fan_WORD[2]:=awReadData[6];
WorksFank1.Works_Fan_WORD[3]:=awReadData[7];
IF fbWRRequest1.xDone THEN
fbWRRequest1 (xExecute := FALSE);
fbTcpClient1(xEnable := FALSE);
eState1 := STATE_MB1.CONNECTING1;
ELSE
eState1 := STATE_MB1.CONNECTING;
END_IF
STATE_MB1.CONNECTING1:
fbTcpClient2
(
xEnable := TRUE ,
tTimeout := T#5S,
sIpAddr := '192.168.0.7',
uiPort :=502
);
IF fbTcpClient2.xActive THEN
fbWRRequest2 (xExecute := FALSE);
eState1 := STATE_MB1.WR1;
ELSIF fbTcpClient2.xError THEN
fbTcpClient2(xEnable := FALSE);
eState1 := STATE_MB1.CONNECTING1;
END_IF
STATE_MB1.WR1:
fbWRRequest2
(
xExecute :=TRUE,
tTimeout :=T#1500MS,
usiRetry :=5,
hConnection := fbTcpClient2.hConnection,
xIsRtuOverTcpMode :=FALSE,
usiUnitId :=1,
eFuncCode :=OCL.MB_FC.READ_INPUT_REGISTERS,
uiDataAddr:=24, // Начальный регистр
uiDataCount:=8,// колво регистров в запросе
pData:=ADR (awReadData),
szSize:=SIZEOF (awReadData)
);
ErrorsFank2.Errors_Fan_WORD_1[0]:=awReadData[0];
ErrorsFank2.Errors_Fan_WORD_1[1]:=awReadData[1];
ErrorsFank2.Errors_Fan_WORD_1[2]:=awReadData[2];
ErrorsFank2.Errors_Fan_WORD_1[3]:=awReadData[3];
WorksFank2.Works_Fan_WORD_1[0]:=awReadData[4];
WorksFank2.Works_Fan_WORD_1[1]:=awReadData[5];
WorksFank2.Works_Fan_WORD_1[2]:=awReadData[6];
WorksFank2.Works_Fan_WORD_1[3]:=awReadData[7];
IF fbWRRequest2.xDone THEN
fbWRRequest2 (xExecute := FALSE);
fbTcpClient2(xEnable := FALSE);
eState1 := STATE_MB1.CONNECTING2;
ELSE
eState1 := STATE_MB1.CONNECTING1;
END_IF
STATE_MB1.CONNECTING2:
fbTcpClient3
(
xEnable := TRUE ,
tTimeout := T#5S,
sIpAddr := '192.168.0.8',
uiPort :=502
);
IF fbTcpClient3.xActive THEN
fbWRRequest3 (xExecute := FALSE);
eState1 := STATE_MB1.WR2;
ELSIF fbTcpClient3.xError THEN
fbTcpClient3(xEnable := FALSE);
eState1 := STATE_MB1.CONNECTING2;
END_IF
STATE_MB1.WR2:
fbWRRequest3
(
xExecute :=TRUE,
tTimeout :=T#1500MS,
usiRetry :=5,
hConnection := fbTcpClient3.hConnection,
xIsRtuOverTcpMode :=FALSE,
usiUnitId :=1,
eFuncCode :=OCL.MB_FC.READ_INPUT_REGISTERS,
uiDataAddr:=24, // Начальный регистр
uiDataCount:=8,// колво регистров в запросе
pData:=ADR (awReadData),
szSize:=SIZEOF (awReadData)
);
ErrorsFank3.Errors_Fan_WORD_2[0]:=awReadData[0];
ErrorsFank3.Errors_Fan_WORD_2[1]:=awReadData[1];
ErrorsFank3.Errors_Fan_WORD_2[2]:=awReadData[2];
ErrorsFank3.Errors_Fan_WORD_2[3]:=awReadData[3];
WorksFank3.Works_Fan_WORD_2[0]:=awReadData[4];
WorksFank3.Works_Fan_WORD_2[1]:=awReadData[5];
WorksFank3.Works_Fan_WORD_2[2]:=awReadData[6];
WorksFank3.Works_Fan_WORD_2[3]:=awReadData[7];
IF fbWRRequest3.xDone THEN
fbWRRequest3 (xExecute := FALSE);
fbTcpClient3(xEnable := FALSE);
ReadWorksErrorsFank:=FALSE;
fbTon3(IN :=FALSE);
ELSE
eState1 := STATE_MB1.CONNECTING2;
END_IF
END_CASE
END_IF