На ПЛК, лучше выложить программу, а на MB110, можно и скрин с установленными параметрами.
Вид для печати
это только экстрасенсы по фотографии могут определить что\где когда и почему.
мало информации.проект нужен и файл настроек модуля,чтобы Вам смогли что-то вразумительное ответить.
Какой модуль?Например если МВ110-16ДН, то ему надо указывать протокол обмена.Если вы ему заводские настройки оставили,то он связываться не будет.У него по дефолту протокол ОВЕН стоит на сколько я помню.
Подскажите пожалуйста, что делаю не так, пытаюсь сделать так чтобы после включения выхода, ПЛК-73 переключался с одного экрана на другой, с соответствующей надписью "пуск".
[QUOTE=Василий Кашуба;140580]На ПЛК, лучше выложить программу, а на MB110, можно и скрин с установленными параметрами.[/QUOTE
Программа и конфигурация МВ во вложении.
При наличии на входах МВ любого нолика включается сигнализация и по нажатию кнопки SB1 на ИП320 выводится соответствующее сообщение. после вывода всех сообщений программа ожидает когда все сигналы придут в норму - в 1 и начинается новый цикл отработки аварий.
Сейчас у меня с МВ в программе только нолики. На деле на входе МВ 0х80.
Если не читать РЭ на приборы, то всегда будет
Вложение 13462Цитата:
Помогите - неделю уже бьюсь!
Вложение 13462
А что у Вас? Почему номер регистра 0?
Вложение 13463
Кроме того есть примеры применения модулей.
да Q5. а вообще я только начинаю изучать CoDeSys и для меня важно понять принцип выполнения, перечитал кучу литературы и столкнулся с тем что написано в ST по мере воплощения стараюсь адаптировать ST в CFC но не всегда получается(например как в этом случае), уже пробовал работу с экраном прописывать отдельным функциональным блоком в ST. но в связи моими скудными познаниями в программировании получается очень много ошибок в написании.
В архиве программа для панели
В программе 4 подпрограммы
CONNECT - проверка связи с модулями
PLC_PRG - трансляция значений для прямой индикации
SM-AL - обобщение аварий (создание аварий по группам)
ALARM_N - аварии не включения вентустановок, не открытия заслонок
(это не окончательный вариант, причесываю, добавляю)
И собственно проблема с ALARM_N - его цикл доходит до 4 секунд..
приточек 16, вытяжек 48, на каждую по 2 аварии (с выдержкой времени)
не включение в течении 5-10 секунд - авария,
не открытие клапана в течении 90-120 секунд авария,
естественно для каждой аварии проверяются условия...
Как можно уменьшить время цикла, или сделать его прерывание для опроса модулей.
Заранее спасибо за критику и предложения!!
Подмечу сразу, работаю со словами целиком (то есть передаю с порта на порт), ИБО уже 10 изменение по вентиляции (раньше вытяжки приточки были по порядку), что они еще придумают...
Tayon, начнём с ликбеза по логическим выражениям. Вот так не пишут:Это тавтология и лишний код. Следует писать так:Код:IF OUTP51.0=TRUE AND IN51.4=FALSE THEN
В условиях вообще не должны встречаться слова true и false. Сама конструкция if это уже проверка на true, и вы «проверяете проверку на true на true». Для проверки на false есть отрицание not.Код:IF OUTP51.0 AND NOT IN51.4 THEN
Сжимаем дальше. Вот ваш код опять:А вот как следует:Код:IF OUTP51.0=TRUE AND IN51.4=FALSE THEN AL1.0:=TRUE; ELSE AL1.0:=FALSE; END_IF
TONP9R(IN := AL1.0, PT:= TN);
ALARM1.0 :=TONP9R.Q;
Параметр PT можно задать один раз в объявлениях:Код:TONP9R(IN := OUTP51.0 AND NOT IN51.4, Q => ALARM1.0);
И вообще, если что-то можно задать в объявлениях, лучше это сделать.Код:TONP9R: TON := (PT := T#3s);
Но больше всего поражает, конечно, количество таймеров. Их можно заменить массивом типа TIME, и в этот массив заносить временные метки по соответствующим условиям:Дальше в цикле забивать маску аварий:Код:currentTime := TIME();
timestamps[N] := SEL(OUTP51.N AND NOT IN51._N_, currentTime, timestamps[N]);
Только аккуратнее с переполнением на 50-е сутки.Код:ALARM1.N := currentTime - timestamps[N] > TZ;
Ещё в несколько раз эту подпрограмму можно ускорить, если принять во внимание, что допуски в 10 и 90 секунд это намного больше среднего цикла ПЛК. Значит, необязательно каждый раз проверять все механизмы, и можно разбить их на несколько групп. Скажем, проверять штук 5-10 за проход.
В общем, циклы, группирование и логика без тавтологий и лишних промежуточных переменных.
Я не прошу написать за меня программу, форум, конечно, весь я не перечитал, да это и невозможно, а те темы которые меня интересуют я пересмотрел все и ответа нигде не нашел.А вопрос я задал вполне конкретный: каким образом мне связать выход q5 с SetWorkScreen? может есть какой то функциональный блок, который я не доставляю или нужно ввести какую то переменную. А вы вместо того чтобы ответить на конкретный вопрос занимаетесь нравоучением. И каким это "таким" образом я ничему не научусь?
Если вы знаете где есть примеры работы с экранами на CFC дайте пожалуйста ссылку.
1).Никто нравоучениями не занимается. Я выразил лишь своё мнение.
Самостоятельно осваивал кодесис, поэтому знаю про что говорю.
2). Нажмите на SetWorkScreen правой кнопкой мыши. Выберите En\Eno. У блока появится вход для разрешения его работы (En). Туда и вставьте Q5.
3).Вот Вам пример работы с экранными функциями ПЛК-63:
-скачайте этот проект:
http://www.owen.ru/forum/attachment....7&d=1320818701
-Зайдите в PLC_PRG,
-Затем кликните 2 раза на STEP6.
Там находится пример.
Описание здесь:
http://www.owen.ru/forum/showthread.php?t=11341&page=3
Пост №26.
вот за это огромное человеческое СПАСИБО. Умом я понимаю как нужно сделать, а вот в конкретной реализации сталкиваюсь с проблемами. CoDeSys тоже изучаю самостоятельно и подсказать некому, поэтому и обращаюсь на форум с вопросами, которые продвинутым пользователям могут казаться простыми и глупыми(может они таковыми и являются). И согласитесь ведь второй пункт вашего ответа не был готовой программой, а мне не хватало именно этого)))) Еще раз спасибо за подсказку и примеры.
Огромное спасибо Yegor! Вы просто открыли мои глаза
Не помню откуда у меня эта любовь, скорее привычка сравнивать true/false...
А параметр PT я планировал вынести на панель, так как наблюдается дикий разношерст с приводами, от 90 до 180 секунд. и по вентустановкам уже мои автоматику обвязали, а частотников нет, движки еще от NED, все знают их проблемы пуска... (работа снимается дифф. манометром по перепаду давления)
А таймеров много ибо с массивами TIME работать не приходилось..
И еще один вопрос к уважаемым форумчанам.
Есть такая структура сети:
Вложение 13488
Подскажите как грамотно организовать обмен между 3 "пультами". С переменными которые служат сугубо для индикации проблем никаких, они разбегаются как дерево A->B->C D->D
но как быть с дискретными?
Я предпологаю: A->B->C->D->E->A;
И надо мастерить конструкции типа:
В таком роде...Код:IF A=B AND E<>B THEN B:=A
IF A=B AND C<>B THEN A:=B
Может кто то сталкивался с подобной проблемой и подскажет ключик к её решению?
Заранее благодарен
Ну по поводу профессионализма я бы поспорил, а по поводу запуска котельной-оператор не должен знать все принципы построения автоматики и внутренние алгоритмы ее работы, но при этом он ее запускает и работает!!! И если я слабо разбираюсь в CoDeSys это не значит что ничего не понимаю в автоматике и в принципах ее построения.
так не оставляйте здесь такие сообщения, что новичек в КДС и т.п.
есть относительно небольшой документ http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf, где расписано всё, включая использование EN/ENO, остальное может неполучаться только из-за отсутствия расположенности к логическому мышлению
Оператор обязан знать причинно-следственные связи этой котельной как минимум - а это и есть "принципы построения автоматики", иначе на кой этот оператор ? Тыкать в кнопы по принципу "нажмем и посмотрим, если чо - звоним Петровичу ?" Пусть лучше подметает вокруг. Хотя нет, тут тоже думать надо - листву в кучу гребсти в уголок или на сквознячокЦитата:
а по поводу запуска котельной-оператор не должен знать все принципы построения автоматики и внутренние алгоритмы ее работы
А откуда вообще такая витиеватая структура взялась? Зачем два контроллера? СП270 в качестве мастера ещё не отваливалась (а то она любит)?Цитата:
Подскажите как грамотно организовать обмен между 3 "пультами".
взялась она от того что наши строители "не смогли" построить обьект вовремя, в итоге,
1 сентября сдается эта часть (садик с начальной школой)
потом школа, наверно декабрем
а потом комплекс (где и стоит компьютер)
естственно что заказчик хочет видеть все в таких этапах, и в последствии на постоянной основе
Сп270 отваливается, но я обычно боролся перезагрузкой по питанию. Панель меняет с переодичностью раз в 5-10секунд переменную (конроллер следит), как только тишина, сброс по питанию панели.. конечно все это написано моим корявым языком:D
Садик лепил из того что было, вот и попалась СП270, леченая, но живенькая.
вот волею судеб получишся змей горыныч о трех головах, а головы все разные;)
Надеюсь что решение найдется
С помощью какой библиотеки можно организовать архивирование событий, аварий и т.д. ?
например syslibfile
Сижу, балуюсь в кдс, пытаюсь натренировать логическое мышление. Недавно возник маленький вопрос, который сбил меня с толку.
Допустим имеется кнопка без самофиксации и какой нибудь агрегат. При нажатии на кнопку должен заработать агрегат, при повторном нажатии агрегат выключается. Короче пуск и стоп посредством одной кнопки. Сигнал с кнопки идет на оба входа RS-триггера. Перед входом reset триггера думаю использовать декрементный счетчик с уставкой 2. Т.е при повторном нажатии на кнопку активируется сброс триггера и произойдет выключение агрегата.
Прошу поделиться советом, может есть другое более простое решение.
Заранее спасибо.
FF_DRE из oscat библиотеки, вот тут на миниатуре видно http://www.owen.ru/forum/showthread....l=1#post140875
как раз стоит кнопочный выключатель (переменная tenbON) которая включает/выключает.
Ловите отдельно.
melky
Большое спасибо, попытаюсь разобраться. Но как понять, как устроен сам данный функциональный блок из библиотеки? Как самому реализовать программно включение и выключение одной кнопкой? Тут моя логика полностью страдает.
Открыл файл библиотеки, и..язык ST...пытаюсь разобраться, но не доходит...
Darkmen999 а так ли важно, как внутри функционирует обычный D-Trigger, который при инверсии на вход CLK превращается в Т-триггер ?
в любом справочнике по микросхемам можно посмотреть логику работы Д-триггера. ставьте готовый блок в свою программу на CFC и применяйте.
Вы же не вдаетесь в подробности работы OR, AND, NOT ?
так и тут, стандартный Д-триггер.
Другой вопрос разбираться с функциями специфическими, не описанными в справочниках.
На ST можно реализовать и без использования FB, просто используя входную переменную кнопки и дополнительно переменную в программе. Да и на CFC тоже можно, только зачем ?
Посмотрите несколько страниц назад без счетчиков или RS триггеров :)
http://www.owen.ru/forum/showthread....l=1#post140405
http://www.owen.ru/forum/showthread....l=1#post140471
Или аналогично http://www.owen.ru/forum/showthread....ll=1#post94449
Вложение 13509
То же самое, но на ST
Вложение 13510
melky
Спасибо. Просто забыл про существование T и D триггеров. Ведь они же двухступенчатыми являются.
petera
Посмотрел скриншоты, беру на заметку данную хитрость, спасибо.)
А массив на столько меток времени будет шустрее чем таймеры?
я подправил свой "код", и разбил через CASE эффект 500-700 милисекунд, против 6000 изначальных!
Спасибо за пинок в нужную сторону:)
Ну, вы как минимум избавитесь от расходов на вызовы внешних процедур.Цитата:
А массив на столько меток времени будет шустрее чем таймеры?
Здравствуйте! Если не жалко. Как назначить retain и записать в нее значение с другой переменной по команде в среде OWEN Logic. Спасибо откликнувшимся.
Какая-то странная формулировка.На всякий - retain'ы в ПЛК. Owen Logic в ПР
http://www.owen.ru/forum/forumdisplay.php?f=34
Скажите почему в первом варианте всё работает, а во втором не хочет. Причём в КДС3 второй вариант работает без проблем.
Великодушно простите Валенок. С поиска попал не в ту ветку. Всего доброго. Спасибо...