Страница 3 из 11 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 21 по 30 из 102

Тема: ПЛК 63 в примерах

  1. #21

    По умолчанию

    2kucherik: не подскажете какая целевая платформа ПЛК ОВЕН63? Имеется ввиду организация памяти M or L?

  2. #22
    Пользователь
    Регистрация
    18.07.2008
    Адрес
    Владимир
    Сообщений
    113

    По умолчанию железо в качестве бонуса %)

    Цитата Сообщение от IIIaMbI4 Посмотреть сообщение
    2kucherik: не подскажете какая целевая платформа ПЛК ОВЕН63? Имеется ввиду организация памяти M or L?
    Без разницы, будет работать на любом. У меня тип М.
    К нему и делаю привязку чтобы людям было проще более сложные вещи реализовать.

    И так уважаемые, выкладываются фотографии этого бокса

    у меня миниатюры отображаются не корректно, если так у многих выложу единым архивом

    LAM, сейчас смотрю программу, все на ST %) сам любил такой подход однако пришлось по извращаться на FBD, теперь можно на чем угодно писать, хоть LD. как досмотрю отпишусь
    Изображения Изображения
    Последний раз редактировалось kucherik; 20.10.2011 в 21:05.
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  3. #23
    Пользователь
    Регистрация
    18.07.2008
    Адрес
    Владимир
    Сообщений
    113

    По умолчанию Железо продолжение

    Теперь к вопросу стоимости этого чуда
    контроллер понятно по прайсу ОВЕНа
    Бокс примерно 600 рублей
    Автоматы по 80 рублей * 8 = 640
    лампочки и реле не нашел в магазине
    пришлось взять со склада рублей 500-700 тоже.
    Если добавите необходимые датчики, получите двухконтурный боксик примерно за 15 000 рублей,
    а если добавите дополнительный модуль МР1 см. прайс (очень вкусное дополнение), то можно сделать полноценный четырех контурный.

    Добавить гермовводов по вкусу и "поперчить"

    p.s. собрал бокс для тестирования программы, не хотелось бы выкладывать не проверенный код, сейчас полирую, до конца следующей неделе. будет финал %)
    Изображения Изображения
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  4. #24

    По умолчанию

    Я кстати тоже задумывался о сборке автоматики в пластиковом боксе, в принципе все очень красиво получается.
    Единственное что пока останавливает - не придумал пока красивого решения по поводу панели оператора.

    В принципе есть идея сделать модульную систему, например:
    Основной модуль - ПЛК110 - 1шт и МВ110-8А - 1-2шт (если 1 - перекрывает 3 смесительных контура, если 2 - перекрывает до 6 смесительных контуров). Но эта идея как-то пока недодумана, пока много вопросов.

    Кстати ПЛК110 очень хорошо влазит в бокс ABB из серии IP65 (в частности у меня такой на 12 модулей валяется, только что специально примерял код ABB 127520020) там дин рейка на пластиковых вставках поднята, так вот если эти вставки вытащить и подложить по пару шайб, то ПЛК влазит очень четко практически без зазоров, и видна только лицевая панель с разьемами, кнопками и светодиодами, и никаких клемников невидно, они аккуратненико закрыты.
    Но вся прелесть - что ничего подрезать ненужно, да и стоимость этого бокса не заоблачная.
    Последний раз редактировалось LAM; 21.10.2011 в 12:37.

  5. #25
    Пользователь
    Регистрация
    18.07.2008
    Адрес
    Владимир
    Сообщений
    113

    По умолчанию ШАГ 5

    ШАГ 1 — инициализация, обработка сигналов
    ШАГ 2 Два варианта вычисления погодозависимого графика
    ШАГ 3 Работа с насосами (отопления, бойлера)
    ШАГ 4 Работа с трехточечным сервоприводом отопления
    ШАГ 5 Аварийные ситуации

    Для начала надо разобрать логику работы, и что надо делать при аварийных ситуациях. И когда должно приниматься решение, что система в аварийном режиме. В данном случае, я опишу типовую логику. Для начала надо чтобы проверилась аварийная индикация, для этого в шаг INIT закладываем таймер, который задержит начало программы (до этого момента INIT у меня был пустым). Так как сигнал аварии в данном случае инверсный, то надо принудительно перевести все выходы в выключенное состояние. Время таймера в каждом случае выбирается исходя из технологических требований. Для систем отопления есть один момент, который называется гидроударом. Суть этого явления заключается в том что вода сразу не останавливается и содержит энергию движения, поэтому насос отопления, особенно когда они с резервированием, не переключают сразу, а нужна пауза на «успокоение».
    Тоже надо сделать и в данном случае, или поддержать насос во включенном состоянии или сделать паузу чтобы не дергать насос (меня устраивают оба варианта). А в данном примере это уже сделано, если помните в насосе есть пауза для включения-выключения насоса отопления. Следовательно когда после снятия сигнала аварии, по схеме принципиальной насос выключится, если не будет сигнала на включение насоса. А в аварийном сигнале так же есть задержка на подачу сигнала авария в 1 минуту, после старта программного цикла.
    Теперь коснемся работы смесителей отопления, для случая отопления в аварийной ситуации (тут возможно только в случаях отказа датчиков отопления и наружного воздуха) нам надо открыть смеситель на максимум, а вот для теплого пола такое делать противопоказано. для него лучше всего заблокировать смеситель в текущем положении до устранения аварийной ситуации (для него соответственно это отказ наружного воздуха или датчика контура). Логичные изменения данных утверждений вы встретите в шаге 4 (step4), для смесителей, в шаге 3 (step3), для насоса. Как можно было бы это выполнить для смесителей, но не стал делать. Например в случае аварии любого датчика, выводить в качестве задания, максимальную температуру контура, но в данном случае надо бы задуматься над ресурсом реле.
    Обещаю выложить дополнительный пример который ограничивает количество срабатываний и бережет ресурс реле. Просто не хочется усложнять это пример.
    Для обработки аварийных ситуаций нет смысла писать отдельный модуль, так как в каждом случае приходится писать свою логику. К тому же реакция на аварийные ситуации «размазана» по программе. В некоторых случаях она заставляет работать (открывает смеситель отопления), в других наоборот принимать безопасное состояние (блокирует работу смесителя теплого пола).

    Дополнительный комментарий: Это последний аппаратно независимый ШАГ, далее уже пойдет привязка к железу. Все что было изложено выше и в данном шаге, можно будет включить в любой CoDeSys (пишу под второй, третий непонятно что и когда будет, и как решаться вопросы совместимости со старым железом) совместимый контролер. А после небольшой доработки напильником и на альтернативные платформы (именно поэтому опираюсь на стандартные библиотеки). Главное чтобы был понятен смысл действий. Еще один момент, дополнительные шаги мне кажется более правильным описывать опираясь на этот шаг. Он дает достаточно большую абстракцию относительно аппаратной платформы.

    ШАГ 6 Финальная сборка и привязка к ПЛК63
    ШАГ 7 Отображение данных
    Вложения Вложения
    • Тип файла: zip step5.zip (29.1 Кб, Просмотров: 269)
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  6. #26
    Пользователь
    Регистрация
    18.07.2008
    Адрес
    Владимир
    Сообщений
    113

    По умолчанию Финал

    ШАГ 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 в 19:53.
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  7. #27
    Пользователь
    Регистрация
    18.07.2008
    Адрес
    Владимир
    Сообщений
    113

    По умолчанию Тестирование

    И так код выложен, его можно тестировать на железе. осталось всякие плюшки, если кому что интересно пишите. Например, будет еще одно описание, которое направленно в основном на экономию ресурса реле

    LAM - программу посмотрел, странно что не используете функциональные блоки, с их использованием упростился бы код. В случае необходимости изменений оно производилось бы только в одном месте. Текущий внешний вид на мой взгляд, напоминает линейную программу. Увы большинству пользователей, ST не понятно. Посмотрим какая реакция будет на мой пример.

    С уважением, Kucherik
    Последний раз редактировалось kucherik; 23.10.2011 в 19:57.
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  8. #28

    По умолчанию

    В шестом действии нет выражения (номер канала) на входе ФБ SETWORKSCREEN.
    При компилляции КДС ругается.

  9. #29
    Пользователь
    Регистрация
    18.07.2008
    Адрес
    Владимир
    Сообщений
    113

    По умолчанию

    Цитата Сообщение от kolyan Посмотреть сообщение
    В шестом действии нет выражения (номер канала) на входе ФБ SETWORKSCREEN.
    При компилляции КДС ругается.
    Проверил архив, все в порядке, наверно когда загрузил код с сайта и не подключил библиотеку, для работы с дисплеем (Work_mode.lib). Обнови проект, и произведи полную перекомпиляцию. Файл еще раз возьми из архива.

    Если глюк останется, то на входе должна быть переменная Screen %)

    Как обычно все решается с опытом
    Последний раз редактировалось kucherik; 24.10.2011 в 17:28.
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  10. #30

    По умолчанию

    Kucherik - Я сразу говорил, что программа очень сырая, и многого еще нет, в дальнейшем кнечно планировал оформить все в виде ФБ, пока для меня так нагляднее.
    Например очень большой минус а данный момент - то, что нет контроля положения задвижки, получается что при открытии идет анализ температуры на стрелке, и когда температуры приблизительно равны, релюхами не щелкаем.
    А вот при понижении температуры, обратка как правило остывает довольно медленно, и при полностью закрытой задвижке релюха еще довольно долго щелкает.
    Эту часть кода в принципе уже написал, просто еще не встроил.

    Пробовал встроить ПИД регуляторы, там даже часть кода есть, но потом отказался за ненадобностью, т.к. и так температура подгоняется довольно быстро и точно, тут твоя идея мне понравилась (чем больше рассогласование - тем длинее сигнал).

Страница 3 из 11 ПерваяПервая 12345 ... ПоследняяПоследняя

Похожие темы

  1. ошибки в примерах ...
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 25.01.2009, 21:17

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •