/python-opc-example

Python opc ua server, client, analysis dashboards, notification etc. For demo how an analysis workflow works

Primary LanguagePython

Python OPCua

使用python发送、读取opc的方法

关于OPC UA

OPC UA是一种协议 https://opcfoundation.org/

被”誉为”是工业4.0的基础,现在工业通信的基础

一些参考信息

https://www.novotek.com/uk/solutions/kepware-communication-platform/opc-and-opc-ua-explained/ https://www.paessler.com/it-explained/opc-ua https://blog.csdn.net/yaojiawan/article/details/88990351 https://www.zhihu.com/question/57073931

OPC UA Compare with MQTT https://www.zhihu.com/question/57073931


Python Installation

pip install opcua


连接到OPC UA服务器

本地服务器 -> uadiscover

某个特定地址服务器,比如 -> uadiscover -u opc.tcp://10.122.000.66:4840

如果没有的话可以先建立一个本地服务器


from opcua import Server

if __name__=='__main__':
    server = Server()
    server.set_endpoint("opc.tcp://0.0.0.0:48400/")

    server.start()    

可以看到

Endpoints other than open requested but private key and certificate are not set.
Listening on 0.0.0.0:48400

Try

uadiscover -u 0.0.0.0:48400


Server 1:
  Application URI: urn:freeopcua:python:server
  Product URI: urn:freeopcua.github.io:python:server
  Application Name: FreeOpcUa Python Server
  Application Type: ApplicationType.ClientAndServer
  Discovery URL: opc.tcp://0.0.0.0:48400/

Endpoint 1:
  Endpoint URL: opc.tcp://127.0.0.1:48400/
  Application URI: urn:freeopcua:python:server
  Product URI: urn:freeopcua.github.io:python:server
  Application Name: FreeOpcUa Python Server
  Application Type: ApplicationType.ClientAndServer
  Discovery URL: opc.tcp://0.0.0.0:48400/
  Server Certificate: [no certificate]

一个OPC UA监控的case

  1. OPC UA Server 服务器
  2. OPC UA Client 客户端
  3. 一个数据库
  4. OPC UA到数据库
  5. 展示dashboard
  6. 预测模型
  7. 信息发送

OPC 服务器

cd opc-ua-temperature-server

temperature-opcua-server.py

OPC Client

cd opc-ua-temperature-client

temperature-opcua-client.py


DB

使用MongoDB作为一个例子,使用docker的版本

docker search mongodb

下载最新的版本

docker pull mongo:latest

看一下是否拿到了

docker ps

开始运行

docker run -itd --name mongo -p 27017:27017 mongo

查看运行状态

docker ps

进入并且配置一下账号密码 docker exec -it mongo mongo admin

db.createUser({ user:'admin',pwd:'IoTadmin!',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, "readWriteAnyDatabase" ] }

db.auth('admin','IoTadmin!') 1

Mongo DB的使用

MongoDB的基本语法比如一个query

filter={} sort=list({ 'timestamp': -1 }.items()) limit=100

result = mongo_client['opc']['temperature'].find( filter=filter, sort=sort, limit=limit )

使用MongoDB Compass进行管理

模型

规则建立的模型是最常见的 建立一个规则的部分

  1. 获取历史数据
  2. 特征提取(optional)
  3. 分析历史数据找到区分OK/NOK的规则
  4. 追溯历史数据进行影响的确认
  5. 应用规则

应用规则的部分

  1. 提醒
  2. 需要可查看
  3. 可以修改

前端可视化 Dash

非常少量的纯python代码构建的可视化内容

cd temperature_dashboard python temeprature-opcua-dashboard.py

提醒服务

Teams Teams Channel

邮件 smtp 服务

微信 server酱 WxPusher