Симулятор для тестирования ПО АСУТП

Расскажу вам о своём проекте, который делаю в свободное время уже три года.
Работаю в компании занимающейся автоматизацией на должности программиста контроллеров. Последнее время, в основном, используем Siemens, ПЛК SIMATIC S7 и пакет визуализации WinCC, но есть опыт и по другим производителям. Профиль компании – нефтегазовый сектор (резервуарные парки, насосные, железнодорожные эстакады, причальные комплексы, системы пожаротушения).
Наверное, с самого первого проекта, меня интересовал вопрос тестирования программного обеспечения до этапа пуско-наладки на реальном оборудовании. Не так давно, на хабре был пост — Программирование ПЛК Siemens на Simatic Step7, и адреналин, про который говорилось в комментариях, знаком мне не понаслышке.
В настоящий момент, используя мою программную платформу, мы можем избавиться от большей части ошибок и отладить автоматизированные функции в комфортных условиях офиса (а не сидя на катушке кабеля, в неотапливаемом помещении, в морозный зимний день).
Введение
В упрощённом виде наша АСУТП состоит из следующих компонентов:
- Датчики (давления, температуры) и исполнительные механизмы (задвижки, насосы).
- Программируемый логический контроллер (ПЛК).
- Система визуализации (SCADA, HMI).
У нас в разработке, обычно, участвуют два человека. Один пишет программу для ПЛК, второй делает систему визуализации. Сейчас стараемся задействовать третьего – тестировщика. Не могу сказать, что мы реализуем очень сложные алгоритмы управления, но есть своя специфика, связанная, прежде всего, с размерами системы. Например, мой текущий проект в сумме имеет приблизительно 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.
Платформа
Платформа, которую я разработал, похожа на примитивную среду для создания систем визуализации. Работу можно разбить на три этапа:
- Создание переменных (Item). Их всего три типа:
- Internal — внутренняя переменная, которая используется для связи между объектами внутри симулятора.
- OPC — переменная связанная с внешним OPC сервером. В данном случае симулятор выступает OPC клиентом.
- S7PLCSim — данная переменная предназначена для связи с симулятором контроллера SIMATIC S7. Поддерживаются области памяти I, Q, M и DB.
На текущей стадии развития, платформа позволяет подключение только к одному симулятору контроллера SIMATIC S7 и одному OPC серверу. Зато, все переменные видны по OPC, так как платформа является OPC сервером.
Добавлять и удалять переменные можно во время работы симулятора. Система не позволит удалить переменную, которая используется.
Объекты можно добавлять, удалять и редактировать его свойства во время работы симулятора.
[Переменные] [Объекты симуляции] [Панели с отображениями объектов симуляции]
Это позволяет редактировать его вручную, генерировать скриптами, например в Excel, а также полноценно использовать систему контроля версий.

Так может выглядеть интерфейс симулятора:
Возможности
Создание симулятора автоматизируемого объекта даёт множество преимуществ:
- Удобство разработки и тестирования. Создавая программу для ПЛК и параллельно с ней симулятор объекта, я могу проверить каждый участок кода и смоделировать практически любую ситуацию. Разработчик системы визуализации, также, пользуется всеми удобствами симулятора, не вникая, при этом, в программу ПЛК (и не дёргая меня, каждый раз, когда хочет что-то проверить). Более-менее нормальный графический интерфейс позволяет привлечь к тестированию системы человека, который не принимал участия в её создании, а значит, найдёт больше ошибок, чем любой из создателей. Кроме того, даже на объекте, можно переключить систему в режим симуляции, что-то доработать и проверить полностью программным методом, без использования реального оборудования.
- Демонстрация работы программной части системы независимо от степени готовности всего остального.
- Обучение операторов. Работа системы в режиме симуляции позволяет оператору более подробно, и главное без стресса, изучить работу системы (и найти ошибки).
- Упрощение гарантийного сопровождения системы. Если воссоздать условия возникновения ошибки, иногда, можно обойтись без командировки на объект.
Дальнейшее развитие
Так как это мой первый опыт создания чего-то серьёзного на С#, прежде всего, хотелось бы переработать архитектуру:
- Выделить слой отвечающего за внешние соединения и реализовать их в виде подключаемых модулей (Plug-in). Это позволит подключаться к нескольким OPC серверам и экземплярам Siemens SIMATIC S7PLCSim. Кроме того, облегчит добавление других типов соединений, например Modbus.
- Внедрить класс визуальных элементов не связанных с симуляционными объектами. В настоящий момент, любой элемент интерфейса пользователя на экране обязательно связан с объектом симуляции, что не очень удобно. Иногда действительно не хватает возможности чего-нибудь нарисовать, вставить картинку или просто написать поясняющий текст.
- Создать систему подключаемых модулей (Plug-in) для объектов симуляции и их отображений. Основное направления развития платформы – расширение библиотеки объектов симуляции, поэтому удобство их создания и интеграции является ключевым фактором.

