2 года назад заказчик дал задание на автоматизацию постов налива бензина. На каждый пост своё управление. Затем все собираем в кучу в SCADA систему. К сожалению проект пришлось заморозить, так как требовалось кучу разрешительной документации. Сама программа работала «на столе». На реальном объекте испытать не удалось. Пишу статью, может для кого-то пригодятся «Фичи» в CoDeSyS 3.5.
Приветствую всех читателей сайта, с вами на связи автор — Семен. И я продолжаю писать статьи по пром. автоматизации.
Что за пост налива?
Пост налива — это некая металлоконструкция с лестницей и гибким шлангом, либо сверху, либо снизу. Этот шланг подводят к бензовозу и наполняют его топливом. Выглядит он следующим образом:
Топливо наполняется вот таким вот шлангом:
Что находится примерно в составе оборудования.
Насос
Клапан большого налива
Клапан малого налива
Массовый расходомер
Различные сигнализации
Какие задачи были поставлены в реализации программы:
Универсальность — передача данных для верхнего уровня либо по Ethernet, либо по RS-485.
Подключение различных видов массовых расходомеров — по импульсу или по Modbus.
Фиксация различных аварий и защит и запись в аварийный журнал.
Запуск программы по месту или удаленно.
Различные клапана подачи топлива, либо два клапана либо регулирующий кран.
Управление постом налива реализовывали на базе ПЛК200 с применение CoDeSyS 3.5.
Программа на CoDeSyS 3.5
Ну начнем с того, что я разбивал все процессы и задачи на подпрограммы — чтобы потом легче было находить косяки при отладке.
Дерево проектов выглядит примерно так:
В основной программе создан подраздел действие (ACT), сюда я записываю различные преобразования данных, передачу данных и привязку физических входов-выходов.
Тело программы (PLC_PRG) с логикой.
И различные функциональные блоки и функции. Аварии(Avarii_post) и Регулирующий кран(kran)/
Опрос модуля ввода аналогового, панели оператора и массового расходомера по интерфейсу RS-485.
Обязательно ручной режим, включение насосов, задвижек, клапанов, кранов и т.д.
Расчет расхода сделал примерно таким, без учета цены импульса. Знаю, что код кривоват, если есть варианты получше, подскажите, как написать?
Выбор режима для расхода и задвижки делал через CASE.
Запуск пошаговой программы реализован через CASE. При отладке наглядно показано, где программа остановилась и по какой ПРИЧИНЕ.
Обработчик стоповой кнопки, все прописано, когда, куда и что должно остановиться.
Обработчик аварий и отправка сообщений через массив.
Аварийная ситуация и что должно произойти.
Ставили ещё маленькую панель оператора, вот такая была менюшка:
Ну и что предполагалось быть в мнемосхеме Master SCADA 3.12. Ставили именно её.
На этом я заканчиваю, если будут вопросы, пишите.