Страница 2 из 11 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 102

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

  1. #11

    По умолчанию

    Цитата Сообщение от LAM Посмотреть сообщение
    Присоединюсь к обсуждению:

    Да, я согласен, что при таком регулировании я никогда не выйду на уставку, но точность поддержания температуры у меня получилась 0,1-0,5 градуса.
    Ну что-то где-то так.

    P.S. Некоторые комнатные термостаты вообще показывают температуру с шагом 0.5 градуса, и выставить уставку на них возможно с таким же шагом.

    0.1 - 0.5 Градуса Цельсия - это отличная точность поддержания температуры для такой инерционной и нестабильной системы!

    Кстати, похожая методика с пропорциональным управлением уже высказывалась автором этой ветки (Kucherik) в другой теме:

    http://www.owen.ru/forum/showthread.php?t=3963
    Последний раз редактировалось kolyan; 13.10.2011 в 11:15.

  2. #12

    По умолчанию

    Уважаемый LAM!
    А можно узнать название Oscatо'вской библиотеки?
    А, ещё лучше, примерчик на её основе.

  3. #13

    По умолчанию

    http://oscat.de/index.php?option=com...d=28&Itemid=57

    Там у них три библиотеки (Basic, Network, Building) по моему Network и Building без Basic не работают.
    Очень огромное количество всяких функций.
    Я использовал функцию HEAT_TEMP.

    Но самое прикольное, что там есть исходники, и всегда можно разобрать как конкретная функция работает.

  4. #14

    По умолчанию

    Цитата Сообщение от LAM Посмотреть сообщение
    http://oscat.de/index.php?option=com...d=28&Itemid=57

    Там у них три библиотеки (Basic, Network, Building) по моему Network и Building без Basic не работают.
    Очень огромное количество всяких функций.
    Я использовал функцию HEAT_TEMP.

    Но самое прикольное, что там есть исходники, и всегда можно разобрать как конкретная функция работает.
    Oscat библиотеки у меня имеются, только не изучал их толком)))
    Нужно будет посмотреть.

    Интересно.
    HEAT_TEMP, как я понял -это погодозависимый регулятор температуры внутри помещения в завасимости от наружней температуры.
    И его, как я понял, можно применить и для регулирования не комнатной температуры, а для регулирования температуры прямой воды в контуре отопления?

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

    По умолчанию Ответы

    Уважаемые форумчане отвечаю, на возникшие вопросы и обсуждения как появляется свободное время. А сейчас увы в моей конторе сезон. поэтому ближе к выходным только получается в интернете полазить.
    ASo - стандартные это хорошо, но сейчас просто стоят задачи сделать просто и наглядно, к тому же есть такой момент который описан, что стандартная charcurve работает с переменными только типа int. Поэтому и переделал. Если знаете другие альтернативы, прошу высказываться а лучше выкладывать для обозрения.
    kolyan - интересный вариант с обработкой датчиков, надо проверить как работает, просто в этой ветке задача изложить как можно проще материал, ведь он может кем-то использоваться как пример для обучения. Диагностика неисправности дело пары минут, достаточно посмотреть на значения, а выход за диапазон я использую для привязки к технологическим параметрам объекта, ведь диапазон датчика шире чем в контролируемой зоне
    LAM - достаточно интересная библиотека и как вижу Open Source. Я как раз сразу после этого сообщения выкладываю два шага, включая управление, так вот мертвая зона должна быть во всем, идеальный механизм без зазоров не работает, а линейный коэффициент можно вычислить, хоть и тяжко это, подобрать бывает быстрее.
    Рад что ветка привлекает людей, и уже вижу результат, что заставляет работать более быстрее %)

    Далее я стараюсь использовать стандартные библиотеки, хотя для меня не составляет большой проблемы написать функции и без их использования. Это пишу с целью чтобы было как можно проще и понятней. Если смотрели мои предыдущие работы они выкладывались как есть без комментариев и прочего. А тут надо дать базу и на ее основе развить и усложнить, базовую часть планирую закончить за 1-2 недели, и думаю успею собрать пример в железе.

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

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

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

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

    Достаточно простой шаг, тут сложно допустить ошибку, так как в данном примере всего один насос, но в качестве дополнительного бонуса хочу изложить работу с насосом бойлера. Так как наиболее часто встречается что у людей один контур отопления, а второй используется для управления бойлером. В этом случае на выход обязательно устанавливать дополнительное развязывающее реле, вместо точки подсоединения второго сервопривода. А датчик второго контура соответственно устанавливается в бойлере.
    Для работы с бойлером я использую функциональный блок Boiler. Как видно из состава блока он как и другие достаточно просто устроен, однако здесь используется триггер SR (не забываем использовать библиотеку standart). Его особенность заключается в том что преимущество имеет сигнал включения, для случая одновременной подачи единиц на оба входа. Сигнал с датчика бойлера сравнивается с минимальным значением для включения и логический результат проходит через элемент OR, который добавляет альтернативное включение в случае внешней аварии или если вы захотите привязать сюда родной термостат бойлера. На выходе SR стоят два таймера, хотя достаточно одного. Это типовая конструкция которой я пользуюсь для исключения «дребезга» насоса при недостаточно узком коридоре значений. Обращаю внимание на то что переменные TBoilMin и TBoilMax уже объявлены и в случае если вы не произведете их инициализацию, будут использованы уставки по умолчанию 47-55 градусов Цельсия.
    Логика работы насоса отопления основана на двух моментах. Первый, в случае отказа датчика наружнего воздуха или датчика отопления насос должен включиться. Второе, для экономичного режима и чтобы избежать перегрева логично отключать насос отопления при превышении температуры наружнего воздуха, некоего значения. Как видно из примера изложенного для бойлера логика такая же, только вместо минимальной температуры, значение при которой включается система отопления, а для максимальной когда выключается. Параметры по умолчанию соответственно 8-12 градусов Цельсия. Еще одно отличие это время задержки включения-выключения в 5 минут. Если кому важно включать и выключать без задержки удалите таймеры ton и tof. Но они выполняют достаточно нужную функцию, если пользователь задаст малую разницу между значения зима-лето, или вообще перепутает их местами то переход через значение зимы по температуре наружнего воздуха вызовет непрерывное включение и выключение насоса. Важный момент это элемент MAX он нужен для защиты от «дурака». Чтобы не заморозили систему отопления, в практике встречались случаи когда ставили европейские +3 градуса, как защиту от замерзания и заморозили систему отопления.

    Дополнительный комментарий: для насосов управляемых от контролера желательно добавить безусловное включение один раз в неделю на 5-10 минут, для того чтобы избежать закисания. Это просто сделать. Добавив сигнал на аварийный вход. Вариант с резервированием насосов и контролем перепада давления будет рассмотрен отдельно, как и коррекция по температуре помещения. Скорее всего я оформлю это как дополнительные шаги, так как часть из них влечет за собой изменения в электрической схеме, и ведет к усложнению данной программы, что я стараюсь избежать.

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

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

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

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

    И так мы дошли до управления трехточечного сервопривода. Переводя на понятный язык у него один общий контакт и два контакта управления, соответственно открывающие или закрывающие смеситель. Особенность работы системы отопления и данного привода является следующие моменты. Интегральная составляющая , например в случае ПИД регулятора не требуется, так как положение сервопривода и есть «память» которая запоминает текущее значение накопленной ошибки. Обращаю внимание на то что в случае работы с регуляторами управляемыми напряжением интегрирование придется выполнять программно. Теперь надо коснутся вопроса необходимости в дифференциальной составляющей уже в ПД регуляторе.
    Система отопления когда проектируется в ней закладываются диаметры труб из расчета чтобы скорость течения жидкости (воды) в них не превышало 1 метра в секунду. В конвекторах эта скорость еще больше падает для эффективной отдачи тепла. Если взять типовую схему отопления среднего коттеджа на 150 метров, эффективная протяженность труб примерно составит 70 метров для одного этажа. То есть если бы у нас производилось прямое измерение температуры воды то отклик системы на единичное воздействие мы получили не раньше 70 секунд, а ближе к реальным условиям не раньше 2х минут.
    Берем теорему Котельникова (http://ru.wikipedia.org/wiki/Теорема...кова_—_Шеннона) там есть два важных следствия:
    - Любой аналоговый сигнал может быть восстановлен с какой угодно точностью по своим дискретным отсчётам, взятым с частотой f > 2fc, где fc — максимальная частота, которой ограничен спектр реального сигнала.
    - Если максимальная частота в сигнале превышает половину частоты дискретизации, то способа восстановить сигнал из дискретного в аналоговый без искажений не существует.
    Вывод максимальное время изменений должна или быть выше соответственно времени отклика системы или ее линейный коэффициент должен укладываться в погрешность измерения системы. Как и любая система она должна работать с определенной погрешностью (зазорами для механиков %) ). Поэтому важно ввести понятие мертвой зоны (DeadZone), по умолчанию я обычно использую ± 2 градуса Цельсия. Чуть ниже объясняется откуда это берется. А теперь коварный вопрос а ниже какой величины не может быть время ожидания (ответ в дополнительном комментарии).
    Второй вывод для системы отопления дифференциальная часть не нужна, мы и так работаем значительно быстрее чем получаем отклик от системы отопления.
    Ну вот все выше изложенное это эрзац теория, теперь вернемся к определению DeadZone. Берем типичный пример у меня используется сервопривод с временем от одного крайнего положения до другово с временем 120 секунд. Температурный диапазон который обеспечивает смеситель от 20 до 80 градусов Цельсия. Значит если я выберу однократное воздействие длительностью 1 секунду то через время отклика системы (очередная оговорка, что график смесителя линеен ( неправда )) при известной и постоянной температуре котла я получу изменение в 0.5 градуса (80-20=60, 60/120=0.5). Берем время ожидания 30 секунд, между импульсами и получается что 2 минуты или 120 секунд делим на 30 получаем четыре импульса или 2 градуса. А это и есть мертвая зона. И воспользовавшись данным определением мы попадем примерно в «середину» нужного нам значения.
    Прошу прощения за данный «мутный» подход он нужен был для определения принципов работы и необходимых параметров, формулы для определения нужных Вам параметров теперь есть в наличии. Приведу памятный пример сложного случая из практики. Промышленная котельная на 7 мегаватт, вместо классического смесителя используются две поворотные задвижки работающие в противофазе, но подкрался незаметно один момент, время открытия-закрытия сервоприводов составляло всего 3 секунды. Для модуля МДВВ минимально допустимая длительность ШИМ импульса составляет 50 миллисекунд и не может быть изменена. Значит я получу примерно 20 ступеней на секунду, и соответственно 60 на весь диапазон. Измерив значение отклика системы я увеличил время ожидания, что остаться в том же значении мертвой зоны.
    Теперь об устройстве P3Servo функционального блока. Цель его написания, простой и понятный функциональный блок, без обратной связи, запоминания положения, и прочего. Потом в дополнительном обзоре можно будет усложнить. И так входное задание сравнивается с сигналом плюс-минус мертвая зона, решение об этом подается на таймер TP который генерирует импульс заданной длительности, c выхода двух TP берем сигнал обратной связи для блокировки, на время ожидания отклика системы. Именно для работы блокировки добавлены элементы AND. Обращаю внимание выход таймер с инверсией. Наверно это самый сложный функциональный блок который я использую в этих шагах. Значения переменных инициализированны по умолчанию. DeadZone=2, Время импульса PulseTime=2 секундам , WaitTime=30 секундам.

    Дополнительный комментарий: Минимальное время которое можно указать для ожидания определяется длиной трубопровода от смесителя до точки измерения +инерционность датчика, его тип. Например накладной датчик это плюс две секунды минимум (10 секунд максимум). Это важно в системе ГВС, когда используется теплообменник тут надо считать расстояние от смесителя до теплообменника, прибавить его эффективное расстояние и расстояние от него до датчика температуры. Для регулирования придется использовать уже ПИД регулятор. Если быть честным то ПД регулятор. Так как система ГВС не такая инерционная как система отопления. Хотя если все таки повезет и на ОВЕНе соберу систему управления, может доведу задумку адаптивного вычисления и двух сенсорного контроля до практики %)

    ШАГ 5 Аварийные ситуации
    ШАГ 6 Финальная сборка и привязка к ПЛК63
    ШАГ 7 Отображение данных
    Вложения Вложения
    • Тип файла: zip step4.zip (35.8 Кб, Просмотров: 296)
    Последний раз редактировалось kucherik; 15.10.2011 в 01:17.
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  8. #18

    По умолчанию

    А что если WaitTime привязать к значению рассогласования, т.е. ввести П-составляющую.

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

    По умолчанию PulseTime-WaitTime-DeadZone

    Цитата Сообщение от CEkip Посмотреть сообщение
    А что если WaitTime привязать к значению рассогласования, т.е. ввести П-составляющую.

    Можно, но в определенном пределе. Вроде бы я, в предыдущем шаге объяснил взаимосвязь между PulseTime-WaitTime-DeadZone, эти параметры очень тесно связаны друг с другом, и менять их произвольно это ввести систему в режим автогенерации.

    С уважением, Kucherik
    Если человек доверяет судъбе, то она ведет его по жизни, иначе тащит %)

  10. #20

    По умолчанию

    Вобщем кому интересно, выкладываю свою версию управления тремя контурами отопления. В частности в плане управления трехходовым много подсмотрено у Kucherika.
    Говорю сразу, все очень сыро, но вроде работает :-)
    Проект под ПЛК110-xx.60.Р-М.
    Вложения Вложения
    Последний раз редактировалось LAM; 20.10.2011 в 17:46.

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

Похожие темы

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

Ваши права

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