Ок. выходной массив собирается в битовое слово и уходит на МУ110(у меня пунктик насчёт входов/выходов ПЛК)..

глянь пож вот это:

Код:
FUNCTION_BLOCK startGroupSelect
    
    VAR_INPUT
        inputTimer               :BOOL;
        locRem                   :UDINT;
        inputButton              :ARRAY [0..7] OF BOOL;
        inputRem                 :ARRAY [0..7] OF BOOL;
    END_VAR
    
    VAR_OUTPUT 
        invertorSupplayON        :BOOL;
        routerSupplayON          :BOOL;
        outputGroup                :ARRAY [0..7] OF BOOL;
        i                                  :UDINT;
    END_VAR
    
    VAR 
        ASICtimeDelay             :TIME := T#20S;
        inventorTimeDelay        :TIME := T#10S;
        timerStartGroup0         :SYS.TON;
        timerStartGroup1         :SYS.TON;
        timerStartGroup2         :SYS.TON;
        timerStartGroup3         :SYS.TON;
        timerStartGroup4         :SYS.TON;
        timerStartGroup5         :SYS.TON;
        timerStartGroup6         :SYS.TON;
        timerStartGroup7         :SYS.TON;
        timerStopGroup0          :SYS.TOF;
        timerStopGroup1          :SYS.TOF;
        timerStopGroup2          :SYS.TOF;
        timerStopGroup3          :SYS.TOF;
        timerStopGroup4          :SYS.TOF;
        timerStopGroup5          :SYS.TOF;
        timerStopGroup6          :SYS.TOF;
        timerStopGroup7          :SYS.TOF;
        invertorSupplay            :SYS.TOF;
        routerSupplay              :SYS.TOF;
    END_VAR
    
CASE locRem OF
    // Управление с кнопок панели ПР205
    
    0: 
       FOR i:=0 TO 7 BY 1 DO
           outputGroup[i] := inputButton[i];
           routerSupplayON := inputButton[i];
           invertorSupplay(I:=inputButton[i], T:=inventorTimeDelay, Q=>invertorSupplayON);
       END_FOR
       
              
    // Управление по таймерам
    
    1: 
       routerSupplayON := inputTimer;
       routerSupplay(I:=inputTimer, T:=ASICtimeDelay);
       timerStartGroup0(I:=routerSupplay.Q, T:=T#0S);
       timerStartGroup1(I:=routerSupplay.Q, T:=T#5S);
       timerStartGroup2(I:=routerSupplay.Q, T:=T#10S);
       timerStartGroup3(I:=routerSupplay.Q, T:=T#15S);
       timerStartGroup4(I:=routerSupplay.Q, T:=T#20S);
       timerStartGroup5(I:=routerSupplay.Q, T:=T#25S);
       timerStartGroup6(I:=routerSupplay.Q, T:=T#30S);
       timerStartGroup7(I:=routerSupplay.Q, T:=T#35S);
       timerStopGroup0(I:=timerStartGroup0.Q,T:=T#0S, Q=>outputGroup[0]);
       timerStopGroup1(I:=timerStartGroup1.Q,T:=T#5S, Q=>outputGroup[1]);
       timerStopGroup2(I:=timerStartGroup2.Q,T:=T#10S, Q=>outputGroup[2]);
       timerStopGroup3(I:=timerStartGroup3.Q,T:=T#15S, Q=>outputGroup[3]);
       timerStopGroup4(I:=timerStartGroup4.Q,T:=T#20S, Q=>outputGroup[4]);
       timerStopGroup5(I:=timerStartGroup5.Q,T:=T#25S, Q=>outputGroup[5]);
       timerStopGroup6(I:=timerStartGroup6.Q,T:=T#30S, Q=>outputGroup[6]);
       timerStopGroup7(I:=timerStartGroup7.Q,T:=T#35S, Q=>outputGroup[7]);
       invertorSupplay(I:=outputGroup[7], T:=inventorTimeDelay, Q=>invertorSupplayON);
       
    // Управление с диспетчеризации
    
    2: 
       FOR i:=0 TO 7 BY 1 DO
           outputGroup[i] := inputRem[i];
           routerSupplayON := inputButton[i];
           invertorSupplay(I:=inputButton[i], T:=inventorTimeDelay, Q=>invertorSupplayON);
       END_FOR
       
       ELSE
           outputGroup [0] := FALSE;
           outputGroup [1] := FALSE;
           outputGroup [2] := FALSE;
           outputGroup [3] := FALSE;
           outputGroup [4] := FALSE;
           outputGroup [5] := FALSE;
           outputGroup [6] := FALSE;
           outputGroup [7] := FALSE;
END_CASE
END_FUNCTION_BLOCK
глюк только на этом фб, но CASE 1: ведь работает.