- PVSM.RU - https://www.pvsm.ru -
Добрый день, уважаемые читатели!
Расскажу вам о своём проекте, который делаю в свободное время уже три года.
Работаю в компании занимающейся автоматизацией на должности программиста контроллеров. Последнее время, в основном, используем Siemens, ПЛК SIMATIC S7 и пакет визуализации WinCC, но есть опыт и по другим производителям. Профиль компании – нефтегазовый сектор (резервуарные парки, насосные, железнодорожные эстакады, причальные комплексы, системы пожаротушения).
Наверное, с самого первого проекта, меня интересовал вопрос тестирования программного обеспечения до этапа пуско-наладки на реальном оборудовании. Не так давно, на хабре был пост — Программирование ПЛК Siemens на Simatic Step7 [1], и адреналин, про который говорилось в комментариях, знаком мне не понаслышке.
В настоящий момент, используя мою программную платформу, мы можем избавиться от большей части ошибок и отладить автоматизированные функции в комфортных условиях офиса (а не сидя на катушке кабеля, в неотапливаемом помещении, в морозный зимний день).
В упрощённом виде наша АСУТП состоит из следующих компонентов:
От датчиков и исполнительных механизмов сигналы поступают в ПЛК, обрабатываются и передаются в систему визуализации, с которой взаимодействует человек-оператор. Команды оператора передаются обратно в ПЛК, который генерирует нужные сигналы для управления исполнительными механизмами. Автоматизированные функции и противоаварийные защиты (ПАЗ) реализуются в ПЛК.
У нас в разработке, обычно, участвуют два человека. Один пишет программу для ПЛК, второй делает систему визуализации. Сейчас стараемся задействовать третьего – тестировщика. Не могу сказать, что мы реализуем очень сложные алгоритмы управления, но есть своя специфика, связанная, прежде всего, с размерами системы. Например, мой текущий проект в сумме имеет приблизительно 2300 сигналов, большая часть из которых входные (около 1500).
Для тестирования, стенд, состоящий из ПЛК и системы визуализации, собираем в офисе. Некоторые производители предлагают программные симуляторы ПЛК, так что, иногда, можно обойтись обычной компьютерной техникой. Например, S7PLCSim от Siemens:
Остаётся вопрос с датчиками и исполнительными механизмами, которые связаны с нашей системой через дискретные/аналоговые входные/выходные сигналы.
Некоторые компании производители ПЛК предоставляют инструменты для программной имитации входных сигналов. Например, через среду программирования Step7 контроллеров Siemens можно значение любого входного сигнала, в реальном ПЛК, задать принудительно (форсировать), а если вы используете симулятор контроллера, просто установить через графический интерфейс. На приведённой выше иллюстрации: IB 10 – байт входов, IW 5 – слово входов, QB 7 и QW 2 – выхода, а MD 123 – двойное слово во внутренней памяти котроллера.
Другой подход, который необходимо упомянуть, это имитация входных сигналов на уровне железа. Для нас данный подход неудобен – слишком много времени тратится на подключение. Кроме того, в офисе, обычно, есть только модуль процессора от ПЛК, а модули для подключения входных/выходных сигналов, которые ставятся в отдельных шкафах, стоят на складе или уже отправлены для монтажа к заказчику.
Понятно, что таким средствами, можно провести простую проверку прохождения сигналов от контроллера в систему визуализации и обратно. Можно отладить не очень сложные автоматические алгоритмы, благо, что в Step7 есть точки останова (breakpoints). Но если в алгоритме участвует несколько единиц оборудования (несколько насосов + обвязка из задвижек и датчиков) это достаточно сложно.
Вот уже несколько лет для каждого своего проекта, помимо программы для ПЛК, я создаю программный симулятор автоматизируемого объекта. Англоязычные источники иногда называют подобные системы — Factory Acceptance Test (FAT) simulator (симулятор для заводской приёмки) и классифицируют их по степени достоверности симуляции. В сети совсем не много информации по созданию подобных симуляторов, в основном используются Matlab + Simulink, LabView, кто-то реализует симуляцию внутри ПЛК. Есть специальные средства разработки – WinMOD, Mynah MiMiC, Siemens SIMIT, APROS.
После некоторых размышлений, решил попробовать создать свою платформу. Прежде всего, было желание изучить что-то новое (.NET и С#). Обстоятельства сложились удачно, и наша компания, для одного из проектов, приобрела готовую библиотеку OPC клиента. Это позволило мне сконцентрироваться на основной задаче.
Чтобы создать программный симулятор для стенда с реальным ПЛК необходимо предусмотреть в нём подмену данных получаемых с физических входов на имитационные. К сожалению, это приходится делать в самой программе контроллера. Следующий шаг – обеспечить доступ к этим данным через OPC интерфейс. После этого, можно приступать к написанию программы ПЛК и созданию симулятора автоматизируемого объекта.
Если использовать S7PLCSim – в подмене данных нет необходимости. При этом систему визуализации придётся запустить на той же машине вместе с S7PLCSim и симулятором объекта (ограничение S7PLCSim). В случае нехватки мощности можно попробовать разнести их с помощью бесплатной утилиты NetToPLCSim.
Платформа, которую я разработал, похожа на примитивную среду для создания систем визуализации. Работу можно разбить на три этапа:
На текущей стадии развития, платформа позволяет подключение только к одному симулятору контроллера SIMATIC S7 и одному OPC серверу. Зато, все переменные видны по OPC, так как платформа является OPC сервером.
Добавлять и удалять переменные можно во время работы симулятора. Система не позволит удалить переменную, которая используется.
Объекты можно добавлять, удалять и редактировать его свойства во время работы симулятора.
Для того чтобы удалить объект симуляции необходимо сначала удалить все его отображения на всех панелях.
Конфигурация симулятора сохраняются в виде XML файла с простой структурой:
<ProcessSimulator> <Items> [Переменные] </Items> <SimulationObjects> [Объекты симуляции] </SimulationObjects> <Screens> [Панели с отображениями объектов симуляции] </Screens> </ProcessSimulator>
Это позволяет редактировать его вручную, генерировать скриптами, например в Excel, а также полноценно использовать систему контроля версий.
Так может выглядеть интерфейс симулятора:
Создание симулятора автоматизируемого объекта даёт множество преимуществ:
Так как это мой первый опыт создания чего-то серьёзного на С#, прежде всего, хотелось бы переработать архитектуру:
На сайте automation.ucoz.com [2] можно скачать демонстрационную версию. Она не ограничена по времени, но в ней можно создать только 20 переменных и 10 объектов симуляции (все типы, кроме С# скриптов).
Автор: Alexor
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/testirovanie/6173
Ссылки в тексте:
[1] Программирование ПЛК Siemens на Simatic Step7: http://habrahabr.ru/post/139180/
[2] automation.ucoz.com: http://automation.ucoz.com
Нажмите здесь для печати.