ЖУРНАЛ СТА №1/2023

реднего фронта срабатывает триггер rs1, принимая логическое состояние 1. Открывается клапан, далее сигнал сле- дует на блок AND. Так как флаг совер- шения попытки розжига try и сигнал с фотодатчика имеют логический 0, то инверсивный сигнал на входе блока имеет 1, и происходит подача искры через таймер импульсного сигнала tp1 во второй строке схемы. Одновремен- но с этим запускается таймер ожида- ния пламени ton1. По завершении его счёта спустя 10 секунд выставляется флаг совершения попытки. Вместе с этим счётчик ctu1 производит инкре- ментирование числа попыток на 1, сравнивая полученное число с устав- кой, равной трём. При достижении трёх попыток взво- дится флаг try_out, который вызывает сброс триггера rs1. Также его сброс вы- зывает и подача сигнала остановки си- стемы розжига. При установке флага try происходит изменение значения флага iskra снача- ла на 0, затем вновь на 1. Тем самым за- пускается новый цикл розжига. Здесь следует иметь в виду, что переменная try должна быть объявлена как гло- бальная и не сбрасываться при каждом цикле скана используемого POU. В слу- чае горения флаг foto_DI принимает логическое состояние 1. Благодаря это- му через инверсию блок AND на выходе принимает логическое состоя- ние 0, блокируя цикл розжига. Если пламя гаснет, блок AND снова прини- мает состояние 1, и цикл розжига начинается снова. Таким образом, для реализации задуманного потребова- лось создать, помимо простых пере- менных, ещё 8 функциональных бло- ков, что для такой простой задачи немало. Теперь попробуем решить её в рам- ках программного функционала «K15». Весь код размещаем в файле UCL.c. Здесь также не обойтись без объявле- ния переменных (рис. 8). Для единообразия сигналы имеют схожее обозначение. Дополнительно добавились переменные state (стадия работы системы), count (аккумулятор счётчика времени) и try_count (аккуму- лятор числа попыток розжига). Далее обратимся к самому коду (рис. 9). Алгоритм выполняется в основном цикле файла. Работа системы разбита на стадии: СТОП, РОЗЖИГ и ГОРЕНИЕ. Код достаточно компактный и читаемый. Создание дополнительныхфункциональ- ных блоков не требуется. Следует обра- СТА 1/2023 53 www.cta.ru ПРОЕ К ТЫ Рис. 8. Создание переменных и функциональных блоков для K15 Рис. 9. Программа для K15 на языке C++ SCADA-СИСТЕМЫ • Основы работы с программным пакетом ICONICS GENESIS64 ПРОГРАММИРОВАНИЕ ПЛК • Работа с контроллерами FASTWEL I/O, WAGO I/O в среде CODESYS УЛ. ПРОФСОЮЗНАЯ, Д. 108 ТЕЛЕФОН: +7 (495) 234-06-36 E-MAIL: EDUCENTER@PROSOFT.RU УЧЕБНЫЙЦЕНТР ПРОСОФТ-МОСКВА Дистанционные курсы: М ЫОБНОВИЛИСЬ И РАСШИРЯЕМ ВАШИ КОМПЕТЕНЦИИ ОНЛАЙН

RkJQdWJsaXNoZXIy MTQ4NjUy