Fan:ARRAY[0..31] OF TFan;
TFAN - это тип или экземпляр. Должен быть тип
Вид для печати
Fan:ARRAY[0..31] OF TFan;
TFAN - это тип или экземпляр. Должен быть тип
был неправ не понял что нужно создать два Фб создал TFan
но сейчас ругаться вот на что ошибка 4012 несоответствие параметра N в EXTRACT невозможно преобразовать INT в BYTE.
Код:FUNCTION_BLOCK TFan
VAR_INPUT
State:BOOL;
PT:TIME;
END_VAR
VAR_OUTPUT
Start,Stop:BOOL;
END_VAR
VAR
tStart,tStop:TP;
END_VAR
(*************************)
tStart(IN:=State,PT:=PT,Q=>Start);
tStop(IN:=NOT State,PT:=PT,Q=>Stop);
Код:FUNCTION_BLOCK TFans32
VAR_INPUT
(*Если на вход можно массив пихнуть, то даже проще.*)
Di1, Di2, Di3, Di4, Di5, Di6, Di7, Di8, Di9, Di10, Di11, Di12, Di13, Di14,
Di15, Di16, Di17, Di18, Di19, Di20, Di21, Di22, Di23, Di24, Di25, Di26,
Di27, Di28, Di29, Di30, Di31, Di32, Di33, Di34, Di35, Di36, Di37, Di38,
Di39, Di40, Di41, Di42, Di43, Di44, Di45, Di46, Di47, Di48, Di49, Di50,
Di51, Di52, Di53, Di54, Di55, Di56, Di57, Di58, Di59, Di60, Di61, Di62,
Di63, Di64: BOOL;
Di65, Di66, Di67, Di68, Di69, Di70, Di71, Di72, Di73, Di74, Di75, Di76,
Di77, Di78, Di79, Di80, Di81, Di82, Di83, Di84, Di85, Di86, Di87, Di88,
Di89, Di90, Di91, Di92, Di93, Di94, Di95, Di96, Di97, Di98, Di99, Di100,
Di101, Di102, Di103, Di104, Di105, Di106, Di107, Di108, Di109, Di110,
Di111, Di112, Di113, Di114, Di115, Di116, Di117, Di118, Di119, Di120,
Di121, Di122, Di123, Di124, Di125, Di126, Di127, Di128: BOOL;
Di129, Di130, Di131, Di132, Di133, Di134, Di135, Di136, Di137, Di138,
Di139, Di140, Di141, Di142, Di143, Di144, Di145, Di146, Di147, Di148,
Di149, Di150, Di151, Di152, Di153, Di154, Di155, Di156, Di157, Di158,
Di159, Di160: BOOL;
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
Set:ARRAY[1..160] OF DWORD:=
(*В этом массиве хранитса состояние вентиляторов
для каждого из 160 маршрутов норий №1-4*)
(*16*)
2#00000000000000000000000000000000,
2#00000000000000000000000000000000,
................................................................
2#00000000000000000000000000000000;
Fan:ARRAY[0..31] OF TFan:=(PT:=T#5s);
i:INT;
State: DWORD;
PDi, PStart, PStop:POINTER TO BOOL;
END_VAR
(***********************************************)
State:=0;
PDi:=ADR(Di1);
FOR i:=1 TO 160 DO
State:= SEL(PDi^,State,State OR Set[i]);
PDi:=PDi+1;
END_FOR
PStart:=ADR(Do1);
PStop:=ADR(Do2);
FOR i:=0 TO 31 DO
Fan[i](
State:=EXTRACT(State,i),
Start=> PStart^,
Stop=>PStop^
);
PStart:=PStart+2;
PStop:=PStop+2;
END_FOR
ну сделайте i типа int.
У Вас всего 160 наборов. Пока еще. :)
ну в обще то уже сделаноЦитата:
i:INT;
пардон. byte.
как то работает не так хоть и скомпилировалось взгляните пожалуйста на проект
куда конкретно то смотреть? проект не 2+2=4
в FUNCTION_BLOCK TFans32
Set:ARRAY[1..160] OF DWORD:=
все должны быть нулевыми?
Если на входе ФБ TFans32 все сигналы EL1_START1 EL1_START2 и тп в FALSE то на выходах ФБ TFans32 ничего не должно быть а там какая то свето музыка если на входе ФБ TFans32 EL1_START1 или EL1_START2 TRUE тогда выбираем нужный элемент из массива Set:ARRAY[1..160] OF DWORD:= в котором записано состояние 32 вентиляторов нулями и единицами далее необходимо чтобы если маршрут нории №1 EL1_START1 к примеру включил вентиляторы CUL1_AUTO_START и CUL2_AUTO_START а потом запустили маршрут нории №2 EL2_START2 к примеру включил вентиляторы CUL1_AUTO_START, CUL2_AUTO_START и CUL3_AUTO_START поработали немного выключили маршрут нории №2 EL2_START2 он выключил вентилятор CUL3_AUTO_START а вентиляторы CUL1_AUTO_START и CUL2_AUTO_START оставил включёнными потому что они используются маршрутом нории №1 EL1_START1 ну вот как то так оно должно работать.
не могу осилить этот поток сознания без знаков препинания:)
если проще - что-то включает у вас механизм, параллельно ему должны вкл определенные пропеллеры. номера этих определенных пропеллеров прописываются в массиве set. он у вас полностью нулевой. копайте тут.
p.s. напоминает
"Вместе с тем ясно также, что если при наличии А необходимо существует Б, то и при наличии возможности существования А необходима и возможность существования Б. В самом деле, если возможность Б не необходима, то ничто не мешает, чтобы было возможно, что Б не существует. Допустим, что А возможно. Стало быть, если А возможно, то не вытекало бы ничего не возможного, если бы было принято, что А есть. Тогда и Б необходимо есть. Между тем было предположено, что оно невозможно. Допустим, что Б невозможно. Если же невозможно, чтобы Б было, то необходимо, чтобы и А было невозможно. Но ведь А было возможно, значит, и Б. Итак, если А возможно, то и Б будет возможно, если только отношение между ними таково, что при существовании А необходимо существование Б. Стало быть, если при таком отношении между А и Б существование Б невозможно, если А возможно, то значит, А и Б не будут находиться в том отношении, как было принято; и если при наличии возможности А необходима и возможность Б, то, если есть А, необходимо есть и Б. Ибо утверждение, что необходимо, чтобы Б было возможно, если возможно А, означает, что если, когда и каким образом возможно существование А, тогда и таким же образом необходимо и существование Б."