张世超,刘建生,张 超,张 伟,李 敏
(1.北京利玛环太科技有限公司,北京 100120;2.北京机械工业自动化研究所有限公司,北京 100120)
该技术应用于“高压电容高频干燥设备”,该设备是我公司为国内某企业研发的新一代高压电容干燥设备,用来升级传统的导热油干燥设备。由于该设备使用了高压高频电加热,传统设备上利用多个热电偶接触式测量电容温度的方法不适用于此设备,因此该设备使用了能够实现非接触式多点测量温度数据的Optris红外测温系统。在设备调试的过程中发现OPtris红外测温系统在利用工控机的RS485接口与PLC通讯时频繁被工厂的其他设备干扰,出现数据传输错误现象,因此尝试在Optris红外测温系统开发包的基础上开发具有OPC客户端功能的通讯软件,并利用OPC服务器软件Kepserver和以太网对PLC进行数据读写,而以太网实时、稳定、高效的通讯特性是该技术研发的前提基础。经过长期现场测试,该方案彻底解决了Optris红外测温系统与PLC通讯异常的问题。
OPC是基于Microsoft的OLE/COM/DCOM技术,包含了自动化应用中一整套的接口、属性和方法的标准[3]。OPC技术在应用上主要包含OPC服务器和OPC客户端两部分。OPC服务器是一个数据源提供程序,收集现场设备数据信息;按照面向对象原则,OPC服务器被作为一个对象封装起来,只将接口方法暴露在外面,客户程序通过标准接口访问OPC服务器,从而实现系统的开放性。OPC客户端是一个数据接收程序,通过OPC标准接口与OPC服务器通信,获取OPC服务器的信息,凡是符合OPC标准的客户程序可以访问任何厂商的OPC服务器[3]。
在利用OPC通讯技术之后,设备网络结构如图1所示。
图1 设备网络结构图
如图1所示,工控机上安装的Optris红外测温软件通过以太网读取红外热成像仪上的图像数据,并将图像数据转换成温度数据。OPC通讯软件利用Optris红外测温软件开发包里的温度数据读取函数从电脑读取不同温区的温度数据,并把温度数据写入Kepserver配置好的变量中,而Kepserver上的变量与PLC中的变量一一对应,这样即可将温度数据写入PLC中。
OPC服务器通常支持两种类型的访问接口:自定义接口和自动化机接口,它们分别为不同的语言环境提供访问机制。
自定义接口是任何OPC服务器必须支持的访问接口,为用C/C++等高级语言编写的客户程序带来灵活高效的调用手段。
自动化接口是可选接口,它提供了自动配置和存取过程数据的接口,能为高级语言客户程序提供极大的便利,但其传输效率比自定义接口要低。
该项目中所设计的OPC通讯软件采用C#编程语言,由于温度变化缓慢,短时间内的温度变化对PLC控制影响可以忽略,为了加快项目进度,因此使用自动化接口。
OPCAutomation.dll包含了用于OPC通讯的自动化接口,自动化接口之间的层次模型如图2所示,从上至下呈包含关系。
图2 自动化接口层次结构图
OPC Server:OPC服务器,是获得其他对象和服务的类,并用于返回OPC Group类对象。
OPC Groups:OPC Server对象内OPC Group对象的集合。
OPC Group:存储由若干OPC Item组成的Group的状态信息,用于返回OPC Item类对象,并为OPCItem提供数据访问机制。
OPCItems:OPC Group对象内OPCItem对象的集合。
OPCItem:用于存储具体Item的定义、数据值、状态值等信息。
OPCBrowser:用来浏览OPCServer内OPCItem名称,一个OPCServer内只能有一个OPCServer。
该OPC通讯软件是在开发包TempMonitor程序的基础上编写的,TempMonitor是在VisualStudio 2013平台上利用C#语言编写的读取温度数据的程序。由于OPC通讯软件程序篇幅较大,下面只对程序创建的关键步骤和方法进行描述。
2.4.1 在TempMonitor程序中添加OPC功能
1)在项目上新建OPC类OPC.cs,如图3所示。
图3 创建OPC类示意图
2)在OPC类上引用OPCAutomation文件,如图4所示。
图4 OPC类引用OPCAutomation文件示意图
3)用下列语句在OPC类内创建并连接本地OPC服务器。
4)用下列语句在OPC类内创建组对象
5)用下列语句向组中添加读写项(AddItems函数中参数省略,具体可阅读OPC技术手册)
2.4.2 读取温度数据并写入PLC
1)在主程序画面中放置backgroundWorker组件。
BackgroundWorker是·net里用来执行多线程任务的组件,有些耗时较长任务在主程序中运行时可能会导致用户界面停止响应,此组件可以解决这个问题。由于读取温度数据和向PLC写温度数据会占用大量时间,如果直接在Formain主程序中实现这些功能,会导致窗口界面停止响应,所以通过使用BackgroundWorker组件,使读写温度数据的功能在后台任务中实现。
2)激活BackgroundWorker组件的DoWork函数,该函数内可以放置后台操作的任务。本程序将温度数据写函数KepGroup1.AsyncWrite( )和开发包里的温度读取函数GetTempMeasureArea( )放进该函数内执行。
图5是软件现场测试截图。高压电容温度测量包括对金属导体铝芯和非金属表层介质纸卷的测量。实验中设定了8个温区分别测量了4只电容铝芯和纸卷的温度数据,从图4可以看出温度数据正常。其它温度数据显示-100表示测试时Optris测温软件没有设定相关温区,测温软件默认返回-100。
图5 软件现场测试截图
该技术成功解决了高压电容高频干燥设备上Optris红外测温系统与PLC在复杂工业环境中通讯时出现数据传输异常的问题,对于设备的成功研发起到非常重要的作用。