ScadaPy — использование OPC UA
В предыдущих нескольких статьях, мною были описаны возможности применения протокола modbus для создания собственной Scada системы на базе python. В этот раз хочется поделиться опытом построения системы опроса подчиненных устройств с использованием ОРС технологии.
Недостатки OPC серверов в том, что их можно использовать только в операционных системах семейства Microsoft Windows (как правило они платные), а об устройствах использующих ОС Linux можно было забыть.
Но со временем была создана спецификация OPC Unified Architecture (англ. Унифицированная архитектура OPC), что дало возможность использовать данную технологию передачи данных на иных операционных системах отличных от Windows. Это касается и встраиваемых систем, где может быть запущен полноценный Linux.
Подробнее можно прочитать здесь.
Например, на одноплатном компьютере Raspberry Pi можно запустить одновременно несколько различных OPC UA серверов для опроса терминальных устройств, счетчиков, датчиков и т.д., при этом система будет работать вполне стабильно.
Установка библиотек
Для работы с OPC UA и modbus серверами используются Xubuntu 17.04 Desktop и Windows 8.1. В Xubuntu 17.04 уже установлены Python 2.7 и Python 3.5 по умолчанию. Выбираем Python 3.5.
Если после установки операционной системы на компьютер не были добавлены необходимые пакеты, то нужно выполнить:
Решаем проблему зависимостей:
После поставим еще необходимые библиотеки:
Для windows можно установить через pip3.exe, библиотека и примеры находятся здесь
Для запуска сервера, библиотеку нужно импортировать:
Теперь создаем OPC UA сервер.
Вот и весь код на python для запуска OPC UA. Как оказалось ничего сложного, и если теперь подключиться к запущенному серверу с помощью UA Expert, то можно увидеть иерархический список наших объектов и переменных со значениями.
Для модификации значений переменных используется функция set_value типа:
Конечно это очень примитивный пример, но в библиотеке OPC UA заложено намного больше возможностей, о которых можно прочитать здесь.
Единственное в чем не удалось разобраться, так это, как установить логин и пароль на сервер, вроде как-то посредством politics, думаю позже решу эту проблему.
Конфигуратор серверов
В продолжение к вышесказанному, возникла задача по оперативному конфигурированию каждого вновь создаваемого сервера.
Для данной цели был написан «Конфигуратор серверов» на библиотеке PyQt5.
— создается база данных на sqlite3
— формируются таблицы для slave и master частей сервера.
— таблицы заполняются необходимыми параметрами.
— формируется скрипт запуска.
Основная идея – серверы должны одинаково работать как в Windows, так и в Linux.
Скачать можно здесь
Структура каталогов:
srvconf.py – программа «Конфигуратор сервера»
db – находится файл базы данных srvDb.db.
img – файлы .png для кнопок
source – файлы шаблонов серверов
- mercury.py – библиотека для опроса счетчиков меркурий 230
- modbustcp_master_dcon.py – slave-сервер modbusTCP, master – опрашивает подчиненные устройства по протоколу DCON (Advantech). В настоящий момент только модуль 4050.
- modbustcp_master_http.py – slave-сервер modbusTCP, master – формирует запрос методом GET по URL или IP, в ответ получаем список значений типа int или string разделенных запятыми. Используется для встроенных систем с http серверами на борту, я использовал для ESP8266 c wi-fi соединением.
- modbustcp_master_ping.py – slave-сервер modbusTCP, master – отправляет ICMP пакет ping на указанный сервер, в случае true формирует дискретную 1, в случае false – 0.
- modbustcp_master_rtu.py — slave-сервер modbusTCP, master – modbusRTU. Используется для опроса подчиненных устройств по протоколу modbusRTU
- modbustcp_master_tcp.py — slave-сервер modbusTCP, master – modbusTCP. Используется для опроса удаленных устройств по протоколу modbusTCP.
- opcua_master_dcon.py — slave-сервер OPC-UA, master – опрашивает подчиненные устройства по протоколу DCON (Advantech). В настоящий момент только модуль 4050.
- opcua_master_http.py — slave-сервер OPC-UA, master – формирует запрос методом GET по URL или IP, в ответ получаем список значений типа int или string разделенных запятыми. Используется для встроенных систем с http серверами на борту, я использовал для ESP8266 c wi-fi соединением.
- opcua_master_mercury230.py — slave-сервер OPC-UA, master – формируются команды опроса счетчиков меркурий 230. Реализация исключительно только для OPCUA, поскольку не все параметры ответа по данному протоколу можно однозначно обработать для того чтобы поместить в регистры modbus.
- opcua_master_ping.py — slave-сервер OPC-UA,master – отправляет ICMP пакет ping на указанный сервер, в случае true формирует дискретную 1, в случае false – 0.
- opcua_master_rtu.py — slave-сервер OPC-UA,master – modbusRTU. Используется для опроса подчиненных устройств по протоколу modbusRTU.
- opcua_master_tcp.py — slave-сервер OPC-UA, master – modbusTCP. Используется для опроса удаленных устройств по протоколу modbusTCP.
scr – файлы сценариев для запуска сервера.
Для Windows будет создан файл типа start_XX.bat, для Linux файл типа start_XX.sh, где ХХ порядковый номер сервера в таблице servers.
Содержимое файла start_XX.bat:
Содержимое файла start_XX.sh для Linux:
В параметрах запуска для Linux используется xfce4-terminal, т.к. работаю в Xubuntu 17.04,
но можно указать и другой тип запуска, вроде gnome-terminal.
В примерах довольно понятно описаны параметры заполнения таблиц.
Примечательно, что на raspberry Pi запускалось одновременно 4 сервера — mobus_ping, opcua_http, opcua_mercury230 на /dev/ttyUSB0 и modbus_dcon на /dev/ttyUSB1, при этом он работал довольно стабильно и без сбоев.
Управление на данный момент реализовано частично и только в master_dcon, поэтому используется только телесигнализация и телеизмерения. В дальнейшем думаю добавить и телеуправление.
Tani opc server for linux
Я извиняюсь, не совсем развернуто задал вопрос.
Установить Линукс?
Нет, как на линукс(в частности на убунту 15.04) установить мастерскаду?
Наладить обмен данными между кем и кем?
Обмен данными между скадой и, к примеру МВА8, через ОРС-сервер? На винде такие работы делал несколько раз. Хотлось бы освоить и на линуксе.
Если верить сайту ИнСАТ, то » Среды исполнения для ОС Linux, QNX, Android и др. предоставляются по дополнительному запросу на почту support.ms4d@insat.ru. В сопроводительном письме необходимо указать версию ОС, тип устройства, характеристики устройства (для контроллера: производитель, процессор, RAM, Flash)» Воспользуйтесь рекомендацией с сайта и детальнее описывайте вашу задачу.
Вот за это спасибо! не знал.
Скачать с FTP, получив доступ, есть образы под Raspberry и что-то еще, пока руки не доходят опробовать.
Это еще лучше. Я заказа Orange pi(клон Raspberry) для экспериментов. На него по описаниям встает линукс. Вот там и хочу испробовать скаду.
Tani opc server for linux
This site uses Cookies. By using the site you accept our usage of Cookies. Dismiss More info
OPC-Server for common PLCs
Software
- OPC Server
- PLC Engine Collect:
Collect data,
connect to databases - PLC Engine Collect:
EuroMAP, UMATI,
MachineVision and more - Web Access
- OPC UA Modeler
- OPC Toolkit
Hardware
- PLC to the Database
in Cabinet - Devices
- PLC to the Database
News
- News
Support
- General
- OPC Server
- PLC Engine Collect:
PLC to the Database - PLC Engine Collect:
Logic Tables - Hardware
- Configuration
Download
- Common Products
- OPC Server
- PLC Engine Collect
- Configuration Software
- OPC UA Modeler
- Web-Interface
- older versions
Manuals
- OPC Server
- PLC Engine Collect
Account
- Apply for Account
- Login
Tani
- Visions
- Sales offices
- References
- Press
- Staff
- Imprint
- Data Protection
- Software Contract
- Business Terms
Software
- OPC Server
- PLC Engine Collect:
Collect data,
connect to databases - PLC Engine Collect:
EuroMAP, UMATI,
MachineVision and more - Web Access
- OPC UA Modeler
- OPC Toolkit
Hardware
- PLC to the Database
in Cabinet - Devices
- PLC to the Database
News
- News
Support
- General
- OPC Server
- PLC Engine Collect:
PLC to the Database - PLC Engine Collect:
Logic Tables - Hardware
- Configuration
Download
- Common Products
- OPC Server
- PLC Engine Collect
- Configuration Software
- OPC UA Modeler
- Web-Interface
- older versions
Manuals
- OPC Server
- PLC Engine Collect
Account
- Apply for Account
- Login
Tani
- Visions
- Sales offices
- References
- Press
- Staff
- Imprint
- Data Protection
- Software Contract
- Business Terms
Language
Deutsch
English
Español
Française
Italiano
Polska
Português
Русский
OPC-Server for common PLCs
OPC Server
OPC-Server connects computers with visualization or SCADA software with controllers of various manufacturers. The Tani-OPC-Server Ethernet allows accessing to controller from Siemens, Rockwell Automation, Mitsubishi, Wago, Modicon, Schneider Electric and others. The communication is very fast, easily to configure and allows lot of diagnostics and overviews.
- BACnet support for building automation.
- Mitsubishi Melsec Q family support.
- OPC UA station search (Multicast Discovery).
- Struktures as elements. Important for MES and OEE usage.
- OPC UA device search with multicast discovery.
- Siemens S7 1500 now with the usage of «Optimized Data Blocks» and online browsing.
- The communication to the controller is highly optimized, if it gets faster then structures are read instead of many single variables.
- Option network redundancy
- All OPC variants: OPC UA, Classic OPC (sometimes called OPC DA) and OpcPipe.
- Fast. It is the fastet OPC server on the market always.
- For Windows, Linux, Raspberry PI, Phytec, Wiesemann &Theis and more.
- Easy configuration, many wizards, no reboots during configuration changes
- Reduction of downtime through integrated diagnostics.
The Tani OPC Server supports the functions You will need. The Ethernet protocol You are using depends from the controllers and devices in Your plant. So this one service communicates with all the controllers.
- No limit to the number of controllers and variables. Depending on the license limitations may exist.
- High degree of reliability for all OPC clients using OPC UA and DA.
- Redundancy for secure communication to the controllers S7 1500 and 1200: Online browse and «optimized data blocks».
- S7 200/300/400: Easy to use Step 7 symbols directly from the Step 7 project.
- All configurations take effect immediately without annoying reboots or restarts.
- Handles data from other OPC devices and servers comfortable with integrated OPC UA Client
- Increased availability with extensive diagnostics.
- Contains a logger for diagnostics, for long time diagnostics also.
- The Windows and Linux versions (Raspberry also) are same in all functions, DCOM alone can be used under Windows.
- 72 hour version with unlimited functionality available here.
- Standard version for 50 controllers and 10000 items.
«All in one» OPC Server with maximum protocol and controller scope for various controller types and OPC variants and operation systems
The Tani OPC servers are made for heterogeneous networks with different controllers and devices from lot of different vendors. With the extensive diagnostics for easily commissioning it replaces lot of other OPC servers.
Tani offers OPC Server for the Raspberry PI, Odroid, PC Linux, Windows, and more.
Classic OPC is also available for Windows.
Supported operation systems |
|
Supported OPC interfaces |
|
Supported controller types and devices |
Communicates via Ethernet. |
Basis | Siemens | Rockwell | Mitsubishi | BACnet | De Luxe | De Luxe H1 | ||
Transport- protocols | TCP/IP | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
OSI/H1 | ✔ | |||||||
Application- protocols | Siemens S7 Siemens S5 | ✔ | ✔ | ✔ | ||||
ControlLogix CompactLogix | ✔ | ✔ | ✔ | |||||
Mitsubishi | ✔ | ✔ | ✔ | |||||
BACnet | ✔ | ✔ | ✔ | |||||
Modbus | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
OPC UA | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Send / Receive | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Windows DCOM Tunnel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Software protection with dongle
Without a license all OPC Servers will work for three days after each start.