Ок. выходной массив собирается в битовое слово и уходит на МУ110(у меня пунктик насчёт входов/выходов ПЛК)..
глянь пож вот это:
глюк только на этом фб, но CASE 1: ведь работает.Код: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




Ответить с цитированием
