Найти в Дзене
yura2507

Учимся программировать промышленную автоматику на примере ОВЕН ПР. Часть 5.

Оглавление

Здравствуйте!

Эта статья, в цикле «АСУшник» за неделю, будет последней, вы можете задавать вопросы в комментариях, и, по возможности, я попробую на них ответить. Всего получилось чуть больше 20 страниц, и более 56 часов на написание.

В прошлой статье я рассмотрел 1 пример, и рассказал то, что нужно было рассказать:

Сегодня продолжим 2-мя другими примерами.

Пример 2.

Скачать можно тут - https://disk.yandex.ru/d/8da_Qyx_1KYYlQ Эскалатор.

Эскалатор. Включается, когда на ступень вступают, и выключается через 5 секунд после того, как последний вошедший на него человек, сойдёт с последней ступени.

  1. Эскалатор работает с 7-00 до 22-00.
  2. Есть датчик внизу эскалатора и вверху.
  3. Считаем сколько людей на эскалатор зашло.
  4. Выключаем эскалатор через 5 секунд после того, как сошел последний человек.
  5. Авария по превышению тока, блокирует эскалатор, повторный запуск возможен только с пульта оператора при условии снятия блокировки на самом эскалаторе. Осмотрел, снял первую ступень защиты, пришел на пульт – запустил эскалатор.
  6. Первый пуск, пуск после снятия аварии, пуск после отключения света сопровождается запуском эскалатора на 5 секунд, при условии, что ранее нет блокировки по превышению тока.

Разберем.

С чего стоит начать. Начать можно с любого этапа и постепенно наращивать алгоритм.

  1. Я начал с подсчёта, использовав универсальный счётчик, считаем вход и сход.
  2. Когда мы можем считать в «+»? Да, только тогда, когда нет аварии.
  3. Когда мы можем считать в «-», это не принципиально, т.к. только «+» может запустить Экскалатор. Но стоит помнить о том, что нам нельзя считать меньше 0, т.к. меньше 0 в UDINT это 9-ти значное число, а 9-ти значное число это "+", этого надо избегать.
  4. Какое условие ещё потребуется для счётчика? Сброс по истечению 10 секунд, если вдруг кто-то перепрыгнул датчик на выходе. Тут подойдёт таймер TOF, а триггером для его активации будет сравнение вошедших с линией задержки, о ней я говорил в прошлых записях. Мы проверяем число вошедших на равенство с задержкой в 1 цикл, и получаем в первом цикле не равенство, а во втором равенство, True на RTRIG и команда на запуск таймера TOF, и так до той поры, пока не перестанут входить люди. Как только люди перестали входить, таймер отсчитал 10 секунд, дал команду на сброс счётчика, и ещё 5 секунд для корректного завершения движения, согласно стандартному алгоритму, о нем чуть ниже.
-2

5. Что ещё нам понадобиться? Таймер времени работы с 7 утра до 22 вечера. Создадим макрос с математическими функциями, переведём всё в секунды и потом, методом сравнения будем активировать выход нашего Макроса Таймер. Не забываем о том, что в 7 утра эскалатор должен запуститься самостоятельно, по алгоритму «перепрыг датчика». Для чего? Ну а вдруг кто-то раньше 7 идёт по эскалатору, а это «Парк победы» в Москве, я однажды поднимался из глубокой станции метро Москвы пешком, к середине пути перешел на 4 лапы:).

Start_Timer - переменная для запуска эскалатора в 7 утра.
Start_Timer - переменная для запуска эскалатора в 7 утра.
Содержимое Макроса "Таймер".
Содержимое Макроса "Таймер".

6. Режим авария, или перегруз по току, на случай если кто-то застрял в ленте:). У нас есть датчик тока, при превышении тока получаем дискретный сигнал, по которому останавливаем эскалатор. Запуск возможен по двум кнопкам, первая на ленте, чтобы оператор убедился в безопасности работы эскалатора, а вторая с его локального пульта. Ещё не забудем сделать кнопку остановки с локального пульта оператора.

7. Старт при появлении питания, если его отключали, тут всё просто, триггер на дискретный вход, как только установка обесточится, а затем снова будет запитана – эскалатор стартанет, а стартанет он по команде на увеличение счёта ORx4 – 4 или, в которые я вписал все условия для запуска.

8. И последнее – запуск установки. Сравниваем наличие людей с нулём, если их больше 0 – запускаем таймер TOF, если на ленте осталось 0 человек, TOF отсчитает 5 секунд и выключит эскалатор. И тут сразу же добавим наши условия, время работы (с 7 до 22) и нет Аварии. Если всё совпало – стартуем ленту.

-5

Вот так я вижу работу эскалатора, вы можете видеть её иначе и уже самостоятельно доработать алгоритм.

Пример 3.

Скачать можно тут - https://disk.yandex.ru/d/8da_Qyx_1KYYlQ Вытяжка.

