Страница 1 из 11 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 102

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

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

    По умолчанию ПЛК 63 в примерах

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

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

  2. #2

    По умолчанию

    Симпотично.
    Для себе мастерим?

  3. #3
    Пользователь
    Регистрация
    03.11.2010
    Адрес
    Земля
    Сообщений
    13

    По умолчанию

    Ждём-с........

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

    По умолчанию Первый шаг

    Для себя уже смастерил, просто стоит задача, "развлекательная", упражнения для ума и тела, сделать систему которая впишется в шиток 12*2 автоматов. И так получилось что данная реализация совпала. А так как я за свободу информации, вот и выкладываем.

    Как и обещал начинаю выкладывать описания на функциональные блоки для моего частного случая (использование плк 63 в качестве контролера отопления). Данный пример больше подходит для тепловых узлов и небольших котельных. Узел ГВС выполнен в виде бойлера. Основываясь на цели облегчения понимания работы данной программы принял решение писать модули на CFC и SFC. В тех случаях когда это сложно буду выкладывать два вида, т.е. дополнительный сделанный на других языках поддерживаемых CoDeSys. А в совсем сложных случаях предлагаю воспользоваться описанной функцией как готовым блоком. В будущем и возможно для кого то уже сейчас можно это все скомпоновать в библиотеку. Призываю всех желающих поучаствовать в написании функций и их устройства, не скупиться на комментарии.


    ШАГ 1 — инициализация, обработка сигналов

    Базовая часть программы используется стандартное PLC_PRG рекомендую использование SFC, так как в нем достаточно просто реализуется шаги МЭК для режима инициализации и работы. В конечной реализации программы в первом шаге будут производиться инициализация входов-выходов и другие действия «холодного старта» программы.
    Первое с чем сталкивается пользователь это работа с датчиками, я не описываю в данном примере получение значений. Это хорошо описано в руководствах, хотя и будут примеры когда используются устройства подключенные по ModBus. Однако есть задача и со стороны программиста проверить корректность получаемых значений. Для этих целей я использую два функциональных блока SensorReal и jitter.
    SensorReal контролирует диапазон получаемых значений и в случае выхода их из него выдает аварию датчика и Подменяет значение в случае выхода из диапазона, это может происходить в случае обрыва или короткого замыкания датчика. Данных функциональный блок в двух видах один в CFC другой на IL (делал из удовольствия и ностальгии по ассемблеру). Структура достаточно простая производятся сравнение с максимальным и минимальным значение и в случае выхода за диапазон выдается сигнал авария и одновременно с этим подставляется для выхода значение по умолчанию.
    В некоторых случает значение параметра остается диапазоне но перестает меняться, что говорит тоже о неполадках с датчиком. Данный блок jitter (с анг. дрожать) состоит всего из трех элементов, первый сравнивает изменилось ли значение с последнего момента исполнения кода данного функционального блока, если разница есть, то второй блок это таймер задержки включения TON, в данном случае он выполняет функцию по задержке подачи аварийного сигнала, то есть дает время значению измениться, если это не происходит в течении указанного времени то на выходе появится аварийный сигнал. Третий элемент постоянно выполняет копирование значения со входа в память функционального блока в случае если есть между ними разница. Хотя можно было бы и не использовать EN/ENO и выполнять копирование постоянно, но так более правильно с точки зрения написания кода, например кто-то баловался с порядком обработки блоков и поменяет последовательность и копирование начнет теперь выполняться раньше чем было произведено сравнение, получится постоянная авария с этого функционального блока.

    Дополнительный комментарий
    Обработку сенсоров я предпочитаю выносить в отдельный программный блок, это более удобно, а здесь буду использовать вариант с шагами SFC чтобы показать стандартный порядок обработки данных и в нем сложнее допустить ошибку. Т.е. это не правило пишите так как вам удобно. Сначала описание базовой части производится без привязки к контролеру, однако к шестому шагу все соберется в одну кучу.

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

  5. #5

    По умолчанию

    Очень интересно!
    Ждём с нетерпением продолжения.
    К сожалению, обычно примеры приводят для ПЛК-100 или ПЛК-110.
    Но, у ПЛК-63 - множество особенностей (особенно, кнопки управления, дисплей).
    RS-485 также в режиме мастер не совсем стандартно организован.
    Поэтому, увидеть реальный проект, да ещё и связанный с мини-котельными - это очень актуально и интересно!
    Последний раз редактировалось kolyan; 10.10.2011 в 18:51.

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

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

    Как уже писал, сначала это не привязано к железу, как сделаю основу только тогда произведу привязку в данном примере к ПЛК 63, хотя я уже выкладывал проекты на 100 и 110. Здесь просто цель создать руководство типа how-to. Наверно, но не точно, я еще фотки этого щитка выложу.

    Итак продолжение....

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

    Итак, второй шаг для создания погодозависимого регулирования можно описать как два варианта подхода к построению графика отопления. Отдельно надо отметить режим управления включение и отключением насоса отопления. В случаях аварийных ситуаций, в данной электрическое схеме предусмотрено безусловное включение насоса (для защиты от замерзания, а так же в случае отключения контроллера, например для ручного управления). Сейчас большинство значений указываются как константы, для того чтобы можно было сразу проверить функциональность, на шестом шаге большинство из них будет уже привязано к дисплею или другим параметрам получаемых например по RS485.
    Самый простой способ вычисления это прямая, однако у нее есть пара недостатков, это отсутствие излома при -10 градусах, так же сложность коррекции к характеристике здания для получения максимально экономичного режима. Эти недостатки можно устранить используя коррекцию по температуре помещения (этот пример будет рассмотрен вне данного изложения).
    Для теплого пола, когда нет такой необходимости поддержания широкого температурного диапазона или не требуется такая точность, метод вполне годится. Поэтому используется модуль PogodaLinear. Этот модуль состоит из вычитающего элемента который определяет насколько температура наружнего воздуха ниже точки начала отсчета работы системы отопления, затем полученное значение умножается на «наклон». И далее прибавляется к минимальному значению температуры которое необходимо поддерживать в системе. И на выходе элемент LIMIT для приведения вычисленных значений в рабочий диапазон.
    Для линейной аппроксимации графика лучше всего подходит элемент curve из библиотеки util. Но там он сделан только как тип int, поэтому я выцедил его и переделал в real. Для работы так же пришлось создать пользовательский тип переменной oGraf. При выполнении импорта CURVELINE сама функция и пользовательская переменная включены в файл.
    Теперь надо выполнить инициализацию пользовательского массива, минимум для него это три точки — начало отопления, точка излома при -10 градусах и максимально низкая средняя температура декады, для Москвы -28. Я предпочитаю добавить еще две промежуточные точки — 0 градусов и -20. Таким образом для данного примера используется 5-ти точечный график аппроксимации. Диапазон возможного количества точек лежит от 2 до 11. На первом шаге надо проинициализировать массив графика, для облегчения реализации и из-за отсутствия контроля корректности вводимых значений часть промежуточных точек также введены как константы.
    В итоге получили вычисленные температуры для контуров. Осталось включить насосы и привязать управление сервоприводом.

    Дополнительный комментарий: Кому нравится вариант как сделано на ТРМ32 можно взять 2 точки и получите аналогичную реализацию. Массив объявлен на максимальное количество точек 11.

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

  7. #7

    По умолчанию

    Простите великодушно, а чем вас стандартные функции и переменные для работы с графиками не устраивают? Количеством точек?

  8. #8

    По умолчанию

    А что, если в ФБ Sensor_Real применить в качестве основы ФБ из Owen_Fb_Lib Decode_Float?
    И, от себя уже, добавить контроль min и max температур ( хотя, это и не совсем обязательно, т.к. данный ФБ выполняет проверку и на выход значений за допустимые пределы).

    Этот ФБ, кроме всего прочего, выдаёт на выходе один из 10 кодов, в которых зашифрован вид неисправности датчика.
    А, в дальнейшем, можно вывести на дисплей расшифровку с указанием вида случившейся неполадки с датчиком (а не просто alarm).
    ИМХО, это значительно облегчает поиск неисправностей во время наладки или эксплуатации на реальном объекте.

    Например, вот так:
    Вложения Вложения
    Последний раз редактировалось kolyan; 12.10.2011 в 14:00.

  9. #9

    По умолчанию

    Или же, ещё упростив, такой вариант:
    Вложения Вложения

  10. #10

    По умолчанию

    Присоединюсь к обсуждению:
    В качестве погодозависимого графика я у себя использовал функцию из библиотеки OSCAT, очень даже ничего получилось, Я не знаю почему, но в ОСКАТе и у Кромшрёдера эти графики очень похожи.

    Итак, температуру в помещении мы посчитали, по графику ,теперь нужно внести поправку в зависимости от температуры.
    Я с этим немного экспериментировал, и остановился на простом тупом пропорциональном регулировании, причем никакие ПИДы тут и не нужны.
    Реальное помещение - это абсолютно непредсказуемая система, и всякие накопленные ошибки и т.д. только вносят дополнительные погрешности в систему. К тому же система очень медленная, и отклик на воздействие приходит очень медленно, а с учетом непредсказуемости поведения людей в этом помещении (Включение/выключение различных приборов, компьютеров и т.д., открывание/закрывание форточек, окон, дверей, поведение людей непосредственно находящихся в этом помещении) отклик вообще может не соответствовать возмущению.

    Так вот как я вносил поправку и почему:
    Ттепл=Трасч+DT*K; где:
    Ттепл - необходимая температура теплоносителя уходящего в контур.
    Трасч - температура теплоносителя расчитанная по погодозависимому графику.
    DT=Туст-Тизм - разница между измеренной температурой помещения и уставкой.
    Туст - уставка температуры помещения.
    Тизм - температура измеренная комнатным датчиком.
    K- коэфициент пропорциональности, его прийдется подобрать опытным путем, потому что, чем меньше это число тем ниже точность поддержания температуры, а если перебрать, то возможен выход системы из равновесия (температура в помещении начнет колебаться по синусоиде с очень большим интервалом времени).
    В своем случае я подставлял коэфициент =30.

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

    P.S. Некоторые комнатные термостаты вообще показывают температуру с шагом 0.5 градуса, и выставить уставку на них возможно с таким же шагом.
    Последний раз редактировалось LAM; 12.10.2011 в 23:34.

Страница 1 из 11 123 ... ПоследняяПоследняя

Похожие темы

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

Ваши права

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