да я выставлял там состояния нужных мне вентиляторов но выходы управляющие вентиляторами самопроизвольно включаются и мигают без какого либо сигнала на входе ФБ TFans32
Вид для печати
да я выставлял там состояния нужных мне вентиляторов но выходы управляющие вентиляторами самопроизвольно включаются и мигают без какого либо сигнала на входе ФБ TFans32
скажу глупую вещь - значит в алгоритме где-то косяк
Уважаемый alexval2006
Начните с 2 вентиляторов и 2 наборов.
Если предложенный алгоритм будет работать правильно, то вышеприведенное будет работать абсолютно так же.
FUNCTION_BLOCK TFan
...//тоже самое
FUNCTION_BLOCK TFans2
VAR_INPUT
Di1,Di2:BOOL; //!!кол-во выходов=CNTSET
END_VAR
VAR_OUTPUT
Do1,Do2,Do3,Do4 : BOOL; //!!кол-во выходов=CNTFAN*2
END_VAR
VAR_CONST
CNTSET:byte:=2;
CNTFAN:byte:=2;
END_VAR
VAR
Set:ARRAY[1..CNTSET] OF DWORD:= 2#??, 2#?? // 2 набора
Fan:ARRAY[1..CNTFAN] OF TFan;
i:byte;
State: DWORD;
PDi,PStart,PStop:POINTER TO BOOL;
END_VAR
*************
State:=0;
PDi:=ADR(Di1);
FOR i:=1 TO CNTSET DO
State:= SEL(PDi^,State,State OR Set[i]);
PDi:=PDi+1;
END_FOR
PStart:=ADR(Do1);
PStop:=ADR(Do2);
FOR i:=1 TO CNTFAN DO
Fan[i](
PT:=T#5s,
State:=EXTRACT(State,i-1),
Start=> PStart^,
Stop=>PStop^
);
PStart:=PStart+2;
PStop:=PStop+2;
END_FOR
Так вообще надо ?
Откуда берутся 160 входов ?
есть 4 механизма нории у каждого есть определенное количество маршрутов например EL1_START1 - EL1_START36 EL2_START1 - EL2_START54 и тп общее количество всех маршрутов 160штук в разных маршрутах участвует разные механизмы и разные вентиляторы при этом одни и те же вентиляторы могут использоваться одновременно в маршрутах двух механизмов к примеру EL1_START1 и EL2_START3 то есть 1й маршрут нории №1 и 3й маршрут нории №2
все нормально, огромное спасибо товарищу Валенку то что доктор прописал. Абсолютно точно уловили смысл того что мне было нужно. Теперь просто увеличу значения констант и получаю нужное количество входов и выходов красота.
За спасибо - спасибо.
Откуда 160 входов физически берется ? :eek:
И куда 64 выхода физически улетает ?
Может передать указатели на массивы и их размеры ?
Аккуратно, если будете вручную набивать Di/о ;)Цитата:
просто увеличу значения констант
Ну попробую объяснить еще раз. Есть 4 основных механизма нории (вертикальные транспортёры) с каждым из них может работать любой механизм элеватора то есть ленточные транспортеры перекидные клапана и задвижки допустим зерно поступает с авто приёма по ленточному транспортёру №1 через перекидной клапан №4 на норию №1 далее через перекидной клапан №1 на поворотный круг №1 далее на ленточный транспортер №15 и с него в силос №256 вот это пример одного маршрута также с маршрутом включаться соответствующие вентиляторы аспирации. В зависимости от маршрута выбранного в данный момент могут меняться механизмы используемые в нем допустим если будем брать с жд приемки то номер начального транспортера поменяться на 9 ну или сыпать на другой верхний транспортер например тр №12 чтобы попасть в другой силос нория являвшийся основным механизмом вокруг которого собирается маршрут. Маршрутов у нории много например у нории №2 их 54 штуки сигналы к запуску аспирации это программные переменённые говорящие о запуске выбранного маршрута у нории №2 это EL2_START1-EL2_START54. Ну а выходы это вентиляторы их довольно много на этажах с 1 по 3 их 17 штук на этажах с 4-8 их 20 штук почему 32 выхода а не 20 или 17 запас на расширение позже думают добавить несколько штук вентиляторов ну как то так.Цитата:
Откуда 160 входов физически берется ?
И куда 64 выхода физически улетает ?
Да ещё одновременно могут работать до 4х маршрутов потому что нории всего 4 штуки.
какие это даст преимущества?Цитата:
Может передать указатели на массивы и их размеры ?
всё уже работаетЦитата:
Аккуратно, если будете вручную набивать Di/о
Извините - не догоняю.
Так ? :
1.Есть N (4) норий
Как они включаются ?
Нории автономны друг от друга ?
2.Есть M (32) вентиляторов (?)
Пуск/стоп - раздельные импульсы.
Нужен режим авто(см.ниже) и ручной.
3.Для каждой нории есть набор маршрутов из K (160) вариантов (?)
Как активируются маршруты ? В каком порядке ?
4.Каждый маршрут - это список необходимых ему вентиляторов (?)
Есть обратная связь по аварии от вентиляторов ? Аварийные действия ?
Где и как расположены физические реле для пуска/стопа вентиляторов ?
Наборы маршрутов и списки вентиляторов - оперативные ?
Нории автономны друг от друга это 4 отдельных механизма (вертикальных транспортёра)Цитата:
1.Есть N (4) норий
Как они включаются ?
Нории автономны друг от друга ?
включаться они функциональным блоком кстати к созданию которого вы приложили свою руку
Код:FUNCTION_BLOCK EL (* Управление Норией *)
VAR_INPUT
auto : BOOL; (* Автоматический режим работы *)
man_start,
man_stop : BOOL; (* Экранные кнопки СТАРТ и СТОП *)
auto_start,
auto_stop : BOOL; (* Сигналы в режиме автомат СТАРТ и СТОП *)
sens_reidi : BOOL; (* Включение (обратная связь ?) *)
sens_sped : BOOL; (* Контроль скорости *)
sens_podpor : BOOL; (* Подпор продуктом *)
sens_tok : BOOL; (* Контроль токовой нагрузки электродвигателя *)
reset : BOOL; (* Сигнал сброса аварии *)
time_sped : TIME; (* уставка времени для таймера аварии скорости механизма *)
time_podpor : TIME; (* уставка времени для таймера аварии подпора механизма *)
END_VAR
VAR_OUTPUT
out : BOOL; (* Выходы на пускатель *)
fAlarm : WORD; (* Флаг аварий *)
END_VAR
VAR
step : (stop, start, alarm); (* Состояние управляющего процесса *)
timer_reidi : TON; (* Контроль включения *)
timer_sped : TON; (* Контроль скорости *)
timer_podpor : TON; (* Контроль по подпору продуктом *)
RTRIG_auto_start: R_TRIG;
RTRIG_auto_stop: R_TRIG;
END_VAR
(*********************************************)
CASE step OF
stop:
timer_reidi(in:=FALSE);
timer_sped(in:=FALSE);
timer_podpor(in:=FALSE);
fAlarm := Ok;
RTRIG_auto_start(CLK:=auto_start);
step := SEL( SEL( auto, RTRIG_auto_start.Q, man_start), step, start);
start:
timer_reidi(in:= NOT sens_reidi, pt:=T#1s, Q=> fAlarm.xReidi );
timer_sped(in:=NOT sens_sped, pt:=time_sped, Q=> fAlarm.xSped );
timer_podpor(in:=sens_podpor, pt:=time_podpor, Q=> fAlarm.xPodpor );
fAlarm.xTok := sens_tok;
RTRIG_auto_stop(CLK:=auto_stop);
step := SEL(man_stop OR RTRIG_auto_stop.Q, step, stop);
step := SEL(fAlarm <> Ok, step, alarm);
alarm :
step := SEL(reset AND NOT sens_tok, step, stop);
END_CASE
out := step=start;
опять же функциональный блокЦитата:
2.Есть M (32) вентиляторов (?)
Пуск/стоп - раздельные импульсы.
Нужен режим авто(см.ниже) и ручной.
а фб уже даёт команду на модули Вывода и получает информацию о механизме из модулей ввода все режимы ручной автомат есть в ФБ.Код:FUNCTION_BLOCK CULER (*Функциональный блок для управления ВЕНТИЛЯТОРОМ*)
VAR_INPUT
auto : BOOL; (* Автоматический режим работы *)
man_start,
man_stop : BOOL; (* Экранные кнопки СТАРТ и СТОП *)
auto_start,
auto_stop : BOOL; (* Сигналы в режиме автомат СТАРТ и СТОП *)
sens_reidi : BOOL; (* Включение (обратная связь ?) *)
reset : BOOL; (* Сигнал сброса аварии *)
END_VAR
VAR_OUTPUT
out : BOOL; (* Выходы на пускатель *)
fAlarm : WORD; (* Флаг аварий *)
RTRIG_auto_start: R_TRIG;
RTRIG_auto_stop: R_TRIG;
END_VAR
VAR
step : (stop, start, alarm); (* Состояние управляющего процесса *)
timer_reidi : TON; (* Контроль включения *)
END_VAR
(***********************************)
CASE step OF
stop:
timer_reidi(in:=FALSE);
fAlarm := Ok;
RTRIG_auto_start(CLK:=auto_start);
step := SEL( SEL( auto, RTRIG_auto_start.Q, man_start), step, start);
start:
timer_reidi(in:= NOT sens_reidi, pt:=T#2s, Q=> fAlarm.xReidi );
RTRIG_auto_stop(CLK:=auto_stop);
step := SEL(man_stop OR RTRIG_auto_stop.Q, step, stop);
step := SEL(fAlarm <> Ok, step, alarm);
alarm :
step := SEL(reset, step, stop);
END_CASE
out := step=start;
Немного не так в массиве лежат варианты для всех норий для каждой своиЦитата:
3.Для каждой нории есть набор маршрутов из K (160) вариантов (?)
Как активируются маршруты ? В каком порядке ?
маршруты запускаться из скады. В скаде выбираем нужный маршрут из выпадающего списка в результате получаем его номер и отправляем его в ПЛК там он попадает в программу обработки маршрутов там смотрим какой нории это маршрут и по cese выбираем нужный псле того как получили сигнал старт маршрута из скады запускаем маршрут после предпускового сигнала.Код:(*нория №1-1*)
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
2#00000000000000000001000000000001,
(*нория №1-11*)
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
2#00000000000000000001000000001000,
(*нория №2-1*)
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
2#00000000000000000010000000000001,
(*нория №2-19*)
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
2#00000000000000000010000000000010,
каждый маршрут это не только список вентиляторов но и список транспортеров перекидных клапанов и задвижек.Цитата:
4.Каждый маршрут - это список необходимых ему вентиляторов (?)
Есть обратная связь по аварии от вентиляторов ? Аварийные действия ?
Где и как расположены физические реле для пуска/стопа вентиляторов ?
По аварии есть обратные связи их обрабатывает Фб вентилятора приводил выше
реле расположены в щитовых на этажах ими управляют модули вывода му110-16к сигнал о работе собирают модули ввода мв110-16дн