Код:
FUNCTION_BLOCK set_cul_march_EL
VAR_INPUT
in: WORD;
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: 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, 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,
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,
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#2s);
fan: WORD;(*32 bita*)
i: WORD;(*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,
(*32*)
далее одно и тоже непоказано для экономии места
(*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[0]:=in.0;
mech[1]:=in.1;
mech[2]:=in.2;
mech[3]:=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);