Код:
IF ComServiceCOM2.Ready THEN
CASE Step OF
0: IF MV110_8ABoks1 THEN Step:=1; ELSE Step:=2;END_IF
1: TON(IN:= Step=1, PT:=T#1000MS , Q=> Enable, ET=> );
MV110_8aAdr5(
Enable:= Enable,
Mode:= MB_RTU,
DevAddr:= 5,
FirstAddr:= 0,
Quantity:= 47,
ComHandle:= ComServiceCOM2.Handle,
TimeOut:= TimeOut,
Buffer:= Buffer,
Complete=> Complete,
Exception=> ErrorMV110_8aAdr5,
ByteCnt=> DataSize);
IF Complete (*если установлен признак завершения операции, то *)
THEN
IF ErrorMV110_8aAdr5=0 THEN BufferDataM1AI:=Buffer;END_IF
IF ErrorMV110_8aAdr5<>0 AND AlarmMV110_8aAdr5=FALSE THEN AmountMV110_8aAdr5:=AmountMV110_8aAdr5+1; ELSE AmountMV110_8aAdr5:=0;END_IF
IF AmountMV110_8aAdr5>SetAmount THEN AlarmMV110_8aAdr5:=TRUE;END_IF
MV110_8aAdr5(Enable:= FALSE, Buffer:=Buffer);
TON(IN:=FALSE);
Step:=2; (*переходим к выполнению следующего ФБ*)
END_IF
2: IF MV110_8ABoks2 THEN Step:=3; ELSE Step:=4;END_IF
3: TON(IN:= Step=3, PT:=T#1000MS , Q=> Enable, ET=> );
MV110_8aAdr6(
Enable:= Enable,
Mode:= MB_RTU,
DevAddr:= 6,
FirstAddr:= 0,
Quantity:= 47,
ComHandle:= ComServiceCOM2.Handle,
TimeOut:= TimeOut,
Buffer:= Buffer,
Complete=> Complete,
Exception=> ErrorMV110_8aAdr6,
ByteCnt=> DataSize);
IF Complete (*если установлен признак завершения операции, то *)
THEN
IF ErrorMV110_8aAdr6=0 THEN BufferDataM2AI:=Buffer;END_IF
IF ErrorMV110_8aAdr6<>0 AND AlarmMV110_8aAdr6=FALSE THEN AmountMV110_8aAdr6:=AmountMV110_8aAdr6+1; ELSE AmountMV110_8aAdr6:=0;END_IF
IF AmountMV110_8aAdr6>SetAmount THEN AlarmMV110_8aAdr6:=TRUE;END_IF
MV110_8aAdr6(Enable:= FALSE, Buffer:=Buffer);
TON(IN:=FALSE);
Step:=4; (*переходим к выполнению следующего ФБ*)
END_IF
4: IF MV110_2AC THEN Step:=5; ELSE Step:=6;END_IF
5: TON(IN:= Step=5, PT:=T#1000MS , Q=> Enable, ET=> );
MV110_8acAdr7(
Enable:= Enable,
Mode:= MB_RTU,
DevAddr:= 100,
FirstAddr:= 264,
Quantity:= 6,
ComHandle:= ComServiceCOM2.Handle,
TimeOut:= TimeOut,
Buffer:= Buffer,
Complete=> Complete,
Exception=> ErrorMV110_2acAdr7,
ByteCnt=> DataSize);
IF Complete (*если установлен признак завершения операции, то *)
THEN
IF ErrorMV110_2acAdr7=0 THEN BufferDataM3AI:=Buffer;END_IF
IF ErrorMV110_2acAdr7<>0 AND AlarmMV110_2acAdr7=FALSE THEN AmountMV110_8acAdr7:=AmountMV110_8acAdr7+1; ELSE AmountMV110_8acAdr7:=0;END_IF
IF AmountMV110_8acAdr7>SetAmount THEN AlarmMV110_2acAdr7:=TRUE;END_IF
MV110_8acAdr7(Enable:= FALSE, Buffer:=Buffer);
TON(IN:=FALSE);
Step:=6; (*переходим к выполнению следующего ФБ*)
END_IF
6: Step:=0;
Enable:=FALSE;
END_CASE
END_IF
Варианты кончились....., осталась только прошивка модуля......