浅谈C语言的工业计算机与S7_300的OPC通讯
详细内容
1 前言 OPC( OLE for Process Control) 是一种用于工业数据通讯的标准协议,使开发人员能够方便的按照 OPC 协议编程实现 OPC 客户端程序与 OPC 服务器之间的通讯。为了实现工业计算机与 S7 - 300 的实时数据通讯,本文以西门子公司的 SIMATIC 作为 OPC 服务器,使用 C#语言编程实现 OPC 客户端程序与 SIMATIC OPC 服务器之间的数据通讯。
2 SIMATIC OPC 服务器及连接配置 SIMATIC 是西门子在工业控制系统提供的一个开放的、多元的通讯系统,可以实现工业现场的 PLC、主机、工作站和个人电脑联网通讯。通讯的网络包括了工业以太网、PROFIBUS、 PROFIBUS - PA 等。SIMATIC OPC 服务器不但提供了数据访问的接口,同时还提供了报警和事件的接口等多种功能。为了能够让 SIMATIC 系统正常的工作,必须安装 SIMATIC 软件。网络通讯方式为工业以太网。按照 OPC 接口的规定,C 或 C ++ 语言编写的客户机应用程序可以使用自定义接口和自动化接口。其他的编程语言( 如 VB,Del- phi,C#等) 编写的客户机应用程序只能使用自动化接口。
2. 1 安装软件工业计算机的操作系统为 XP 系统,SIMAT- IC 软件的版本为 SIMATIC. 2006,编程环境为 Microsoft Visual Studio 2008。当 SIMATIC 软件安装成功后,在桌面上可以看到 Station Configuration、SIMATIC Manager 等的快捷图标。 2. 2 OPC 服务器与 S7 - 300 连接通讯首先,打 开 SIMATIC 软 件 的 Station Configuration Editor 窗口进行 PC 硬件机架的配置,在打开的窗口中依次在第一行和第三行插入 OPC Server 和 IE General,同时还需要对工业计算机的网络进行配置,以保证 PC 站的 IP 地址与 S7 - 300 的 IP 地址属于同一 IP 段。以上操作完成后,点击“Station Name”按钮来给 PC 指定一个名称,例如: “etherOPC”。图 1 为 PC 硬件机架的配置界面截图。图 1 PC 硬件机架的配置 Fig. 1 configuration of PC hardware chassis 其次,打开 Configuration Console 窗口对控制台进行配置。在打开的窗口中首先可以查看到以太网的模式已经从 PG mode 切换到 Configuration mode,然后单击“Aess Points”把 S7ONLINE 的指向选项选为“PC internal( local) ”。最后,打开 SIMATIC Manager 窗口,通 过 “File→New” 创建一个新项目,如: “S7300OPC”。通过“Insert →Station→Simatic PC Station” 插入一个 PC 站,并且命名与上述命名的 PC 站名称相同,本文中即“etherOPC”。
创 建 成 功 后,双 击 Configuration 进入 PC Station 组态,从硬件目录串口选择与已安装的 SIMATIC 软件版本相符的硬件插入到与上述 PC 硬件机架对应的位置。双击“Configure work”进行 Pro 配置,选择 OPC Server 连接表的第一行,通过“Insert →New Connection” 来建立一个新的连接,在弹出的连接属性画面中,选择“S7 connection”属性。然后在“S7 connection”属性窗口中按照提示输入 S7 -300 与工业计算机的 IP 地址,双击 “Address Details”设置符合 S7 - 300 的机架号 0 和插槽号 2。上述操作完成后,编译无误后保存。上述步骤完成后,就实现了 S7 - 300 与 SI- MATIC OPC 服务器的数据通讯,可以通过 OPC Scout 来检查连接是否正常。图 2 为 OPC Scout 的运行界面截图。图 2 OPC Scout 的运行界面截图 Fig. 2 Screenshot of running interface of OPC Scout 图 2 中,Item Names 项为 S7 PLC 站的变量地址。例如: S7: [S7 connection _ 1]DB400, INT44 中,S7 为协议 ID,这是 S7 协议规定的; [S7 connection_ 1]为连接名,这是用户定义的 OPC 连 接 字 符 串 标 识 名; DB400 为 数 据 块, INT44 为变量的类型和地址。OPC Scout 要能够正常的访问 S7 PLC 站的变量地址,必须严格按照上述的变量编址方式。
3 OPC 客户端程序的软件实现本文研究的 OPC 客户端与 SIMATIC OPC 服务器的数据通讯,实际是为了实现 S7 - 300 与工业计算机的数据通讯。在已经配置好的 SIMA-TIC OPC 服务器的基础上,确定了 OPC Server 名“OPC. SIMATIET”和采用自动化接口,并且严格按照 S7 PLC 站的变量编址方式,可以编程实现基于 C#编程语言的 OPC 客户端程序与 SIMATIC OPC 服务器通讯。图 3 为实现 OPC 客户端与 OPC 服务器连接通讯的程序流程图。
( 1) 添加引用。OpcRcw. DA 和 OpcRcw. n 是西门子提供的关于 OPC 通讯的两个动态链接库文件。在 C#编程环境中引用这两个文件,调用这两个动态连接库中的接口函数。 客户端与 OPC 服务器通讯程序流程图 Fig. 3 Flow chart of munication between OPC client and OPC server using OpcRcw. n; using OpcRcw. Da;
( 2) 定义 OPC 相关变量。在进行与 OPC 服务器的连接之前,首先要定义 OPC 相关的变量,其中包括: OPC 的服务器名,OPC 服务器的对象名等。 internal const string SERVER _ NAME = “OPC. SIMATIET“; / /OPC 服务器名 private IOPCServer pIOPCServer; / / 定义 OPC- Server 对象 …
( 3) 实现与 OPC 服务器的连接。public bool ConnectServer( string node _ name,out string er- ror) ,其中 node_ name 为 OPC 服务器的计算机名称,连接过程中的错误信息捕捉给 error 输出。函数返回 true 和 false,分别代表成功和失败。具体的步骤: 创建服务器对象创建 OPC 组对象 - 向组对象中添加多项 OPC 客户端读写操作。
( 4 ) 创 建 服 务 器 对 象。pIOPCServer = ( IOPCServer) System. Activator. CreateInstance( svr- ponenttyp)
( 5) 创建 OPC 组对象。public bool AddGroup ( string groupName,int bActive,int updateRate, out string error) ,其中 groupName 为创建组对象的组名,bActive 为组的激活状态,updateRate 为组的刷新频率,创建组对象过程中的错误信息捕捉给 error 输出。函数返回 true 和 false,分别代表成功和失败。
( 6) 向组对象中添加多项。public bool AddIt- ems( string[]itemsName,int[]itemsID,out string error) ,其中 itemsName 为要添加的项的名称,是一个字符串数组,itemsID 为与字符串数组相对应的序号数组。添加项对象过程中的错误信息捕捉给 error 输出。函数返回 true 和 false,分别代表成功和失败。
( 7) OPC 客户端读写操作。OPC 客户端进行读写操作之前,首先要根据通讯方式是同步还是异步,从而实例化指针 IOPCSyncIO/IOPCAsyn- cIO 接口。本文的 OPC 客户端通讯采用同步方式。实际应用过程中,IOPCSyncIO 接口分别提供了读、写的方法,即 IOPCSyncIO. READ 和 IOPCSyncIO. WRITE。 ( 8) 断开与 OPC 服务器的连接。public bool Close( out string error) ,其中,断开连接过程中的错误信息捕捉给 error 输出。函数返回 true 和 false,分别代表成功和失败。在程序断开与 OPC 服务器的连接之前,必须先删除已经创建的 OPC 对象并且释放内存。上述利用C#编程语言实现OPC 客户端程序与 SIMATIC OPC 服务器的数据通讯,在 OPC 通讯客户端系统界面上实时显示了数据的读写情况。图4 为 OPC 通讯客户端运行界面截图。(本论文由上海论文网://shlunwen. 整理提供,如需转载,请注明出处或联系我们的客服人员)