Вобщем кому интересно, выкладываю свою версию управления тремя контурами отопления. В частности в плане управления трехходовым много подсмотрено у Kucherika.
Говорю сразу, все очень сыро, но вроде работает :-)
Проект под ПЛК110-xx.60.Р-М.
Вобщем кому интересно, выкладываю свою версию управления тремя контурами отопления. В частности в плане управления трехходовым много подсмотрено у Kucherika.
Говорю сразу, все очень сыро, но вроде работает :-)
Проект под ПЛК110-xx.60.Р-М.
Последний раз редактировалось LAM; 20.10.2011 в 16:46.
2kucherik: не подскажете какая целевая платформа ПЛК ОВЕН63? Имеется ввиду организация памяти M or L?
Без разницы, будет работать на любом. У меня тип М.
К нему и делаю привязку чтобы людям было проще более сложные вещи реализовать.
И так уважаемые, выкладываются фотографии этого бокса
у меня миниатюры отображаются не корректно, если так у многих выложу единым архивом
LAM, сейчас смотрю программу, все на ST %) сам любил такой подход однако пришлось по извращаться на FBD, теперь можно на чем угодно писать, хоть LD. как досмотрю отпишусь
Последний раз редактировалось kucherik; 20.10.2011 в 20:05.
Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)
ШАГ 1 — инициализация, обработка сигналов
ШАГ 2 Два варианта вычисления погодозависимого графика
ШАГ 3 Работа с насосами (отопления, бойлера)
ШАГ 4 Работа с трехточечным сервоприводом отопления
ШАГ 5 Аварийные ситуации
ШАГ 6 Финальная сборка и привязка к ПЛК63
Вот и привязка к железу, серьезных изменений тут нет, все действия сведены к тому что входы и выходы привязываются к программе. (Поэтому последние два шага будут объединены в одно описание и одну программу). Сначала надо произвести выбор целевой платформы. Теперь привязываю используемые переменные для аналоговых входов. Интересное преимущество ПЛК 63/73 в том что можно настроить датчик даже после заливки программы, прямо на объекте. Чтобы не повторять что изложено в документации, отправляю к родной инструкции на контроллер (6.1 Работа с ЖКИ или 8 глава в РП).
И так сначала привязываем датчики, не забываем удалить переменные заглушки из глобальных. Названия я использую те же, просто заменяем (TN,TP1,TP2) производя привязку к соответственным аналоговым входам.
Выходы, тут придется добавить сопрягающие значения, при конвертации BOOL в REAL. Рекомендую использовать для этой цели стандартный элемент SEL.
ШАГ 7 Отображение данных
При старте программы выводим на базовый экран надпись «Инициализация» и надо добавить для красоты обратный отсчет. Кому очень красота важна могут сделать «линейный градусник» выполнения (функции работы со строками имеются %) ). Далее можно пойти двумя путями, первый самый простой, для каждого параметра свой дисплей и циклическая смена каждые 5 секунд. Плюс дополнительный аварийный дисплей, для вывода типа аварии. Более сложная задача, это полное управление, можно обойтись даже одним экраном, но тогда надо было бы вынести управление экранами в независимый процесс. Поэтому, в данном случае самый простой вариант.
Итак Step6, здесь выводятся на экран строки подписи и значения переменных. Можно для упрощения кода инициализацию верхних строчек вынести в INIT, но как то привычней все делать в одном месте. Дополнительный момент на который хочется обратить внимание, это кусок кода управляющий переключением экранов. Я не люблю полностью блокировать интерфейс пользователя в случае аварийной ситуации. То есть я продолжу выводить экраны с датчиками а в конце добавлю аварийный экран, где будет написано какой датчик шалит. Чтобы упростить задачу и не очищать экран, надписи по количеству символов совпадают, но перед самым переключением я его очищаю. Сам способ переключения экранов состоит в использовании таймера, для того чтобы не привязываться к платформе и скорости выполнения цикла. Я постарался сделать весь пример без использования EN/ENO (где только возможно, вот в примере не получается очистить экран, перед сменой, пришлось использовать данную уловку) тоже с целью упрощения. Хотя получилось или нет тут спорно.
Если в индикации аварийной ситуации будет несколько ошибок, то высвечиваться будет последняя. В индикации параметров контуров первым идет значение датчика, затем через промежуток вычисленное задание.
Для управления уставками используем встроенный функционал контролера. Соответственно первая ветка контролера работает с контуром отопления, вторая, с теплым полом. В первой ветке, надо задать график и для этого потребуется всего три переменные (otp0, otp10, otp20) остальные точки графика задаются ограничениями работы контура. Ограничения для дополнительных точек графика поставил 20-80. Во второй ветке наклон характеристики задаем как float, он отвечает на какую величину приращения увеличивать температуру, при падении уличной на 1 градус Цельсия. Параметр «Лето» во второй ветке это заглушка, ни на что не оказывающая влияния.
При адаптации только в step2 пришлось добавить конвертацию типов для корректной работы программы, кто не верит попробуйте убрать и посмотреть на результат.
Как видно конфигурационное меню, получилось простым, без сильного усложнения. На этом шаге основа изложена, прошу желающих по тестировать код, на предмет ошибок. Если захотите что-то добавить, тогда надо выложить комментарии и полный код.
Дополнительный комментарий: На основе таймера, я часто делаю интегратор и другие вкусные вещи. Кому интересно смотрите другие программы они выложены мной в других ветках форума, но без комментариев, как есть. Я не вводил в меню, опции управления настройками сервопривода. Думается все таки это сделать будет достаточно просто. К тому же есть не очень приятный опыт из практики, и я считаю полезным эти настройки держать «жесткими», если возникнет желание сделать универсальное устройство, тогда придется на всякий случай закрыть эти параметры паролем. Делается встроенными средой контролера.
Важно: данный пример рабочий и достаточно простой, но у него есть один серьезный недостаток, при зависании датчика, или невозможности обеспечить нужную температуру, реле будут щелкать до исчерпания своего ресурса (100000-1000000 циклов что при времени ожидания 30 секунд даст от 35 до 350 дней, что достаточно немного), поэтому выложу сюда же пример с ограничениями количества срабатываний, для управления сервопривода.
Последний раз редактировалось kucherik; 23.10.2011 в 18:53.
Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)
И так код выложен, его можно тестировать на железе. осталось всякие плюшки, если кому что интересно пишите. Например, будет еще одно описание, которое направленно в основном на экономию ресурса реле
LAM - программу посмотрел, странно что не используете функциональные блоки, с их использованием упростился бы код. В случае необходимости изменений оно производилось бы только в одном месте. Текущий внешний вид на мой взгляд, напоминает линейную программу. Увы большинству пользователей, ST не понятно. Посмотрим какая реакция будет на мой пример.
С уважением, Kucherik
Последний раз редактировалось kucherik; 23.10.2011 в 18:57.
Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)
В шестом действии нет выражения (номер канала) на входе ФБ SETWORKSCREEN.
При компилляции КДС ругается.
Проверил архив, все в порядке, наверно когда загрузил код с сайта и не подключил библиотеку, для работы с дисплеем (Work_mode.lib). Обнови проект, и произведи полную перекомпиляцию. Файл еще раз возьми из архива.
Если глюк останется, то на входе должна быть переменная Screen %)
Как обычно все решается с опытом![]()
Последний раз редактировалось kucherik; 24.10.2011 в 16:28.
Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)
Теперь к вопросу стоимости этого чуда
контроллер понятно по прайсу ОВЕНа
Бокс примерно 600 рублей
Автоматы по 80 рублей * 8 = 640
лампочки и реле не нашел в магазине
пришлось взять со склада рублей 500-700 тоже.
Если добавите необходимые датчики, получите двухконтурный боксик примерно за 15 000 рублей,
а если добавите дополнительный модуль МР1 см. прайс (очень вкусное дополнение), то можно сделать полноценный четырех контурный.
Добавить гермовводов по вкусу и "поперчить"
p.s. собрал бокс для тестирования программы, не хотелось бы выкладывать не проверенный код, сейчас полирую, до конца следующей неделе. будет финал %)
Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)
Я кстати тоже задумывался о сборке автоматики в пластиковом боксе, в принципе все очень красиво получается.
Единственное что пока останавливает - не придумал пока красивого решения по поводу панели оператора.
В принципе есть идея сделать модульную систему, например:
Основной модуль - ПЛК110 - 1шт и МВ110-8А - 1-2шт (если 1 - перекрывает 3 смесительных контура, если 2 - перекрывает до 6 смесительных контуров). Но эта идея как-то пока недодумана, пока много вопросов.
Кстати ПЛК110 очень хорошо влазит в бокс ABB из серии IP65 (в частности у меня такой на 12 модулей валяется, только что специально примерял код ABB 127520020) там дин рейка на пластиковых вставках поднята, так вот если эти вставки вытащить и подложить по пару шайб, то ПЛК влазит очень четко практически без зазоров, и видна только лицевая панель с разьемами, кнопками и светодиодами, и никаких клемников невидно, они аккуратненико закрыты.
Но вся прелесть - что ничего подрезать ненужно, да и стоимость этого бокса не заоблачная.
Последний раз редактировалось LAM; 21.10.2011 в 11:37.