Цитата Сообщение от Евгений Кислов Посмотреть сообщение
Вместо Enable:=FALSE; необходимо вызывать соответствующий ФБ в стиле

MV110_8acAdr7(Enable:= FALSE, Buffer:=Buffer);
Ситуация не изменилась, модуль 2АС зависает...
Код:
IF ComServiceCOM2.Ready THEN 
	
	CASE Step OF
    
    0:  IF MV110_8ABoks1 THEN Step:=1; ELSE Step:=2;END_IF
	1:	Enable:=TRUE;
	    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);
	           Step:=2; (*переходим к выполнению следующего ФБ*)
         END_IF
	
    2:  IF MV110_8ABoks2 THEN Step:=3; ELSE Step:=4;END_IF
	3:	Enable:=TRUE;
	    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);
	           Step:=4; (*переходим к выполнению следующего ФБ*)
         END_IF
	
    4:  IF MV110_2AC THEN Step:=5; ELSE Step:=6;END_IF
	5:	Enable:=TRUE;
	    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);
	           Step:=6; (*переходим к выполнению следующего ФБ*)
         END_IF
	6:   Step:=0;	
	     Enable:=FALSE;
	END_CASE
END_IF