Код:
FUNCTION_BLOCK set_cul_march_EL
VAR_INPUT
in: DWORD;
END_VAR
VAR_OUTPUT
Do1, Do2, Do3, Do4, Do5, Do6, Do7, Do8, Do9, Do10, Do11, Do12, Do13, Do14,
Do15, Do16, Do17, Do18, Do19, Do20, Do21, Do22, Do23, Do24, Do25, Do26,
Do27, Do28, Do29, Do30, Do31, Do32, Do33, Do34, Do35, Do36, Do37, Do38,
Do39, Do40, Do41, Do42, Do43, Do44, Do45, Do46, Do47, Do48, Do49, Do50,
Do51, Do52, Do53, Do54, Do55, Do56, Do57, Do58, Do59, Do60, Do61, Do62,
Do63, Do64: BOOL;
END_VAR
VAR
Stop1, Start1, Stop2, Start2, Stop3, Start3, Stop4, Start4, Stop5, Start5, Stop6, Start6,
Stop7, Start7, Stop8, Start8, Stop9, Start9, Stop10, Start10, Stop11, Start11, Stop12,
Start12, Stop13, Start13, Stop14, Start14, Stop15, Start15, Stop16, Start16, Stop17,
Start17, Stop18, Start18, Stop19, Start19, Stop20, Start20, Stop21, Start21, Stop22,
Start22, Stop23, Start23, Stop24, Start24, Stop25, Start25, Stop26, Start26, Stop27,
Start27, Stop28, Start28, Stop29, Start29, Stop30, Start30, Stop31, Start31, Stop32,
Start32, Stop33, Start33, Stop34, Start34, Stop35, Start35, Stop36, Start36, Stop37,
Start37, Stop38, Start38, Stop39, Start39, Stop40, Start40, Stop41, Start41, Stop42,
Start42, Stop43, Start43, Stop44, Start44, Stop45, Start45, Stop46, Start46, Stop47,
Start47, Stop48, Start48, Stop49, Start49, Stop50, Start50:TP:= ( PT := T#5s);
Stop51, Start51, Stop52, Start52, Stop53, Start53, Stop54, Start54, Stop55, Start55,
Stop56, Start56, Stop57, Start57, Stop58, Start58, Stop59, Start59, Stop60, Start60,
Stop61, Start61, Stop62, Start62, Stop63, Start63, Stop64, Start64, Stop65, Start65,
Stop66, Start66, Stop67, Start67, Stop68, Start68, Stop69, Start69, Stop70, Start70,
Stop71, Start71, Stop72, Start72, Stop73, Start73, Stop74, Start74, Stop75, Start75,
Stop76, Start76, Stop77, Start77, Stop78, Start78, Stop79, Start79, Stop80, Start80,
Stop81, Start81, Stop82, Start82, Stop83, Start83, Stop84, Start84, Stop85, Start85,
Stop86, Start86, Stop87, Start87, Stop88, Start88, Stop89, Start89, Stop90, Start90,
Stop91, Start91, Stop92, Start92, Stop93, Start93, Stop94, Start94, Stop95, Start95,
Stop96, Start96, Stop97:TP:= ( PT := T#5s);
Start97, Stop98, Start98, Stop99, Start99, Stop100, Start100, Stop101, Start101,
Stop102, Start102, Stop103, Start103, Stop104, Start104, Stop105, Start105, Stop106,
Start106, Stop107, Start107, Stop108, Start108, Stop109, Start109, Stop110, Start110,
Stop111, Start111, Stop112, Start112, Stop113, Start113, Stop114, Start114, Stop115,
Start115, Stop116, Start116, Stop117, Start117, Stop118, Start118, Stop119, Start119,
Stop120, Start120, Stop121, Start121, Stop122, Start122, Stop123, Start123, Stop124,
Start124, Stop125, Start125, Stop126, Start126, Stop127, Start127, Stop128, Start128
:TP:= ( PT := T#5s);
Stop129, Start129, Stop130, Start130, Stop131, Start131, Stop132, Start132, Stop133,
Start133, Stop134, Start134, Stop135, Start135, Stop136, Start136, Stop137, Start137,
Stop138, Start138, Stop139, Start139, Stop140, Start140, Stop141, Start141, Stop142,
Start142, Stop143, Start143, Stop144, Start144, Stop145, Start145, Stop146, Start146,
Stop147, Start147, Stop148, Start148, Stop149, Start149, Stop150, Start150, Stop151,
Start151, Stop152, Start152, Stop153, Start153, Stop154, Start154, Stop155, Start155,
Stop156, Start156, Stop157, Start157, Stop158, Start158, Stop159, Start159, Stop160,
Start160:TP:= ( PT := T#5s);
fan: DWORD;(*32 bita*)
i: DWORD;(*32 bita*)
mech : ARRAY[1..160] OF BOOL;
setmech : ARRAY[1..160] OF BYTE :=
(*В этом массиве хранитса состояние вентиляторов
для каждого из 160 маршрутов норий №1-4*)
(*16*)
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
остальные одинаковы непоказаны
(*160*)
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
2#00000000000000000000000000000000;
END_VAR
(****************************************************)
fan:=0;
FOR i :=1 TO 160 DO
fan:=SEL( mech[i], fan, fan OR setmech[i] );
END_FOR
mech[1]:=in.0;
mech[2]:=in.1;
mech[3]:=in.2;
mech[4]:=in.3;
Start1(IN := fan.0 OR fan.2, Q =>Do1);
Stop1(IN := NOT fan.0 OR fan.2, Q => Do2);
Start2(IN := fan.1 OR fan.3, Q => Do3);
Stop2(IN := NOT fan.1 OR fan.3, Q => Do4);