OPC UA·SANDBOX Бесплатный публичный сервер

RUEN

Документация

Подключение

Общий сервер
opc.tcp://opcua-sendbox.electroman.by:4840/electroman/
Личные серверы
порты 4841–5000
Безопасность
None (анонимный вход) и Basic256Sha256 (Sign/SignAndEncrypt): логин и пароль sendbox/sendbox
Пространство имён
urn:electroman:opcua-sendbox (ns=2)
Узлы
Objects/SendBox/Tags/*, Objects/SendBox/Alarms/*

UaExpert

Add Server → Custom Discovery → вставьте адрес, политика None, Anonymous (или Basic256Sha256, Sign/SignAndEncrypt, Username с парой sendbox/sendbox). События: Document → Add → Event View, перетащите узел Server; алармы — Alarms & Conditions View.

ModbusToolkit

Вкладка OPC UA: вставьте адрес в поле «Адрес», безопасность None (или Basic256Sha256 с логином sendbox), «Подключиться». История — вкладка «История», события — «События» → подписка на SendBox или Server.

Python (asyncua)

import asyncio
from asyncua import Client, ua

async def main():
    async with Client("opc.tcp://opcua-sendbox.electroman.by:4840/electroman/") as client:
        sine = client.get_node("ns=2;s=Tags.Sine")
        print("Sine =", await sine.read_value())

asyncio.run(main())

Python (asyncua): подписка с переподключением

auto_reconnect=True: при обрыве связи клиент переподключается и восстанавливает подписки сам. UaExpert также восстанавливает подписки автоматически, а в библиотеке open62541 (C/C++) восстановление сессии и подписок встроено.

import asyncio
from asyncua import Client

class Handler:
    def datachange_notification(self, node, value, data):
        print(node, "=", value)

async def main():
    # auto_reconnect=True: при обрыве клиент переподключается
    # и восстанавливает подписки сам
    async with Client("opc.tcp://opcua-sendbox.electroman.by:4840/electroman/", auto_reconnect=True) as client:
        node = client.get_node("ns=2;s=Tags.Sine")
        subscription = await client.create_subscription(500, Handler())
        await subscription.subscribe_data_change(node)
        while True:
            await asyncio.sleep(3600)

asyncio.run(main())

REST API

KEY=$(curl -s -X POST http://opcua-sendbox.electroman.by/api/keys | jq -r .key)
curl -s -X POST -H "X-API-Key: $KEY" http://opcua-sendbox.electroman.by/api/sessions

Что умеет сервер

Ограничения

Исходный код

Сервер открыт: можно поднять свою копию в локальной сети.

git clone https://github.com/StarLeG/opcua-sendbox.git

Об авторе

Олег Старинский

Инженер-наладчик автоматики: пишу инструменты, которыми пользуюсь сам на объектах. C++/Qt, Python, STM32. Экосистема Electroman — ModbusToolkit, Modbus SendBox и OPC UA SendBox — бесплатные инструменты для наладчиков АСУ ТП.

GitHub · electroman.by · Telegram

ModbusToolkit

Проверяйте клиенты в ModbusToolkit

Подключайтесь к песочнице из ModbusToolkit: дерево узлов, подписки, история, события, мост OPC UA ↔ Modbus. Бесплатно, 19 инструментов, Windows и Linux.

SendBox бесплатный и без рекламы. Сервер и испытательный стенд оплачиваются из пожертвований.