CODESYS 3.5 на СПК107М1
блин... сорри, админ пусть убъёт тему или как-то перенести в нужный раздел..
Вид для печати
Добрый день всем. Подскажите, как можно в одну переменную ( INT) записывать разные значения в зависимости от входных условий? В ПЛК это команда MOVE или MOV.
Спасибо. Понял, что штатно - никак. Сваял макрос под свои хотелки.
Доброго дня. Подскажите, как лучше решить следующую задачу:
Есть 10 самотщелкивающихся кнопок(входы в реле) и соответственно 10 выходов(нагрузок).
Нажатие одной кнопки 1 должно запускать выход 1. При этом выход должен работать до нажатия любой другой кнопки. Нажатая следующей кнопка должна запустить свой выход и выключить предыдущую нагрузку. при этом очередность нажатия на копки(запуск нагрузок) ничем не регулируется и может осуществляться в любом порядке, соответственно любая кнопка должна включать свой выход и выключать любой из других 9 возможно работающих
Такое уже делали, в одной из тем этот вопрос уже обсуждали!
Если одновременно нажато не более одной кнопки, можно так сделать:
Вложение 69962
Были варианты и с работой при более одной нажатой кнопке, в смысле, какая кнопка последней нажалась, то и активируется выход, соответствующий этой кнопке, короче определитесь, как Вам лучше!
Вот здесь посмотрите в посте#617:
https://owen.ru/forum/showthread.php?t=12691&page=62
Вот расширил макрос до 16 входов-выходов:
Вложение 69971
Функционал даже немного выше, чем написал, в смысле, я бы это обозвал как 16-стабильный Т-триггер, в смысле, входа работают как у Т-триггера! Если не до конца понятно как это работает(алгоритм), в теме, что ссылку дал - всё понятно описано!
Я и раньше выкладывал даже 32-стабильные триггеры, в смысле, там много вариантов, как их лучше сделать и со временем делаешь их иначе, чем раньше!
Вот, убрал лишний функционал, теперь 16-стабильный просто триггер:
Вложение 69972
Товарищ, видимо никак не может определится, что он хочет, в смысле, там может быть много всяких нюансов! Согласен с ним, спешка здесь ни к чему, в смысле, семь раз отмерь, один раз отрежь!
Сделал ФБ на ST,
кнопки могут быть нажаты, нажаты частично, отжаты все или часть, всё равно срабатывает последняя нажатая кнопка Вложение 69968
При желании можно и R_Trig -10 штук, внутрь ФБ запихнуть. В проект переносится копипастом.
При одновременном нажатии, срабатывает самая старшая кнопка.
Если надо, при включении нажатую кнопку, вместо N, x:udint:=1; присвойте 2, будет включаться на 1 выход.
Код:function_block Perecl // Переключатель на 10 независимых кнопок
var_input //объявление входных переменных
I1,I2,I3,I4,I5,I6,I7,I8,I9,I10: bool;
end_var
var_output //объявление выходных переменных
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10: bool;
end_var
var //объявление локальных переменных
N, x:udint:=1;
end_var
if i1 and x<>2 then x:=2; N:=1; N.1:=TRUE; end_if
if i2 and x<>4 then x:=4; N:=1; N.2:=TRUE; end_if
if i3 and x<>8 then x:=8; N:=1; N.3:=TRUE; end_if
if i4 and x<>16 then x:=16; N:=1; N.4:=TRUE; end_if
if i5 and x<>32 then x:=32; N:=1; N.5:=TRUE; end_if
if i6 and x<>64 then x:=64; N:=1; N.6:=TRUE; end_if
if i7 and x<>128 then x:=128; N:=1; N.7:=TRUE; end_if
if i8 and x<>256 then x:=256; N:=1; N.8:=TRUE; end_if
if i9 and x<>512 then x:=512; N:=1; N.9:=TRUE; end_if
if i10 and x<>1024 then x:=1024; N:=1; N.10:=TRUE; end_if
Q1:=N.1; Q2:=N.2;Q3:=N.3;Q4:=N.4;Q5:=N.5; Q6:=N.6; Q7:=N.7;Q8:=N.8;Q9:=N.9;Q10:=N.10;
end_function_block
Доброго Вам дня!
Благодарю.
Этого ранее не видел.(найти не смог) То что надо.!
Вот здесь посмотрите в посте#617:
https://owen.ru/forum/showthread.php?t=12691&page=62
Буду смотреть и разбираться в алгоритме.
Свое решение у меня есть. Но ввиду того ,что только начинаю ЛикБез оно топорное