Сайт
На сайте automation.ucoz.com можно скачать демонстрационную версию. Она не ограничена по времени, но в ней можно создать только 20 переменных и 10 объектов симуляции (все типы, кроме С# скриптов). полную версию (Freeware).
Как запустить симуляцию контроллера plcsim
Форум по промышленной автоматизации
Шлюз данных Weintek cMT-G02
Цена: по запросу Наличие: Есть на складе
Панельный компьютер APLEX ViTAM-916AG
Цена: по запросу Наличие: Под заказ
Облачный интерфейс Weintek cMT-SVR-102
Цена: по запросу Наличие: Есть на складе
Панель оператора Weintek cMT3162X
Цена: по запросу Наличие: Есть на складе
Панель оператора Weintek MT8051iE
Цена: 300 у.е. Наличие: Есть на складе
Панель оператора Weintek MT8070iE
Цена: 450 у.е. Наличие: Есть на складе
Панель оператора Weintek cMT2166X
Цена: по запросу Наличие: Есть на складе
Панель оператора Weintek MT8071iE
Цена: 360 у.е. Наличие: Есть на складе
Панель оператора Weintek cMT2108X2
Цена: по запросу Наличие: Есть на складе
Панель оператора Weintek cMT1106X
Цена: по запросу Наличие: Есть на складе
Облачный интерфейс Weintek cMT-SVR-100
Цена: по запросу Наличие: Под заказ
Панель оператора Weintek MT8071iER
Цена: по запросу Наличие: Есть на складе
Панель оператора Weintek cMT3108XH
Цена: по запросу Наличие: Есть на складе
Панельный компьютер APLEX ViTAM-916AR
Цена: по запросу Наличие: Под заказ
Шлюз данных Weintek cMT-G04
Цена: по запросу Наличие: Есть на складе
Панель оператора Weintek cMT3108XP
Цена: по запросу Наличие: Есть на складе
Видео: Промышленный монитор IFC-MW217C Full HD 17″, обзор, тест на прочность
Видео: cMT Viewer, WebView и VNC Viewer — три инструмента мониторинга от Weintek
Видео: Weintek, пример макроса в EasyBuilder Pro — Терморегулятор
Видео: Настройка системных параметров — Weintek EasyBuilder Pro на русском языке — видео 5
Видео: Веб-браузер в панелях оператора Weintek, объект Web браузер ПЛК
Видео: Управление проектом — Weintek EasyBuilder Pro на русском языке — видео 4
Видео: СКАНЕР ШТРИХ и QR КОДОВ + панель WEINTEK + БД MySQL
Видео: RFID и панели оператора Weintek. Пример проекта считывателя RFID меток. СКУД, складской учет.
Видео: EasyAccess 2.0 — подключение к удаленной панели без выделенного IP адреса
Видео: Презентация панели оператора Weintek cMT3162X
Видео: Использование MQTT брокера Yandex-облака для панелей Weintek
Видео: Отправка push-уведомлений с панелей оператора Weintek на устройства iOS/Android
Информация
Запрошенной темы не существует.
Как запустить симуляцию контроллера plcsim
К сожалению новый PLCSIM от Siemens не поддерживает старый API для соединения через COM объект. Ни каких данных в открытом виде о новом API я пока не нашел.
Есть такая программа NetToPLCSim, так вот у неё реализован хитрый хакерский метод подключения. Исходники открыты, но у меня пока руки не дошли их интегрироватьв PS.
Group: Users
Messages: 15
Reputation: 0
Status: Offline
При попытке соединиться выдает «Unable to connect application instance №1.»,
а всплывающее окно над красным восклицательном знаке — «S7ProSim is not
connected to S7-PLCSIM. (80040211)»
Интересно, что установка Process Simulator не пошла в нормальном режиме, а пришлось инсталлировать в «Compatibility mode».
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
1) Для инсталляции и работы PS нужны права администратора и отключённый UAC.
Иногда достаточно только прав.
Group: Users
Messages: 4
Reputation: 0
Status: Offline
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
Нет, пока с TIA практически не работал.
Нашёл в описании NetToPLCsim такую строчку:
it’s possible to read and write timer (T) and counter ©,read digital-inputs (I) and write digital-outputs (O)
Похоже, что входа можно только читать.
Group: Users
Messages: 4
Reputation: 0
Status: Offline
No limits in supported data areas
Перед это фразой немного смущают. Но, такое уточнение соответствует наблюдаемому мной поведению — входы перезаписываются ПЛК (https://sourceforge.net/p/nettoplcsim/discussion/912717/thread/3d0254bb/#fe56/7c2e)
I would not recommend to read or write to input and outputs, but with nettoplcsim v9.x it should nevertheless be possible to do this. But
inputs are overwritten every cacle by the peripheral data. The bevaviour
is in Plcsim the same as in a real Plc.
PLCSim Advanced — пока для меня это самое интересное из нововведений v14. Официальная интеграция с MATLAB Simulink даст отличный инструмент для моделирования (http://www.siemens.com/press/pool/de/pressemitteilungen/2016/digitalfactory/PR2016030165DFEN.pdf).
Added (20.05.2016, 11:49)
———————————————
Итак, без вмешательства в программу ПЛК всё же не обошлось, но запись на входы получил созданием DB(7000), в которую пишет Process Simulator и из которой функцией
// ЕСЛИ симуляция включена
A «MODE».SIMULATION_EBALED
JCN SKP_Simulation
// CALL POKE_BLK
number_type:=DInt
area_src :=16#84 // Область источника — DB
dbNumber_src :=7000 // Адрес DB с виртуальными входами модели
byteOffset_src :=0
area_dest :=16#81 // Целевая область — Input
dbNumber_dest :=0
byteOffset_dest :=0
count :=19 // Количество передаваемых байт
// >
SKP_Simulation : NOP 0
Данные копируются в область входов. Функцию лучше вызывать непосредственно перед обработкой входов. Вызов в OB1 приводит к страшным тормозам в симуляторе HMI.
MOVE_BLK_VARIANT у меня почему-то не захотела записывать дискретные входы (видимо проблема с ANY-указателем), поэтому использую POKE_BLK.
RAZRAB.RU
Как в TIA-портале сделать совместную симуляцию PLCSIM и HMI
Инженерное программное обеспечение
15 сообщений • Страница 1 из 1
alex3110 Любитель Сообщения: 53 Зарегистрирован: 23 сен 2016, 20:59
Как в TIA-портале сделать совместную симуляцию PLCSIM и HMI
Сообщение alex3110 » 26 мар 2018, 14:27
1. TIA portal v.13 (STEP7 Profess, WinCC Comfort/Advanced)
2. старый STEP7 проект (создан в версии v.5.5 SP3) и интегрированный в TIA portal. Туда добавлена новая панель TP1500 Comfort;
3. STEP7 v.5.5 SP3 и PLCSIM v.5.4+SP5+Upd3 ;
Я запускаю симуляцию для PLC, перемещаю ползунок в окне PLCSIM, и вижу, что значение в DB (в TIA-портале) изменяется.
Тут всё норм.
Теперь я создал одно поле вывода на HMI — «Root screen» и привязал к нему тег PLC.
Но когда я запускаю PLCSIM в режим «RUN», а затем запускаю симуляцию для TP1500, то открывается Root-экран Runtime, я вижу свое поле вывода, но значение внутри него :
Выглядит так, как будто связь между PLCSIM и TP1500 отсутствует.
Возможно, это потому, что:
1. Я использую интерфейс Profibus-DP между PLCSIM и TP1500 (в видео используют «PN / IE»)
2. Мне нужна WinCC Profess. вместо WinCC Comfort / Advanced.
Как запустить симуляцию для PLC и TP1500 вместе в портале TIA?
alex3110
mr_Frodo Профессионал Сообщения: 588 Зарегистрирован: 22 июл 2016, 20:38
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение mr_Frodo » 27 мар 2018, 20:06
Такие значки также по являются при превышении указанного в проекте кол-ва знаков в поле вывода текущего значения. Но в вашем случае скорее всего нет виртуальной коммуникации. К сожалению в ТИА ни-в-зуб ногой (как не стыдно признаться )
Вот моя подпись.
mr_Frodo
alex3110 Любитель Сообщения: 53 Зарегистрирован: 23 сен 2016, 20:59
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение alex3110 » 28 мар 2018, 13:46
mr_Frodo писал(а): Такие значки также по являются при превышении указанного в проекте кол-ва знаков в поле вывода текущего значения. Но в вашем случае скорее всего нет виртуальной коммуникации.
Да, именно так.
mr_Frodo писал(а): К сожалению в ТИА ни-в-зуб ногой (как не стыдно признаться )
Дык и не беда совсем. Мы раньше ваще ничего не знали. А теперь уже кой-чего.
Одолеем и этот «буржуйский» «тиапортал».
Даёшь «ТИАПОРТАЛИЗАЦИЮ» всей страны .
alex3110
dimon64 Любитель Сообщения: 74 Зарегистрирован: 12 мар 2015, 14:30
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение dimon64 » 28 мар 2018, 17:47
Посмотрите настройки связи в PLCSIM. У меня такая же байда была.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dimon64
nicss Любитель Сообщения: 71 Зарегистрирован: 28 сен 2016, 13:55
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение nicss » 29 мар 2018, 22:10
Попробовал сейчас в TiA V12 на проекте с Profibus-DP. Все работает. Проверьте тип интерфейса в PLCSIM, как сказал dimon64.
nicss
alex3110 Любитель Сообщения: 53 Зарегистрирован: 23 сен 2016, 20:59
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение alex3110 » 01 апр 2018, 20:09
Спасибо, мужики, всё получилось !
Ещё до ваших «постов».
Я ж говорю мы всех их одолеем !
И WinXPен им без масла, а не наш Крым и Сибирь
alex3110
Ka3ax Специалист Сообщения: 303 Зарегистрирован: 07 сен 2013, 10:09
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение Ka3ax » 06 июн 2018, 21:25
Скажите, где настройки симулятора приводящие его к виду с ползункаии и чекбоксами?
Supervision of erection
Ka3ax
mr_Frodo Профессионал Сообщения: 588 Зарегистрирован: 22 июл 2016, 20:38
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение mr_Frodo » 07 июн 2018, 12:14
Это не настройки. В меню вставка выбирайте модули , которые вам нужны- входные, выходные, серверные , либо просто модуль, а внутри него обозначает регистр(байт, слово, дб и пр.)
Вот моя подпись.
mr_Frodo
Ka3ax Специалист Сообщения: 303 Зарегистрирован: 07 сен 2013, 10:09
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение Ka3ax » 07 июн 2018, 12:40
У меня в меню симулятора не вижу ВСАВКА. 15 версия. Можно таблицы создавать симуляционные. Помнится на первых версиях тиа симулятор можно было к привычному виду привести.
Не нравится мне свежий дизайн. Нужно видать учить. Из под виртуальной машины симулятор переменные из проекта более 10 минут загружал. Я убился .
Supervision of erection
Ka3ax
Ka3ax Специалист Сообщения: 303 Зарегистрирован: 07 сен 2013, 10:09
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение Ka3ax » 07 июн 2018, 17:23
Вопрос. Симулятор 15 загружает переменные из проекта более 20 минут. Переменных 266000.
Это норма или нужно удивляться?
Supervision of erection
Ka3ax
mr_Frodo Профессионал Сообщения: 588 Зарегистрирован: 22 июл 2016, 20:38
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение mr_Frodo » 07 июн 2018, 18:12
Извините, наверное я поторопился с написанием поста, потому что работаю только в step7 на ОС ХР. В Step 7 ни разу никаких длительных в загрузок не было даже s400m контроллером. Здесь речь идёт о тиа портале. Поэтому не удивляюсь, что столько всяких сложностей. наверное конкурирующие фирмы прислали в Сименс много своих студентов чтобы они так развивали ТИА портал.
Вот моя подпись.
mr_Frodo
Ka3ax Специалист Сообщения: 303 Зарегистрирован: 07 сен 2013, 10:09
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение Ka3ax » 08 июн 2018, 09:03
Я сейчас спрошу, но вы меня сильно не ругайте. Возможно речь об этом велась, но из вышерасположенных топиков я не понял.
Как совместную симуляцию провести step7 v 5.6 проект и проект HMI в 15 TIA. В TIA так же проект step7 v 5.6 как прокси игтегрирован и все его переменные для панели используются. Раздельные запуски симуляции не приводят к никчему. Полага. Нужно одну и туже сеть plcsim для обеих программ использовать, а вот , что еще нужно настраивать?
Supervision of erection
Ka3ax
alex3110 Любитель Сообщения: 53 Зарегистрирован: 23 сен 2016, 20:59
Re: Как в TIA-портале сделать совместную симуляцию PLCSIM и
Сообщение alex3110 » 10 июн 2018, 22:45
Ka3ax писал(а): Я сейчас спрошу, но вы меня сильно не ругайте. Возможно речь об этом велась, но из вышерасположенных топиков я не понял.
Как совместную симуляцию провести step7 v 5.6 проект и проект HMI в 15 TIA. В TIA так же проект step7 v 5.6 как прокси игтегрирован и все его переменные для панели используются. Раздельные запуски симуляции не приводят к никчему. Полага. Нужно одну и туже сеть plcsim для обеих программ использовать, а вот , что еще нужно настраивать?
Ну, правильнее сказать, чтобы со STEP7-проектом версии 5.6 работать в TIA v.15, нужно его не «интегрировать», а «мигрировать». Далее в новом проекте TIA v.15 получится папка с PLC-проектом как минимум. А если в нём присутствовала и какая-нибудь панель, то и папка HMI. Только в этом случае нет смысла во всех «телодвижениях». Смысл есть только как в моём случае, т.е. проект STEP7 — старый, а панель новая (ТР1500 Comfort), которая уже не может быть запрограммирована с помощью WinCC Flexible (даже и 2008 SP3). Поэтому проект для ТР1500 панели я создаю с нуля в TIA v.13 (ну у Вас как я понял 15-я версия. Но не суть). Сначала надо настроить связь между старым PLC и новой панелью (например по PROFIBUS). Затем настроить PG\PC Interface на «PLCSIM -Profibus». В проекте TIA v.15 сначала запускаете симуляцию для PLC, затем для HMI .
ВНИМАНИЕ : Вам при этом на ПК нужен как «старый» STEP7, так и «старый PLCSIM» (установите его у себя на ПК, если он не идёт в комплекте со STEP7). Новый PLCSIM из состава TIA15 тут абсолютно лишняя деталь.