介绍
OPC(Object Linking and Embedding(OLE) for Process Control)是基于微软的 DCOM 的通信,用于过程控制和制造业自动化系统。
- OPC DA(Data Access 协议,是最基本的 OPC 协议)
- OPC HDA(Historical Data Access 协议,有数据库)
- OPC UA(OPC UA: Unified Architecture 统一架构协议)
NI
NI LabVIEW 内的网络变量部署后,会在“NI 分布式系统管理器”中出现,这是基于 OPC 通信的,可以使用 OPC 读取与写入。
Python(OpenOPC)
1 | import OpenOPC |
测试本地
- 无需 OpenOPC 网关服务
- Python2.7 OpenOPC
1 | >>> import OpenOPC |
测试远程
OPC 客户端
- win10 系统
- Python2.7 OpenOPC
OPC 服务端
- winxp
- 安装 OpenOPC 网关服务
1
2
3
4
5
6
7
8
9C:\OpenOPC\bin> OpenOPCService.exe -install
Installing service OpenOpcService
Service installed
Starting the service
C:\OpenOPC\bin> net start zzzOpenOpcService
Stopping the service
C:\OpenOPC\bin> net stop zzzOpenOpcService测试代码
1
2
3
4
5
6
7
8
9
10
11
12
13Python 2.7.17 (v2.7.17:c2f86d86e6, Oct 19 2019, 20:49:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenOPC
>>> opc = OpenOPC.open_client('192.168.2.220')
>>> opc
<DynamicProxy for PYRO://192.168.2.220:7766/c0a802dc076c1cbada8377276cdfc7f0>
>>> opc.connect('National Instruments.Variable Engine.1','192.168.2.220')
>>> print opc.read('test.var')
(3.0, 'Good', '10/31/19 00:53:20')
>>> opc.write(('test.var2',5.0))
'Success'
>>> print opc.read('test.var2')
(5.0, 'Good', '10/31/19 00:54:44')注意点
- 使用 OpenOPC 安装包,安装网关服务
- 网卡顺序会导致返回 IP 错误(print OpenOPC.open_client(gateway))修改网卡的跃点数来修改次序
- 防火墙关闭或者将 7766 端口加入防火墙设置(OpenOPC)