本章介绍在业内应用最广泛的OPC产品:Kepware
OPC Server及其插件。
1.
什么是OPC
OPC即OLE for
Process Control,用于过程控制的OLE。
而OLE即Object Linking
and Embedding,对象链接与嵌入。
比如WORD中插入一个EXCEL表格,就利用了OLE技术。
图3.5-1 OPC的作用
如图3.5-1所示,OPC的作用是将PLC数据块(Data
Block)转换成MES(通过OPC客户端)能够直接读写的内存变量(Tag)。
一般来说,如果PLC要和上位系统通信,通常会把数据存储在专用的接口数据块中,并且为每个数据块规划好专有结构,如:
但是这些数据块的地址是无法被MES直接访问的。
而经过OPC映射后,这些PLC变量和一般的IT服务器内存变量在形式上已经没有了区别,OPC服务器能够直接对这些PLC变量进行读写操作。
而我们可以在MES上部署OPC客户端,对这些变量进行访问和读写。
目前OPC协议主要有两种:OPC
DA和OPC UA。
OPC DA即OPC Data
Access,这个协议基于微软的DCOM技术实现,已经用了很多年,非常成熟,但是只能部署在WINDOWS平台。由于DCOM的限制,OPC DA的安全性不高,配置也较繁琐。
OPC UA即OPC Unified
Architecture,是跨平台的,可以部署在LINUX+JAVA环境下,但是目前应用还不是很广泛。
2.
DataLogger
DataLogger是Kepware的一个插件,能够将OPC变量的值自动记录到数据库中。
对于一般的PLC数据采集需求来说,这个插件已经足以满足了,它只需要一些简单的配置,不需要任何的代码开发。
数据存到数据库里以后,可以通过编写数据库存储过程或者应用层逻辑,来对数据进行业务处理。
比如我们要对一个旧工厂的冲压车间实施PMC,采集设备状态信息,那么我们可以利用OPC DA + DataLogger来采集数据,然后在数据库里编写触发器和存储过程来对数据进一步处理。
3.
ODBC Driver
DataLogger只能对数据库进行写操作,不能进行读操作,因此数据只能从PLC向MES上行传输。
但某些时候,我们需要读数据库。
比如我们要对焊装车间增加订单下发和时间同步功能,那么我们可以利用ODBC Driver插件来实现。
ODBC Driver把数据库作为一个设备进行管理,调用ODBC引擎实现数据库连接和读写操作。
我们可以建立两个接口表,一个用于存储当天工单,一个用于存储时间同步信号。
OPC服务器通过这两个表来读取信息,然后将数据通过OPC DA写到PLC中。
4.
Advanced Tags
Advanced Tags是一组插件,这里介绍应用较多的Link Tag。
Link Tag能够将一个变量的值自动写入另一个Tag。
这里介绍两个应用案例。
案例1:PLC通信。如区域A进行装配,区域B执行检查。当区域B检查出现问题时,通过ANDON系统通知到区域A PLC。由于区域A和区域B之间距离较远,且工艺上没有数据交互。因此,我们可以在不增加硬件设备(如耦合器)的情况下,通过OPC DA + LINK TAG来实现2个区域PLC之间的通信。
案例2:PLC数据上传到MES。DataLogger尽管能够写数据库,但是它有一个很大的限制:只能增加行记录(INSERT)。而ODBC DRIVER能够更新接口表(UPDATE)。因此我们可以通过OPC DA来监控PLC变量,再通过LINK TAG将PLC TAG映射到ODBC DRIVER对应的接口表。详细实现,可参考我的文章《通过KEPWARE ODBC DRIVER和ADVANCED TAG 实现数据库和PLC的双向通信》。
5.
IoT Gateway
IoT Gateway即Internet of
Things Gateway物联网网关。
Kepware以插件的形式提供了4种网关:
-
MQTT客户端
-
REST客户端
-
REST服务器
-
ThingWorx网关
前3种都可以很方便地配置使用。
MQTT即Message Queuing Telemetry Transport,是一种专门用于远程窄带网络的消息队列服务协议。比如在一些机加车间,网络信号不稳定,那么我们可以在不改造网络的情况下,利用此客户端来采集PLC数据。
REST即Representational State Transfer可重新表达的状态迁移,是一种应用较广泛的实时可靠的IT信息传递方式,目前在很多场合取代了Web Service进行部署。
REST客户端能够侦测PLC变量,一旦发生变化,则自动调用MES REST服务器,将数据上传给MES。比如AVI系统的车辆过站记录,能够通过REST客户端实时上传。
REST服务器提供了一个监听器,将PLC变量暴露出来,MES可通过REST客户端来执行特定的指令。如MES要冻结某个工单,则可通过REST调用将信息实时写入PLC。