1、OPC UA是什么?
是一种工业自动化标准,OPC全称OLE for Process Control(用于过程控制的OLE(对象连接与嵌入,可以理解为接口,linux下的pipe))。
UA 全称是“Unified architecture”,即统一架构。
2、OPC 的目的是什么?
是把PLC特定的协议(如Modbus,Profibus等)抽象成为标准化的接口,作为“中间人”的角色把其通用的“读写”要求转换成具体的设备协议,反之亦然,以便HMI/SCADA系统可以对接,通过使用OPC协议,终端用户就可以毫无障碍地使用最好的产品来进行系统操作。
最开始OPC UA可以简单理解为是新一代的OPC标准。
3、OPC UA应用场景
在工业控制领域,存在一个很大的现象,通信协议多种多样,比如西门子的S7-200的S7PPI协议、S7-300PLC协议,S7-400、S7-1200等等,不同厂家的PLC通信协议不同,同一厂家的不同型号的PLC通信协议也不相同,现场设备,比如电表、水表、热表、水泵、变频器、各种控制器,只要是涉及到通信的,协议都不尽相同,相比较而言,只有modbus 通信协议,相对统一,但是这个协议也是一个通信框架,具体到不同厂家,其设备的通信点表也是不同的。所以在工业控制领域,就衍生了一种SCADA软件,这种软件最重要的功能就是集成了各种厂家设备的通信协议驱动,实现与设备的通信。随着物联网时代的到来,这种多协议类型势必不方便 设备接入物联网平台,所以亟需一种统一化的通信协议,OPC UA的目的就是提供一种统一的通信协议,方便系统集成,物联网设备接入。
应用拓扑关系:
4、案例演示
(1)首先在服务器(ubuntu)上启动一个OPC server 程序, 这个server中,创建了10000个数据点,数据点名称为tag0/1/2/...../9999,对应的值为0/1/2/3..../9999,启动后的界面如下:
(2)运行 OPC UA client 软件 Softing OPC Client
(3)创建一个 连接 OPC server的 session
注意,需要输入OPC server的IP地址和端口。
(4) 连接成功后的session如下图:
(5)在 objects中,自动列出OPC server中所有的 数据点
通过上面的示例,可以发现,当OPC client与server连接成功后,server中的数据点,类似 链表的数据结构,把所有的可访问的数据都展现给client了,而且提供了每个数据点的详细参数,比如ID、name、value等。client通过id就能读取任一数据点的信息。这就极大的方便了client开发人员,相当于与工控系统解耦了。
5、OPC UA开发
OPC UA的开发还是有一定的难度的,目前有两种方式,分别是商业授权SDK和开源。
商业授权SDK可以降低开发难度,但是授权费用不低,从网上查找到最近的SDK招标信息:
价格基本在3万左右,授权程度不太确定,估计不会开放源码。
开源的OPC SDK目前非常少,基本上只有OPC官方基金会提供的案例代码和OPC62541,整个技术的开发,需要系统的了解OPC UA 统一框架和技术协议。
6、OPC UA认证及费用
OPC认证目前好像不是强制的,可以简单的理解为对自己开发的OPC产品进行送检,让OPC基金会背书,增加产品知名度,当然,对于产品有要求的,对成本不敏感的还是可以去认证的,毕竟认证相当于考试,通过认证的产品,必然是合格的产品。
认证费用,参考OPC基金官网:
OPC认证测试是一项为OPC基金会企业用户会员和UA Logo会员提供的高级服务:
- 企业用户会员:¥ 7000元/天
- UA Logo会员:¥14000元/天
测试通常需要5天时间来测试客户端或服务器。支持多个接口的较大系统可能需要更多的时间。
7、小结
OPC UA的技术优势非常适合物联网通信, 因为该技术实现了工控行业的协议统一,将IT人员与工控技术进行了解耦。但是开发难度很大,因为是一个比较大型的协议栈,相比Modbus通信协议,要复杂的多。而且OPC UA技术比较新,对于现场没有OPC Server的项目,如果想要统一使用OPC,还需要增加OPC 协议网关等软硬件设备。