制造业现场设备通讯多用底层通讯协议,opc是普通使用的一种。
Python多用于数据分析等互联网领域,在opc通讯方面的资料、应用好像不多。不过不多不等于没有,也不等于落后。
GitHub上的开源项目,FreeOPCUa 就是一个支持Python2,3 opc-ua 协议的实现。注意,这里支持的是opc-ua协议,老的DA协议不支持;Kepserver 从 5.x 以后才支持opc-ua。
其实 FreeOPCUa 里既能提供 client 端实现,也有 server 端以供测试或者真实使用。
from opcua import Client
class SubHandler(object):
"""
Client to subscription. It will receive events from server
"""
def datachange_notification(self, node, val, data):
# print("Python: New data change event", node, val)
print("changed. new value is : ", val)
def event_notification(self, event):
print("Python: New event", event)
def test2():
client = Client("opc.tcp://127.0.0.1:49321")
client.connect()
root = client.get_root_node()
aa = client.get_node('ns=2;s=Channel8.Device1.aa')
handler = SubHandler()
sub = client.create_subscription(1000, handler)
sub.subscribe_data_change(aa)
if __name__ == '__main__':
test2()
以上就是一个煎蛋实现,没错,就是如此的简洁~
这里有几个准备工作:
1、在kepserver里设置一个变量,按照代码中格式将其定位;
2、查看/设置 kepserver 的opc-ua 的地址,与代码中对应;
就可以 run 一下咯。