Просмотр полной версии : Имитация уменьшения/увеличения
mast_sup
24.04.2012, 16:10
Всем доброго времени суток. В Codesys совсем недавно, можно сказать зеленый =), мне бы хотелось узнать имеется ли в Codesys имитация увеличения/уменьшения уровня и увеличения/уменьшения температуры (в принципе одно и тоже), в целом уменьшение/увеличение параметра.
В Siemens (Step7 - Wincc), это реализовалась блоком имитация увеличения - INC_W, а уменьшения - DEC_W.
Собственно вопрос, имеется ли такая же реализация в Codesys, и подскажите как реализовать если что ?.
Цель: Имеется емкость, нужно открыть клапан и дождаться наполнения до 80% к примеру, потом открыть клапан2, и дождаться пока уровень опустится до 10%.
В наличии имеется сама Codesys 2.3 и "Режим эмуляции". Контроллера не какого не имеется.
Спасибо за ответ.
P.S
Желателен язык LD или FBD.
В качестве имитатора используйте счетчик CTN ,на счетные входа (+-) подайте импульсы со входов или генератора .
dr_gebbels
24.04.2012, 17:01
самый простой случай:
в визулизации Codesys 2.3 создаете объекты визулизации==>
1) столбчатый индикатор-будет имитировать уровень в емкости-это аналоговый сигнал
2) кнопки вкл/выкл. обоих клапанов- это дискретные сигналы
в свойствах этих объектов визулизации жестко привязываете переменные для переменных 1) и 2)
и останется самая малость ==> создать зависимость (т.е. алгоритм) скорости заполнения
емкости с момента открытия первого клапаночка,
если этого алгоритма НЕ создавать-тогда нужно создать исчо 1 объект визулизации==>
ползунок (вертикальный) -это будет задатчик уровня,который будет имитировать
уровень заполнения емкости==> чтобы проверить работу ==> второго клапаночка.
примерно так.
mast_sup
16.05.2012, 09:20
Спасибо, все попробую, вот тут еще вопрос, как можно мой проект зациклить? ну чтобы работа происходила по кругу.
Работа моя в Codesys 2.3
mast_sup
16.05.2012, 10:04
Не один из ваших 2-х способов не удалось мне реализовать,
rovki счетчик CTn не нашел, другие пробовал, чет не получается, ставил счетчик а как подачу импульса реализовать то? Пробовал R_TRIG и F_TRIG ставить, нечего не куда не идет, и увлечение или уменьшение не происходит.
dr_gebbels в твоем методе вообще чет я нечего не понял, создал столбчатый индикатор, кнопки и все (( приехал..
Опишу вообще весь процесс..
Открывает клапан К1, контролируем уровень L, если L=L1 то да, иначе нет (в этот момент как бы происходит наполнение уровня, L1=8000), потом закрыть клапан К-1, открыть К-2 и контролировать уровень L? Если L=L2 то да, иначе нет (происходит увлечение уровня, L2=12000), далее закрыть клапан К-2, включить мешалку, открыть клапан К-3 и контролировать температуру, если T=Tзад да, иначе нет (идет увлечение температуры Tзад=2000), далее закрыть клапан К-3, установить выдержку времени, контролировать время (ну тут со временем просто все, можно и не думать). далее Отключаем мешалку, открываем К-4 и контролируем уровень L, если L=0 то да, иначе нет (тут идет уменьшение уровня). далее закрыть клапан К-4 и сбросить температуру в 0.
Вот такой нужен в целом процесс.
mast_sup
16.05.2012, 11:37
я вот сделал через Blink что то, но как ему ограничить? Как остановить Blink чтобы при достижении нужного числа в CTU , нарастание прекратилось.
mast_sup
16.05.2012, 11:52
ЗЫ :) неуспел
если честно я на форуме, этот ролик от вас нашел =) , подскажите как прекратить рост в CTU при достижении требуемой величины ?
mast_sup
16.05.2012, 12:02
соединяется? ) хм, ну я на языке LD попробовал конечно поставить катушку сброса, и написать (к примеру L1 (R)) L1 на Reset, но он не сбрасывает. Может можно как то Запретить блинку импульсы подавать ? и тогда набор дальше не будет идти. Притом мне как нужно то, сначала до 8000 набираем, а потом с 8000 до 12000, а как я понял CTU всегда начинает набор с нуля. Как реализовать ? или я не так понял.
mast_sup
16.05.2012, 12:07
( CU := blk.OUT AND flag ; )
можно по подробнее, я малость нубоват в этой области
mast_sup
16.05.2012, 13:32
не. не выходит, в ST работает, вставляю в цепь пишет (назвал Nabor), Nabor должен содержать ровно 0 входов.
И еще, если делаю не в PLC_PRG, с другим названием, просто не хочет работать не в ST не в конвертированном виде.
Имеется ли в Codesys блок подобный CTU но чтоб не с 0 начинал, а к примеру с 50 до 200, и на уменьшение также, с 200 до 50.
Или это можно как то в CTU задать?
mast_sup
16.05.2012, 15:15
CTUD входы LOAD и PV
ага спасибо.
mast_sup
16.05.2012, 15:25
а кто нибудь может ответить то на мой вопрос , по поводу (http://www.owen.ru/forum/showpost.php?p=83088&postcount=4)
mast_sup
16.05.2012, 15:41
CTUD входы LOAD и PV
Походу не то, быть может я что то не так делаю.
Уточню подробно:
Мне нужно начать увеличение не с 0, а с 5 и до 10.
И уменьшение начать с 10 до 5, но не до 0.
capzap
я сделал остановку роста в CTU счетчика, конечно по другому) но все же, импульсы то подаются между Blink и CTU, но счет CTU не ведет :). Теперь задача, в 1 раз увеличение проходило к примеру до 5, а теперь надо не с 0, а с 5 и до 10.
Мне нужно начать увеличение не с 0, а с 5
перед началом подаете на вход пв вашу пятёрку, подаете тру на лоад, вуалая, на выходе уже 5
и до 10.
с этим сложнее. что должно быть по достижении?
придется сравнивать выход счетчика с числами и там уже плясать.
И уменьшение начать с 10 до 5, но не до 0.
аналогично.
вообще лучше написать все самому на st как надо.
mast_sup
16.05.2012, 15:57
перед началом подаете на вход пв вашу пятёрку, подаете тру на лоад, вуалая, на выходе уже 5
с этим сложнее. что должно быть по достижении?
придется сравнивать выход счетчика с числами и там уже плясать.
аналогично.
вообще лучше написать все самому на st как надо.
Это понятно, что на выходе сразу получится 5, но тут получается как PV стоит 5 и CV 5 и следовательно выход уходит в TRUE, а дальше что еще один блок CTU ставить? (как продолжить увеличение до 10 ?), после достижения 10, так следует пустить сигнал дальше, к примеру закрыть клапан 2.
следовательно выход уходит в TRUE
и что? нас интересует выход CV
а дальше что еще один блок CTU ставить?
зачем?
(как продолжить увеличение до 10 ?)
переключать вход CU
после достижения 10, так следует пустить сигнал дальше, к примеру закрыть клапан 2.
ну и привяжите на выход CV блок GE
вообще напишите пару строк, и все будет работать как захотите
if если_надо5 then
счетчик := 5;
else
счетчик := 10;
end_if;
if больше then
счетчик := счетчик +1;
end_if;
if меньше then
счетчик := счетчик -1;
end_if;
вкл_движок =: счетчик >= верхний_предел;
выкл_движок =: счетчик <= нижний_предел;
mast_sup
16.05.2012, 17:33
ST не мой профиль, я с LD лучше намного дружу)
извините, но реализовывать этот алгоритм на LD тот еще изврат
На форуме уже выкладывал пример, правда по другому вопросу. Может подойдет, если ручной режим не напрягает. С имитировать уменьшение или увеличение получится.
mast_sup
17.05.2012, 08:05
Ладно, всем спасибо буду пытаться, ну а пока еще один вопрос стоит открытым с 4 сообщения, вот он (http://www.owen.ru/forum/showpost.php?p=83088&postcount=4)
mast_sup
17.05.2012, 12:55
Нет, я понял что в ПЛК он будет в цикле, а в режиме эмуляции как повтор сделать, мне нужно чтоб программа работала по кругу в режиме модуляции ), т.к. контроллера уж точно использоваться не будет.
В режиме эмуляции тоже по кругу выполнение идёт.
mast_sup
17.05.2012, 12:58
Вот как раз таки нет, он доходит до конца и все. Я пробовал ставил пере направление на начало, но все равно не получается.
mast_sup
17.05.2012, 13:07
я обычно нажимаю F5 старт, и потом ctrl+F7
Даже если просто F5 нажать, то цикл происходит 1.
mast_sup
17.05.2012, 13:31
Ну я в сообщение приложил мой проект, можете там глянуть.
И еще с CTU я разобрался, там на PV подается нужное значение и CV растет до него, а вот с CTD чет не могу, подают на PV нужное значение, Blink дает импульс, но уменьшение не происходит (( почему то выход сразу на TRUE идет.
А, вон вы о чём. Ну, это не похоже на самую оптимальную реализацию светофора. Очередное сборище таймеров. А вообще по светофорам SFC плачет.
mast_sup
17.05.2012, 14:48
А, вон вы о чём. Ну, это не похоже на самую оптимальную реализацию светофора. Очередное сборище таймеров. А вообще по светофорам SFC плачет.
Сборище таймеров, предполагалось в задании ).
P.S
кто подскажет на счет CTD
mast_sup
17.05.2012, 16:05
Ну вот , при такой связке (когда стоит TRUE на Load) он не уменьшает, подскажите что я не так делаю тут?
capzap в вашем примере, происходит постоянное мигание желтого цвета ) это спецом задумано, для "Мол вот часть, дальше сами додумаете?"
mast_sup
17.05.2012, 16:29
Вот приложил оригинал
так а как же он у вас будет работать, коль вы его в каждом цикле насильно приравниваете к значению pv?
p.s. реактор у вас, надеюсь, не атомный? :)
capzap не это, blink выдает импульсы со всеми нужными фронтами
там не проект, а картинка большая, посмотрите
mast_sup
17.05.2012, 17:11
так а как же он у вас будет работать, коль вы его в каждом цикле насильно приравниваете к значению pv?
p.s. реактор у вас, надеюсь, не атомный? :)
capzap не это, blink выдает импульсы со всеми нужными фронтами
Да реактор, просто слили, смешали, вылили и все =) (это своего рода лабораторная работа), делалась она на LD в Simense , а мне надо её в другом сделать (в моем случаи Codesys, опять же на LD).
А откуда мне тогда завести значение PV, в 1 случаи надо с 12 сбросить в 0, а во втором с 3 в 0.
mast_sup
17.05.2012, 17:26
Всем спасибо, зацикливание прошло успешно. С реактором тоже разобрался и с 1 и с 2.
Далее если буду возникать вопросы по другим делам, буду спрашивать здесь же
P.S тему не закрывайте, хоть и главный вопрос решен, у меня впереди может возникнуть многовато вопросов и чтоб не засорять уж форум, буду писать все в одной теме.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot