基于OPC技术的PLC上位机管理系统
2011-07-07张宏坡康龙云
张宏坡,康龙云
(1. 华南理工大学 电力学院 新能源研究中心,广州 510640;2. 华南理工大学 广东省绿色能源技术重点实验室,广州 510640)
0 引言
随着过程控制的自动化程度的日益提高,PLC在工业控制系统领域的地位举足轻重。工业控制系统中的一般典型应用是,将PLC作为下位控制机实现生产制造过程的自动化控制,配以PC机作为上位管理机进行工业流程监视、模式控制等。其中,PC与PLC的数据传递是上位机管理系统实现的关键。直到OPC技术的不断发展和普及,才使得二者之间的通讯变得简单和高效。OPC技术已成为工业过程控制的通信标准,规范了过程控制和自动化软件与工业现场设备之间的接口,极大的提高了系统开发的效率。
本文以某物流传输PLC控制系统为例,介绍在以太网方式通讯下,开发基于OPC技术的西门子PLC上位机管理系统各个环节的设计和实现方法。
1 OPC技术
OPC是Object Linking and Embedding(OLE)for Process Control的缩写,它是微软公司的对象链接和嵌入技术在过程控制方面的应用。OPC以OLE/COM/DCOM技术为基础,采用客户/服务器模式,为工业自动化软件面向对象的开发提供了统一的标准,这个标准定义了应用Microsoft操作系统在基于PC的客户机之间交换自动化实时数据的方法, 主要包括数据存取、报警及时间处理及历史数据存取三部分。利用OPC的系统,由按照应用程序(客户程序)的要求提供数据收集服务的OPC服务器,使用OPC服务器所必需的OPC接口,以及接受服务的OPC应用程序所构成[1]。OPC服务器是按照各个供应厂商的硬件所开发的,使之可以吸收各个供应厂商硬件和系统的差异,从而实现不依存于硬件的系统构成。同时利用一种通用的数据类型,可以不依存于硬件中固有数据类型,按照应用程序要求提供的数据格式。OPC主要包含两种接口:CUSTOM标准接口和OLE自动化标准接口。OPC接口访问方式如图1所示[2]。
图1 OPC接口访问方式
2 上位机管理系统实现
2.1 管理系统构成
该物流传输控制系统由上位控制机、上位查询机、PLC控制器和传输自动化设备系统等部分组成。系统的结构图如图2所示。
图2 物流管理系统结构图
上位机管理系统通过实时读取和写入PLC运行参数,实现系统操作所涉及的所有按钮控制、工程参数设定、系统状态实时显示、系统数据管理等。其中PLC控制器、PLC远程模块和物流传输设备系统之间的连接采用PROFIBUS现场总线方式,PLC与上位机的通讯通过ETHERNET方式实现。
此系统所采用的主控PLC为SIEMENS的S7-300系列的CPU317-2PN/DP控制器。用于ETHERNET通讯的OPC服务器由SIMATIC NET软件组态实现。通过 Visual Studio C#高级程序语言编程实现上位机客户端的开发。
2.2 OPC服务器组态
系统所用的OPC服务器通过SIMATIC NET组态实现,SIMATIC NET是SIEMENS在工业控制层面上提供的一个开放的、多元的通讯系统。通过它能将工业现场的PLC、主机、工作站和个人电脑联网通讯[3]。
系统服务器组态所用软件:SIMATIC NET PC SOFTWARE V6.2、STEP7 V5.4+SP3、SOFTNET S7 IE授权和通信协议TCP/IP;硬件:CS7 300 CPU315-2DP和普通网卡。
OPC服务器与PLC S7连接通讯的组态操作过程如下:
1)配置PC站的硬件机架
在Station Configuration Editor配置窗口中,为1号插槽和3号插槽分别添加OPC SERVER和IE GENERAL,并设置网卡的IP Address为本机的IP地址。
2)配置控制台(Configuration Console)的使用与设置
在配置控制台中需确认以太网卡的模式为Configuration mode,插槽号(Index)指向步骤1)网卡所在插槽。并Access Points设定窗口中,将S7 ONLINE 指向 PC internal(local),为 PC 站下载做准备。
3)在STEP 7中组态PC Station
在SIMATIC Manager中插入一个与步骤1)中PC站名字相同的PC Station,同样是在相同插槽中插入OPC SERVER和IE GENERAL。在网卡上添加以太网连接,并同样设定网卡IP为本机地址。
在保存和编译无误后,进入NetPro配置窗口,在IE GENERAL上添加S7 Connection连接,设定连接对象的IP为PLC的IP地址。保存编译无误后即可进行下载。
4)数据通讯的测试-OPC Scout
在OPC Scout中进行OPC Server和PLC的数据通讯测试。
至此,OPC服务器组态完成。
2.3 OPC客户端实现
OPC应用程序首先应该生成OPC服务器支持的OPC对象,然后就可以使用OPC对象支持的属性和方法,对其进行简单的操作[1]。OPC的数据访问方法主要有同步访问和异步访问两种。实例客户端程序通过OPC自动化接口采用C#编程实现,数据写入采用同步方式,数据读取采用异步方式和订阅方式。订阅方式严格意义上属于异步方式,它在数据请求后立即返回,当OPC服务器的Group组在组内有数据发生改变时,自动根据更新周期刷新相应的客户端数据。OPC数据访问对象由如图3所示的分层结构组成。
图3 OPC数据访问对象的分层结构
OPC客户端程序的设计开发实现程序如下。
2.3.1 应用OPC组件
在COM组件中添加用于通讯的OPC Automation 2.0组件后,在程序中引用命名空间:
Using OPCSiemensDAAutomation;
2.3.2 建立连接及对象
建立OPC链接之前应先建立OPC数据对象,包括组对象和项,并添加相应项的句柄,用于数据读写。本例OPC服务器为OPC.SimaticNet,使用服务器名和其IP地址调用连接函数实现OPC服务器的连接。关键编程实现如下:
MyOpcServer=new OPCServer ();
MyOpcServer.Connect ("OPC.SimaticNet",
"192.168.0.101"); //服务器名和地址
MyOpcGroup=MyOpcServer.OPCGroups.Add
("MyGroup1"); // 添加组对象
MyOpcItem1=MyOpcGroup.OPCItems.AddItem
("S7: [S7 connection_1] DB10, INT0",1); //添
加Item对象
SerHandle [0] =MyOpcItem1.ServerHandle; //
Item句柄
2.3.3 同步写数据
Private void SyncWrite (object sender, EventArgs e)
{
……
MyOpcItem1.Write (Txt_W1.Text);
…
}
2.3.4 异步读数据
在异步操作情况下,需要定义按照特定接口的相应异步事件,订阅方式如下:
MyOpcGroup.DataChange+=new
DIOPCGroupEvent_DataChangeEventHandler
(MyOpcGroup_DataChange);
Void MyOpcGroup_DataChange (int
TransactionID, int NumItems, ref Array
ClientHaref Array ItemValues, ref Array
Qualities, ref Array TimeStamps)
定义完所需的异步事件函数和返回函数后,就可以根据相应的事件函数和返回函数进行对应的异步方式和订阅方式的数据访问了。
2.3.5 释放对象及断开连接
OPC客户端连接后占用服务器的资源,所以长时间不用OPC数据读写时,要及时断开OPC连接以释放资源。
if (MyOpcItem != null)
MyOpcItem = null;
if (MyOpcGroup != null)
MyOpcGroup = null;
MyOpcServer.Disconnect ();
2.4 OPC远程访问DCOM设置
OPC技术依赖于微软的COM和DCOM在自动化的硬件与软件之间进行数据交换。对于远程访问OPC服务器的客户端,都必须正确的设置DCOM,才能够实现OPC数据的远程传递[4]。
本例系统通过简单有效的DCOM通讯配置建立起了可靠的OPC远程访问,具体的配置步骤如下:
1)移除Windows安全。
2)建立相互能识别的用户账号。
为了使计算机能正确的识别用户账号,必须保证用户账户在OPC客户机和OPC服务器上都能够被识别。
3)配置系统宽泛的DCOM设置。
通过系统的宽泛的DCOM设置来规约各个用户的访问和控制权限。系统的宽泛的DCOM设置影响着Windows的DCOM应用,包括OPC的应用。由于OPC客户没有自己的DCOM的设置,受缺省DCOM的配置的影响,因此需要作必要的如COM安全属性方面的修改。
4)配置Server特殊的DCOM设置。
针对本例的OPC服务器,通过Identity标签对远程访问用户进行身份安全设置。
5)恢复Windows安全。
至此,便可以进行OPC数据的远程访问了。
对于规模较小的自动化控制系统,可以优先考虑将OPC Client应用程序和OPC Server运行在同一计算机上,只进行本地OPC服务器的访问,这样不仅可以不用进行远程访问DCOM设置,减少工作量,还避免了开放过多的服务器访问权限,提高了系统的安全和稳定性。
在本例PLC控制系统中,通过上述服务器组态、客户端应用访问程序的编写以及远程访问的端口配置,建立起了上位机与PLC的数据通讯。再进行相应的系统界面设计以及仓库数据库管理系统的开发,完成整个上位机管理系统的实现。
3 结论
OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化,使其间的数据交换更加简单化的目的而提出的,是适用于很多系统场合的具有高度柔软性的接口标准,为工业自动化控制的发展提供了活力。本文介绍了开发基于OPC技术的PLC上位机管理系统的实现过程,具体详细的说明了开发过程中OPC服务器组态、OPC客户端程序实现以及OPC远程访问DCOM设置的方法以及注意事项,可以作为其他工业控制应用系统的参考。用上述方法开发的本例物流传输PLC控制系统经实际测试,运行稳定、可靠性高,效果良好,已投入正常使用。
[1] 日本OPC基金会. OPC(中国)促进委员会, 译. OPC应用程序入门[Z]. 北京: OPC中国基金会, 2002.
[2] 西门子(中国)自动化与驱动集团. 如何在C#中实现OPC数据访问[Z]. 北京: 2009.
[3] 西门子(中国)自动化与驱动集团. 通过ETHERNET建立SIMATIC NET OPC服务器与PLC的S7连接[Z]. 北京:2005.
[4] 西门子(中国)自动化与驱动集团. 如何配置OPC DCOM[Z]. 北京: 2006.