Включение кухонной вытяжки над электрической плитой, при наличии тока в цепи электроплиты. Выключение вытяжки при отсутствии тока в цепи, через 5 секунд.

  1. Включение по датчику тока.
  2. Включение по клавише на вытяжке.
  3. 3 скорости вращения, мин., средн., макс., через тиристор.
  4. Автоотключение вытяжки при отсутствии тока в цепи (нет тока 3 секунды) по истечении заданного времени.
  5. Принудительное отключение вытяжки при нажатии на клавишу Вкл/Выкл. И в случае отсутствия тока в цепи.
  6. Дополнительная команда на включение от сторонних приборов (датчик дыма над плитой, условно).
  7. Дополнительная команда на блокировку работы вытяжки и её полное отключение, на случай загазованности Метаном или в случае пожара.

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

Реализация:

1. Начнем с создания алгоритма: включение вытяжки по кнопке. Т.к вытяжка имеет 3 регулируемые скорости, и эти скорости задаются непосредственно с кнопок вытяжки, будем использовать AI в режиме измерения сопротивления. 0 Ом – вкл\выкл, 100-300 Ом – 1-ая скорость, 500-1000 Ом – 2-ая скорость, и 3.5 кОм – 10 кОм – 3-тья скорость. Предположим, что вы впаяли в механизм вытяжки резисторы, что я и сделал на своих проектах. Обратите внимание на таймер TON который всегда включен. Сейчас для вас это может быть совершенно не понятно, но в будущем вы столкнетесь с такой проблемой – как процесс инициализации. После того как проект будет загружен в ПЛК, в первое включение, ПЛК не видит, что там на входе AI, он ещё не успел сделать измерения, и если мы не сделаем инициализационную паузу, будет послана команда True, что не есть правильно. В остальном, алгоритм простой, сравниваем на больше-меньше, подставляем конкретные цифры. При 0-10 Ом посылаем команду на запуск\остановку, кнопка на вытяжке без фиксации, остальные 3 с фиксацией. Обратите внимание на блок Селектор, от него идут конкретные данные. Предполагается, что какая-то кнопка скорости всегда нажата.

-6

2. Вторым этапом сделаем запуск и остановку вытяжки, по датчику тока и по физической кнопке. Не забываем о том, что запуск по датчику тока запускает таймер на выключение вытяжки, при отсутствии тока. На DI датчика тока установим RTRIG – на случай поломки датчика тока, чтобы вытяжка не молотила постоянно, как-никак используем SR триггер (приоритет и все дела из 3 части). Соберём всё это в макрос.

-7

3. Реализуем принудительное включение и выключение. По включению предлагаю использовать тот же алгоритм что и кнопка, не подвешивать вытяжку, так же через RTRIG. Блокировку и отключение сделаем через «НЕ», хотя можно развернуться, реализовать кнопку сброса аварии и т.д., но это вы уже сами в своих проектах реализуете.

4. Почти всё готово, осталось только послать команду на включение контактора Q1 (который управляет цепью вентилятора) и передать скорость на AO. Какая она должна быть и в каких единица – зависит от конкретного устройства, у того ПР, с которым я работаю, нет AO и предполагается то, что в качестве AO модуля будет отдельный ModBus прибор с Аналоговым выходом, потому, пока отсылаем 30-100%, на практике вы сможете воспользоваться формулой масштабирования, или же редактированием макроса скорости.

Компактно, красиво, удобно:). Макросы помогают экономить рабочее поле.
Компактно, красиво, удобно:). Макросы помогают экономить рабочее поле.

Ну вот и всё, вытяжка работает. Что можно сделать ещё? Можно сделать ввод уставки, для того чтобы с экрана ПР вводить нужное время автоматического отключения вытяжки, можно сделать маскировку датчиков дыма и газа, да и много чего ещё можно придумать, но это вы уже сделаете сами.

Итоги.

Как сказал мой предыдущий работодатель: прошел (этот) курс за счет компании, и быстро сменил работу. Я скажу больше, получил должность ведущего инженера АСУТП в крупной международной компании:). Но, чудес не бывает, данный материал поможет вам начать освоение очень сложной сферы – АСУТП, и что-то подобное, и даже больше, вы сможете получить очно на курсах компании ОВЕН, о которых я тоже писал. А работодателю надо думать о своих сотрудниках, умножая ЗП хотя бы на 3 (Три), а не о том что кто-то ушел от него из-за того что получил сертификат о прослушанных курсах.

Освоив «Кубики», вы без труда сможете двигаться дальше, осваивать текстовый язык, который даст вам значительно больше возможностей. Но перед тем, как двигаться дальше, изучите досконально все варианты написания и оптимизации кода на FBD (CFC).

По Текстовому языку, на сегодняшний день есть лишь одна книга на Русском языке, в которой очень доступно написано как программировать на ST. Не обижайте автора этой книги, купите оригинал, желательно бумажный. Романов Сергей сделал большую работу для всех нас - https://vk.com/wall101898439_442

Рекомендую приобрести для опытов любой ПР, конечно же БУ, по самой выгодной цене на вторичном рынке, их там более чем достаточно.

Желаю вам удачи в освоении материала! И не забывайте, цикл наше всё:), вернись к первой строчке и повтори, до тех пор, пока сам не сможешь придумывать себе задачи и решать их.

Всего вам хорошего, пока!