Мы занимаемся разработкой Scada-системы и для отладки коммуникации с Modbus-устройствами написали небольшую утилиту: PultModbusTester
Утилита бесплатная и без ограничений. Очень простой и удобный интерфейс. Поддержка Modbus TCP, Modbus RTU и Modbus RTU-Over-TCP. Интерпретация значений в форматах INT16, INT32 и Float (с любым порядком байтов). Утилита имеет подробный и наглядный лог, с подсветкой ошибочных байтов - здорово помогает в решении проблем с Modbus-устройствами.
Будем рады, если утилита окажется полезной коллегам-автоматчикам, также будем благодарны за обратную связь по функционалу.
Решил написать свой первый настоящий пост на Пикабу. Даже не представлял, как получается написать такие объёмные тексты. Но тут товарищ прислал одну статейку про новых программистов и реальную автоматизацию на заводах))) И тут вспышка 📸, ничего не помню и выходит текст из памяти!) Добро пожаловать под кат!)
Приходит как-то молодой IT-специалист со свежим стеком из Docker’ов, микросервисов и К8s на завод. В цеху сверкают панели управления, гудят моторы, а он пытается подключиться к этому промышленному добру. И, внезапно (нет), оказывается, что привычный IT-стек здесь не работает — у заводчан свои протоколы, свои легенды и свои правила. Годами. Десятилетиями. Из уст в уста, от конунга к сыну и т. д. и т. п. Айтишник достаёт ноутбук, спрашивает, какая тут точка доступа, а в ответ — тишина. Только матёрый усатый автоматчик (спец по работе с автоматизированными системами на заводах) медленно поднимает глаза, откашливается и с лёгкой тоской в голосе говорит: — Тут, сынок, Modbus по RS-485. Без TLS. Без DHCP. И если что, мы это на Delphi писали, в 2004-м. И это ещё повезло, что на Delphi в 2004-м :) А могло быть написанно в другой стране (году этак в 1990-м) на паскале или фортране. Так и живут некоторые заводы, где вместо YAML — скрипты на паскале, вместо DevOps — старая добрая флешка с патчами, а вместо облачных масштабируемых серверов — шкаф с вентиляцией (в лучшем случае) и приклеенным на скотч листом: «Работает — не трожь!»
Шёл 2011 год. У меня на первом заводе, где тогда работал, была 3-зонная методическая печь по нагреву металла, автоматизирована какими-то ПЛК (я тогда ещё слова такого не знал), программа была написана на Pascal. Помню, приехал программист делать доработки. Мы, молодые КИПовцы, специально остались, задержались (нас мастер уговорил, мол, посмотрите, учитесь). Он строки переписывает, меняет какие-то цифры (теперь уже знаю, что это были коэффициенты ПИД), и оно оживает (горелки переходят в другой режим работы) и начинает работать по-другому. Скада, если её можно так назвать (им же нарисована в каком-то редакторе), меняет форму, изменяет значения. Но🫣 тут же ниже на этом шкафу стоит 3 переключателя на 3 положения с фиксацией (вроде бы кулачковых) и ещё 3 обычных 3-позиционных без фиксации. Первые изменяют источник задания на газовые заслонки (1 — ПЛК, 2 — ручное управление, 3 — ещё одно🙂). Программист заканчивает настройку, говорит: «У вас будет всё хорошо». Уходит. Нашему мастеру категорически не понравилось, как работает регулирование. И как только программист уходит, переводит эти кулачковые переклички в то самое 3е положение. И горелками начинает управлять что? Правильно! Старые добрые КСП3 с круговыми диаграммами, которые мы меняли каждые 24 часа))) Говорит, так будет лучше, и уходит, говоря: «Собирайтесь домой». Мы ещё задерживаемся минут на 10 в этом помещении. Всё это время с нами был «печник», который следит за режимом работы печи. Тот, что был на смене, тут же, как наш мастер вышел, переводит кулачковые переключатели в какое положение?) Правильно! В ручное!)😂 И говорит: «Так будет надёжнее!) 😁».
Вот тебе и стеки и TLS и DHCP и 485. А подача 220 на МЭО импульсами надёжнее для конечного пользователя)) ☝️ Но это ещё не всё. Печники, когда лень идти в помещение с этим щитом управления, просто подходят к МЭО и что? Тоже правильно! Просто крутят его с помощью маховика))) Вот тебе и автоматизация)))💡 МЭО было примерно как на фото) Ну и схематически печь)
Современные промышленные системы работают на основе 5 уровней автоматизации:
Уровень 0: Полевые устройства Данные в режиме реального времени собираются с помощью датчиков, исполнительных механизмов и устройств.
Уровень 1: Базовое управление (ПЛК/SCADA) Автоматическое управление оборудованием осуществляется с помощью программируемых логических контроллеров (ПЛК) и систем SCADA.
Уровень 2: Оптимизация процесса Эффективность повышается за счет мониторинга (анализа данных) и оптимизации процессов в технологии производства.
Уровень 3: Система управления производством (MES) Мониторинг и контроль производственного процесса в режиме реального времени.
Уровень 4: Планирование ресурсов предприятия (ERP) Обеспечивает общее управление путем интеграции всего предприятия в бизнес.
Сервер автоматизации СА-02м с модулем питания и модулями расширения
Описание Сервера автоматизации СА-02м
СА-02м без разъемов, с разъемами, с led индикацией
Питается от 24 вольт постоянного тока через торцевой разъем от модуля питания МП-02м. Там же в торцевых разъемах (слева и справа по одному) расположены RS-485, к которым можно подключить модули расширения МР-02м для увеличения количества входов\выходов (дискретные, аналоговые). Устройство на базе одноплаточника с "камнем" Allwinner A40i. Установлен Armbian + Linux 6.1.0-rc6. Оперативной памяти 512 Мб, eMMC на 8 Гб, чего вполне достаточно для диспетчеризации 5 000 тегов в MasterSCADA4D (по информации о нагрузочных тестах СА-02м в ООО "МПС Софт").
Нагрузка при 500 тегах в MasterSCADA4D
Проект приточных установок в MasterSCADA4D
У сервера автоматизации СА-02м на борту 5 RS-485, один из которых с гальванической развязкой (изолированный). При установке системы диспетчеризации появляется возможность опрашивать различное инженерное и сетевое оборудование по протоколам МЭК 61850, МЭК 60870-5-104, Modbus RTU, Modbus TCP, OPC UA, SNMP, MQTT, BACnet, Profinet, Меркурий и других, что позволяет создать локальную систему учета электроэнергии, управлять системами вентиляции и кондиционирования воздуха, освещением, отоплением и т.д.
Так же есть возможность установить SCADA Каскад, Simple-SCADA, CoDeSys, NodeRed, OpenHab, Home Assistant и любое другое совместимое ПО.
Сервер автоматизации СА-02м с модулями расширения. Шкаф АСУ ТП
Подключили сервер автоматизации СА-02м к модулю питания МП-02м-24, подключили модули расширения, разработали проект диспетчеризации в MasterSCADA4D с нужной логикой работы и загрузили его. Подключились на web по IP и управляете нужным оборудованием через графический интерфейс. Затем добавили счетчики электроэнергии и реализовали энергоучет.
Воткнули USB модем, настроили подключение к серверу, так как это все в контейнере за пол версты от офиса и кабель не проложить до него. Потом добавили интеграцию с телеграм и начали получать уведомления на телефон. Добавили модуль с LoRaWAN для беспроводных датчиков и связи с другим контейнером. По SNMP добавили пару серверных стоек, для большего спокойствия, и можно идти на новогодние праздники.
Передумали, зашли под админкой, поставили CoDeSys с Control Basic M лицензией, и используете, как ПЛК. Нужно для дома - NodeRed и Home Assistant.
Ссылки, идеи
Будем рады Вашим идеям, предложениям и содействию по расширению функционала и возможностей СА-02м.
Протокол OPC UA предназначен для решения двух задач автоматизации: взаимодействие между поставщиками устройств и решение проблемы несовместимости устройств на транспортном уровне. В статье Антонио Армента, опубликованной в журнале Control Automation рассматривается вопрос интеграции OPC UA и среды межмашинного взаимодействия –Machine-to-Machine.
Современные производственные мощности все больше полагаются на высокие уровни горизонтальной и вертикальной интеграции между системами и между машинами. Горизонтальная интеграция относится к взаимосвязям между процессами и машинами на одном иерархическом уровне, что позволяет целым заводам общаться практически в реальном времени. Вертикальная интеграция, как определено в пирамиде автоматизации ISA-95 (международный стандарт для разработки интерфейса между предприятиями и управляющими системами), представляет собой передачу данных между несколькими бизнес-уровнями. Она охватывает взаимодействие оборудования на уровне полевых устройств, ПЛК, SCADA систем, инструментов управления операциями и программного обеспечения для планирования ресурсов предприятия.
Пирамидальная модель для интеграции автоматизации
Эффективный поток коммуникации между платформами, как по горизонтали, так и по вертикали, никогда не был столь важен. Этот тип связи чаще всего называют Machine-to-Machine – Межмашинное взаимодействие или M2M. Хотя название подразумевает физические машины, концепция M2M также применяется к интерфейсу между машинами и программными приложениями и даже между двумя или более программными платформами.
Пирамида автоматизации ISA-95
Современные автоматизированные процессы часто включают в себя широкий спектр типов машин, программных приложений и сеть поставщиков и OEM-производителей. Архитектура такого процесса может быстро усложняться. Поэтому с тем, чтобы справиться с проблемой бесперебойного потока данных в такой среде, требуется надежное и гибкое решение. Для этого служит OPC UA.
Что такое OPC UA?
Унифицированная архитектура открытых платформ связи называется OPC UA. Реализация этого промышленного протокола связи увеличивается как по масштабу, так и по сложности. Рассмотрим интеграцию M2M и OPC UA в разрезе задач промышленности.
Сеть OPC UA для различных отраслей промышленности
Международные стандарты, поддерживаемые OPC UA
Достижение взаимодействия с OPC UA
Коммуникация между машинами обеспечивает сложные автоматизированные взаимодействия между различными системами и машинами, составляющими экосистему. Одной из основных проблем для достижения настоящей интеграции M2M сегодня является разнообразие устройств, программных платформ и протоколов, развернутых в экосистеме. Многие протоколы связи, как правило, являются проприетарными, что может привести к непреднамеренным разрозненным данным и еще больше усложнить ситуацию.
Для решения этой проблемы OPC UA использует унифицированную модель данных (Unified Data Model – UDM), одну из своих самых мощных функций. Эта модель обеспечивает взаимодействие, предоставляя общую структуру для представления и передачи данных между несколькими платформами.
Что такое узел в OPC UA?
Как указано в UDM, в OPC UA все, от простого датчика до абстрактной программной связи, представлено как узел. Каждый узел описывается своими атрибутами и ссылками. Некоторые из наиболее распространенных атрибутов узла включают:
NodeId: уникальный идентификатор. DisplayName: читаемое имя для упрощения просмотра. DataType: логическое, целое число, строка и т. д. Value: текущие данные или статус, хранящиеся в узле.
Пример экрана настройки OPC UA, показывающий параметры атрибутов и ссылок
В то время как атрибуты помогают описать узел, ссылки помогают определить их отношения с другими узлами в системе. Узлы могут быть связаны между собой способами, которые могут обеспечить иерархию и структуру. Вот некоторые распространенные ссылки:
HasSubType: устанавливает вертикальные иерархии между узлами. HasCause и HasEffect: устанавливает причинно-следственную связь. Это очень полезно для устранения неисправностей. HasInterface: помогает реализовать стандартные интерфейсы связи, такие как TCP/IP. HasProperty: связывает узлы с узлами свойств.
OPC UA поддерживает все известные типы данных, включая целые числа, строки, массивы и сложные структуры. Также поддерживаются пользовательские типы данных, что позволяет представлять абстрактные составные структуры.
Еще одной ключевой концепцией, относящейся к взаимодействию, является адресное пространство. В то время как унифицированная модель данных имеет дело со стандартным представлением данных, адресное пространство касается их структуры и организации. Используя приложение с поддержкой OPC UA, такое как Kepware, адресное пространство предоставляет пользователю системную структуру, объясняющую, как все связано.
Независимость транспортного уровня
Независимость транспортного уровня делает OPC UA высоко совместимым. Эту функцию также можно назвать «протокольно-независимой». Это еще одна причина, по которой OPC UA выделился и стал таким популярным. По сути, независимость транспортного уровня отделяет транспортный уровень от семантики, специфичной для протокола, позволяя различным протоколам использовать данные без внесения в них каких-либо изменений.
Некоторые протоколы связи, поддерживаемые OPC UA, включают TCP/IP, HTTP и HTTPS, MQTT (очень распространенный в приложениях Интернета вещей – IoT) и множество заводских протоколов на основе Ethernet.
Значение этой функции для ПО автоматизации невозможно переоценить. Многие современные системы включают в себя несколько протоколов связи, образуя сложный и неоднородный промышленный сетевой ландшафт. OPC UA решает эту проблему, предоставляя унифицированную систему благодаря независимости транспортного уровня.
Использование OPC UA для интеграции устаревших систем
Одним важным преимуществом, о котором стоит упомянуть, является интеграция между современными и устаревшими системами, обеспечиваемая этой функцией. OPC UA может помочь установить интерфейсы между устройствами, использующими старые протоколы связи, и новыми устройствами IoT, сосуществующими в одной экосистеме. Кроме того, протоколо-независимая природа OPC UA делает его перспективным, поскольку он может включать будущие протоколы по своей конструкции.
Таким образом, OPC UA способствует обеспечению взаимодействия, повышению эффективности работы, обеспечению масштабируемости в будущем и устранению изолированности данных.
Материал подготовлен Московским заводом тепловой автоматики (МЗТА)
Дизайн нужен везде. Даже в промышленности, хочется чтоб было красиво и удобно. Повышается эргономика и скорость реакции на события и аварии.
Вроде простой вопрос, Но давайте, его всё же рассмотрим.
Установку дистрибутива и таргета я писал в предыдущих статьях.
В шаблоне должен быть готовый объект ImagePool. Если нету, добавляем через ПКМ "Добавить". Заходим в него.
Перед вами откроется окно. В строчке имя файла добавляем желаемую картинку в jpg или png формате. ID это рабочее название объекта в проекте. Пишем на английском.
В появившемся окне ставим свойство файлу, можно сделать привязку, в случае замены картинки, все связи сохраняются.
Добавляем объект Изображение в разделе Базовый.
Настраиваем высоту, ширину, нужные свойства.
Можно добавлять переменные на различные действия с картинкой (Цвет, текст, ширина, видимость и т.д.).
Приветствую, недавно написали письмо с вопросом по визуализации.
Я разрабатываю систему которая оценивает состояние элементов в трех фазной электрической сети по их параметрам тока. Всего параметров 6 для каждой из трех фаз.
Необходимо настроить отображения каждого параметров для каждой комбинации фаз т.е. фаза А напряжение, фаза B напряжение, фаза С напряжение, фазы А и B напряжение, фазы А и С напряжение и так далее.
Всего параметров для сбора получается 18 (3 фазы * 6 параметров), а если говорить со всеми комбинациями получается 42 (7 возможных комбинаций фаз * 6 параметров). Самое простое решение, которое первое приходит в голову это создать 42 страницы визуализации и 42 тренда, но делать так не очень хочется, а хотелось бы обойтись одной страницей визуализации и просто обращаясь к объекту визуализации изменять отображающаяся тренд.
Исходя из вышеизложенного, 2 вопроса.
1. Можно ли обратится как-нибудь к элементу визуализации и сменить отображение тренда из кода или есть другой элемент визуализации для реализации описанного функционала?
2. Сможет ли СПК110 Овен переварить такое количество трендов, так как читал что он (тренд) очень трудоемкий?
1. реализовать можно с помощью фреймов, переключая в основном окне так называемые дочерние окна. Для наглядности буду стараться отвечать видео.
42 фрейма это большая нагрузка на графику, будет виснуть. Требуется оптимизация.
2. Насчет трендов. Скажу честно, тренды работают очень плохо. 10 трендов уже много для слабой графики. По возможности лучше ставить Панель оператора, а ещё лучше SCADA. Вообще советую, где нужны графики - ставить SCADA по возможности.
Лучше всего помучиться и сделать 42 простые визуализации. Можно реализовать с помощью CurrentVisu - управление из кода.
А как думаете вы, у вас есть свои варианты? Как вы сделали бы?
Панель оператора Weintek достаточно популярна в нашей стране. Быстрая, красивый экран, удачный функционал рецептов, есть возможность подключаться к ней удалённо, есть свой Дашборд. Давайте рассмотрим, как с помощью неё подключиться к ПЛК Овен и опросить пару-тройку регистров.
Приветствую всех посетителей, Напишу статью про связь между панелью Weintek и ПЛК ОВЕН.
Статью пишу в режиме реального времени, так как параллельно собираю объект, о нем напишу чуть позже.
Заходим во вкладочку конфигурация ПЛК. Создаём Master SLAVE, выбираем по какому порту будем опрашивать. В моём случае по RS-485 (2-ой канал).
И после этого, добавляем все необходимые нам регистры — если кнопки-лампочки, то регистры 8 бит, если целочисленные, то 2 байта, если вещественные с запятой, то 4 байта.
Рекомендую делать строго в том порядке, как на скриншоте, чтобы упорядочивать память контроллера и не создавать суету с адресацией.
И желательно создавать регистры в чётном порядке, то есть по два. Пускай какие-то будут пустыми. Удобно потом будет настраивать адреса.
Адресация считается сверху вниз, начиная с нуля. Переменные по 8 бит считаем по 2 — получаем 2 байта в одном регистре. Поэтому удобно располагать вот так последовательно, становится понятно, где какой адрес. Вот у меня три регистра со сдвоенными 8-битными переменными.
Первый регистр — это адрес 0, второй — адрес 1, третий — адрес 2 и т.д.
Настройки со стороны Панели
Устанавливаем Easy Builder PRO. Создаём проект. Ставим свою панель.
Нажимаем системные настройки.
Выбираем новое устройство.
Выбираем Modbus(Adjustable). Настраиваем интерфейс RS-485, (настройки связи, COM, скорость и т.д.) Жмём ОК.
Теперь у нас два устройства — панель и контроллер.
Ставим допустим переключатель, и настраиваем регистр с битом.
У weintek адресация смещена на 1 , поэтому адрес 0 ПЛК — соответствует адресу 1 в панели.
Эту информацию мы можем найти в руководстве по эксплуатации к панелям.
Этот адрес будет соответствовать этому биту. И так далее, по порядку.
Ну и конечно делюсь результатом;
На этом я заканчиваю, если есть вопросы, пишите комментарии.