Здравствуйте!
Эта статья, в цикле «АСУшник» за неделю, будет последней, вы можете задавать вопросы в комментариях, и, по возможности, я попробую на них ответить. Всего получилось чуть больше 20 страниц, и более 56 часов на написание.
В прошлой статье я рассмотрел 1 пример, и рассказал то, что нужно было рассказать:
Сегодня продолжим 2-мя другими примерами.
Пример 2.
Скачать можно тут - https://disk.yandex.ru/d/8da_Qyx_1KYYlQ Эскалатор.
Эскалатор. Включается, когда на ступень вступают, и выключается через 5 секунд после того, как последний вошедший на него человек, сойдёт с последней ступени.
- Эскалатор работает с 7-00 до 22-00.
- Есть датчик внизу эскалатора и вверху.
- Считаем сколько людей на эскалатор зашло.
- Выключаем эскалатор через 5 секунд после того, как сошел последний человек.
- Авария по превышению тока, блокирует эскалатор, повторный запуск возможен только с пульта оператора при условии снятия блокировки на самом эскалаторе. Осмотрел, снял первую ступень защиты, пришел на пульт – запустил эскалатор.
- Первый пуск, пуск после снятия аварии, пуск после отключения света сопровождается запуском эскалатора на 5 секунд, при условии, что ранее нет блокировки по превышению тока.
Разберем.
С чего стоит начать. Начать можно с любого этапа и постепенно наращивать алгоритм.
- Я начал с подсчёта, использовав универсальный счётчик, считаем вход и сход.
- Когда мы можем считать в «+»? Да, только тогда, когда нет аварии.
- Когда мы можем считать в «-», это не принципиально, т.к. только «+» может запустить Экскалатор. Но стоит помнить о том, что нам нельзя считать меньше 0, т.к. меньше 0 в UDINT это 9-ти значное число, а 9-ти значное число это "+", этого надо избегать.
- Какое условие ещё потребуется для счётчика? Сброс по истечению 10 секунд, если вдруг кто-то перепрыгнул датчик на выходе. Тут подойдёт таймер TOF, а триггером для его активации будет сравнение вошедших с линией задержки, о ней я говорил в прошлых записях. Мы проверяем число вошедших на равенство с задержкой в 1 цикл, и получаем в первом цикле не равенство, а во втором равенство, True на RTRIG и команда на запуск таймера TOF, и так до той поры, пока не перестанут входить люди. Как только люди перестали входить, таймер отсчитал 10 секунд, дал команду на сброс счётчика, и ещё 5 секунд для корректного завершения движения, согласно стандартному алгоритму, о нем чуть ниже.
5. Что ещё нам понадобиться? Таймер времени работы с 7 утра до 22 вечера. Создадим макрос с математическими функциями, переведём всё в секунды и потом, методом сравнения будем активировать выход нашего Макроса Таймер. Не забываем о том, что в 7 утра эскалатор должен запуститься самостоятельно, по алгоритму «перепрыг датчика». Для чего? Ну а вдруг кто-то раньше 7 идёт по эскалатору, а это «Парк победы» в Москве, я однажды поднимался из глубокой станции метро Москвы пешком, к середине пути перешел на 4 лапы:).
6. Режим авария, или перегруз по току, на случай если кто-то застрял в ленте:). У нас есть датчик тока, при превышении тока получаем дискретный сигнал, по которому останавливаем эскалатор. Запуск возможен по двум кнопкам, первая на ленте, чтобы оператор убедился в безопасности работы эскалатора, а вторая с его локального пульта. Ещё не забудем сделать кнопку остановки с локального пульта оператора.
7. Старт при появлении питания, если его отключали, тут всё просто, триггер на дискретный вход, как только установка обесточится, а затем снова будет запитана – эскалатор стартанет, а стартанет он по команде на увеличение счёта ORx4 – 4 или, в которые я вписал все условия для запуска.
8. И последнее – запуск установки. Сравниваем наличие людей с нулём, если их больше 0 – запускаем таймер TOF, если на ленте осталось 0 человек, TOF отсчитает 5 секунд и выключит эскалатор. И тут сразу же добавим наши условия, время работы (с 7 до 22) и нет Аварии. Если всё совпало – стартуем ленту.
Вот так я вижу работу эскалатора, вы можете видеть её иначе и уже самостоятельно доработать алгоритм.
Пример 3.
Скачать можно тут - https://disk.yandex.ru/d/8da_Qyx_1KYYlQ Вытяжка.
Включение кухонной вытяжки над электрической плитой, при наличии тока в цепи электроплиты. Выключение вытяжки при отсутствии тока в цепи, через 5 секунд.
- Включение по датчику тока.
- Включение по клавише на вытяжке.
- 3 скорости вращения, мин., средн., макс., через тиристор.
- Автоотключение вытяжки при отсутствии тока в цепи (нет тока 3 секунды) по истечении заданного времени.
- Принудительное отключение вытяжки при нажатии на клавишу Вкл/Выкл. И в случае отсутствия тока в цепи.
- Дополнительная команда на включение от сторонних приборов (датчик дыма над плитой, условно).
- Дополнительная команда на блокировку работы вытяжки и её полное отключение, на случай загазованности Метаном или в случае пожара.
Подобный алгоритм реализован в моём доме и в нескольких домах, где я делал щиты. Но я напишу алгоритм заново, на кубиках, и он будет отличаться от того, что уже имеется.
Реализация:
1. Начнем с создания алгоритма: включение вытяжки по кнопке. Т.к вытяжка имеет 3 регулируемые скорости, и эти скорости задаются непосредственно с кнопок вытяжки, будем использовать AI в режиме измерения сопротивления. 0 Ом – вкл\выкл, 100-300 Ом – 1-ая скорость, 500-1000 Ом – 2-ая скорость, и 3.5 кОм – 10 кОм – 3-тья скорость. Предположим, что вы впаяли в механизм вытяжки резисторы, что я и сделал на своих проектах. Обратите внимание на таймер TON который всегда включен. Сейчас для вас это может быть совершенно не понятно, но в будущем вы столкнетесь с такой проблемой – как процесс инициализации. После того как проект будет загружен в ПЛК, в первое включение, ПЛК не видит, что там на входе AI, он ещё не успел сделать измерения, и если мы не сделаем инициализационную паузу, будет послана команда True, что не есть правильно. В остальном, алгоритм простой, сравниваем на больше-меньше, подставляем конкретные цифры. При 0-10 Ом посылаем команду на запуск\остановку, кнопка на вытяжке без фиксации, остальные 3 с фиксацией. Обратите внимание на блок Селектор, от него идут конкретные данные. Предполагается, что какая-то кнопка скорости всегда нажата.
2. Вторым этапом сделаем запуск и остановку вытяжки, по датчику тока и по физической кнопке. Не забываем о том, что запуск по датчику тока запускает таймер на выключение вытяжки, при отсутствии тока. На DI датчика тока установим RTRIG – на случай поломки датчика тока, чтобы вытяжка не молотила постоянно, как-никак используем SR триггер (приоритет и все дела из 3 части). Соберём всё это в макрос.
3. Реализуем принудительное включение и выключение. По включению предлагаю использовать тот же алгоритм что и кнопка, не подвешивать вытяжку, так же через RTRIG. Блокировку и отключение сделаем через «НЕ», хотя можно развернуться, реализовать кнопку сброса аварии и т.д., но это вы уже сами в своих проектах реализуете.
4. Почти всё готово, осталось только послать команду на включение контактора Q1 (который управляет цепью вентилятора) и передать скорость на AO. Какая она должна быть и в каких единица – зависит от конкретного устройства, у того ПР, с которым я работаю, нет AO и предполагается то, что в качестве AO модуля будет отдельный ModBus прибор с Аналоговым выходом, потому, пока отсылаем 30-100%, на практике вы сможете воспользоваться формулой масштабирования, или же редактированием макроса скорости.
Ну вот и всё, вытяжка работает. Что можно сделать ещё? Можно сделать ввод уставки, для того чтобы с экрана ПР вводить нужное время автоматического отключения вытяжки, можно сделать маскировку датчиков дыма и газа, да и много чего ещё можно придумать, но это вы уже сделаете сами.
Итоги.
Как сказал мой предыдущий работодатель: прошел (этот) курс за счет компании, и быстро сменил работу. Я скажу больше, получил должность ведущего инженера АСУТП в крупной международной компании:). Но, чудес не бывает, данный материал поможет вам начать освоение очень сложной сферы – АСУТП, и что-то подобное, и даже больше, вы сможете получить очно на курсах компании ОВЕН, о которых я тоже писал. А работодателю надо думать о своих сотрудниках, умножая ЗП хотя бы на 3 (Три), а не о том что кто-то ушел от него из-за того что получил сертификат о прослушанных курсах.
Освоив «Кубики», вы без труда сможете двигаться дальше, осваивать текстовый язык, который даст вам значительно больше возможностей. Но перед тем, как двигаться дальше, изучите досконально все варианты написания и оптимизации кода на FBD (CFC).
По Текстовому языку, на сегодняшний день есть лишь одна книга на Русском языке, в которой очень доступно написано как программировать на ST. Не обижайте автора этой книги, купите оригинал, желательно бумажный. Романов Сергей сделал большую работу для всех нас - https://vk.com/wall101898439_442
Рекомендую приобрести для опытов любой ПР, конечно же БУ, по самой выгодной цене на вторичном рынке, их там более чем достаточно.
Желаю вам удачи в освоении материала! И не забывайте, цикл наше всё:), вернись к первой строчке и повтори, до тех пор, пока сам не сможешь придумывать себе задачи и решать их.
Всего вам хорошего, пока!