摘要:本文介绍了水电站监控系统、西门子PLC集成PROFINET接口的CPU315-2PN/DP模块的开放式IE通讯和Modbus/TCP协议,并详细讲述了使用开放式IE通讯编程实现Modbus/TCP协议的方法,说明了采用面向对象编程的设计思想和软件编程。在湖南铜信溪水电站中应用证明通过开放式IE通讯实现Modbus/TCP协议与上位机系统通讯时稳定可靠,不需要采用西门子公司OPC、能有效降低整个水电站监控系统成本。
关键词:水电站,PLC,PROFINET,开放式IE通讯,Modbus/TCP,面向对象,OPC
1、引言
目前国内的水电站从最初的"集中控制、功能分散方式"到当今流行的"全分层分布开放式运行方式",已全部采用计算机控制系统取代过去以继电器常规控制方式,可实现"无人值班"(少人值守),大大提高了水电站的自动化水平。一般整个水电站监控系统在物理上分为两层:电站控制层和现地控制层。电站控制层(或称上位机系统)主要用于监控系统的组态、维护,水电站运行的监视、操作、信息管理、远动和优化控制等。现地控制层按控制对象分散方式一般设置为机组现地控制单元(LCU)、开关站及
2、项目简介
湖南铜信溪水电站装设三台10MW水轮发电机组,整个监控系统采用"全分层分布开放式运行方式",上位机系统设置二套操作员工作站、一套工程师工作站和一套通讯工作站,现地控制层设置三套机组LCU、一套开关站及公用LCU和一套闸门LCU。LCU主要采用西门子S7-300集成PROFINET接口的CPU315-2PN/DP模块,通过编程实现Modbus/TCP协议与上位机系统通讯;同时配置相应的数字量输入/输出模块和模拟量输入模块,完成机组、开关站、公用和闸门等设备的控制与调节。具体网络结构如图1所示。
图1:湖南铜信溪水电站网络结构
3、CPU315-2PN/DP模块及Modbus/TCP协议
CPU315-2PN/DP是西门子2004年底推出的一款高性价比S7-300 CPU。通过集成的通信接口(MPI/DP,PN),该CPU可直接连接MPI网络、Profibus-DP网络、开放式工业以太网,以及基于工业以太网技术的新一代现场总线PROFINET。该CPU的推出,进一步增强了S7-300 PLC的通信功能,使S7-300连接以太网的成本大大降低,并为PROFINET技术的普及提供了强有力支持。集成的IE/PROFINET接口支持多种通讯服务:基于PROFINET的开放通讯 (PROFINET IO, PROFINET CBA)、S7 通讯、开放式IE通讯、SIMATIC NET OPC Server和PG/OP通讯。本项目就是采用开放式IE通讯编程实现Modbus/TCP协议与水电站上位机系统通讯。软硬件版本为V2.3.0 或更高、带有集成PROFINET接口的CPU,均支持开放式IE 通讯,其具有不占用CPU连接资源、最多可建立八个TCP/IP连接,完全基于开放式TCP/IP协议、可与第三方设备在以太网上进行通讯等优点。
Modbus/TCP协议是简单的、中立厂商的用于管理和控制自动化设备的Modbus系列通讯协议的派生产品。Modbus/TCP协议是一种面向TCP连接的协议,只有在建立了TCP连接后,才能以半双工的方式进行数据交换。Modbus/TCP协议结构要求请求和响应带有六个字节的前缀,具体结构如下:
byte 0: 事务处理标识符 -通常为 0
byte 1: 事务处理标识符 -通常为 0
byte 2: 协议标识符= 0
byte 3: 协议标识符= 0
byte 4: 长度字段 (上半部分字节) = 0 (所有的消息长度小于256)
byte 5: 长度字段 (下半部分字节) = 后面字节的数量
byte 6: 单元标识符 (原"从站地址")
byte 7: MODBUS 功能代码
byte 8:寄存器地址(高字节)
byte 9:寄存器地址(低字节)
byte 10:寄存器数量(高字节,固定为0)
byte 11:寄存器数量(低字节)
byte 12:后面数据字节数量-----写寄存器时有效
byte 13:寄数据1(高字节)-----写寄存器时有效
byte 14:寄数据1(低字节)-----写寄存器时有效
需要注意的是Modbus/TCP协议所有的请求都是通过端口号502发送的,而CPU315-2PN/DP模块的端口号只能设置为2000至5000。
4、软件实现
4.1&nbs
在CPU315-2PN/DP这一边,不是通过NetPro设置通讯连接,而是通过编写程序实现。为了能通过用户程序和其它与TCP/IP兼容的通讯伙伴通过开放式IE通讯实现交换数据,STEP7(V5.3+SP1或以上)提供了四个功能块(FB)和一个用户定义数据类型(UDT)用于组态连接和数据交换:
1) FB63"TSEND":用于发送数据
2) FB64"TRCV":用于接收数据
3) FB65"TCON":用于建立连接
4) FB66"TDISCON":用于断开连接
5) UDT65"TCON_PAR":包括组态连接属性的数据结构
以上功能块(FB)包含在Standard L
开放式IE通讯只能通过TCP/IP 建立以太网连接,通讯是面向连接的,只有与通讯伙伴建立了连接后才能传送数据。
要编程建立连接,需要创建一个包含UDT65"TCON_PAR"数据结构的数据快(DB)。该数据结构包含建立连接所需的所有参数,需要为每个连接创建一个这样的数据结构。一个连接建立之后,将受到 CPU 的监控,如果中间发生了中断,则自动尝试重新建立连接。
4.2 程序执行过程
整个以太网通讯程序分成以下五个部分:
1) 初始化
初始化程序在OB100中执行,主要设置连接ID、CPU315-2PN/DP端口号、上位机系统中操作员工作站IP地址和开始等待建立连接标志(FB65_REQ=1)。
2) 建立连接
由开始等待建立连接标志(FB65_REQ=1)调用FB65等待上位机系统中操作员工作站请求建立连接。如果上位机系统中操作员工作站请求建立了连接,且FB65被无错误执行建立了连接(FB65_DONE=1),设置开始接收数据标志(FB64_EN_R=1)和复位开始等待建立连接标志(FB65_REQ=0)。如果上位机系统中操作员工作站没有请求建立连接或请求建立了连接FB65执行后有错误发生,则程序不做任何处理,还是等待建立连接。
3) 接收数据
由开始接收数据标志(FB64_EN_R=1)调用FB64开始接收数据。如果上位机系统中操作员工作站发送了数据,且被FB64被无错误接收后(FB64_BDR=1),则调用Modbus/TCP协议处理程序(FB74)对接收到的数据进行判断和处理。如果上位机系统中操作员工作站没有发送数据或发生了数据FB64执行后有错误发生,则程序不做任何处理,还是等待接收数据。
4) Modbus/TCP协议处理
首先判断接收数据数量、寄存器地址和功能码是否正确。如果正确,则进行读/写数据处理,并准备正确响应所需数据。如果错误,则设置非法数据地址或非法功能码标志,并准备错误响应所需数据。程序执行完成后设置发送数据标志(FB63_REQ=1)和复位开始接收数据标志(FB64_EN_R=0)。
5) 发送数据
由开始发送数据标志(FB63_REQ=1)调用FB63开始发送数据。不管发送完成是否正确,只要发送数据完成了就设置开始接收数据标志(FB64_EN_R=1)和复位发送数据标志(FB63_REQ=0),然后开始等待接收数据。
4.3 程序块
为了实现CPU315-2PN/DP与水电站上位机系统中操作员工作站的数据交换,PLC需要下表1所示程序块:
程序块 | 说明 |
OB100 | 当CPU重新启动时,OB100被运行。在该OB中设置连接ID、CPU端口号、操作员工作站IP地址和开始等待建立连接标志。 |
OB1 | 在每个周期都运行,主要调用以太网通讯控制程序(FB73)。 |
FB63 | 发送数据功能块,由以太网通讯控制程序(FB73)调用。 |
- 凡本网注明“来源:CK365测控网”的所有作品,均为北京新科时代传媒信息技术有限公司-CK365测控网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:CK365测控网”。违反上述声明者,本网将追究其相关法律责任。
- 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
- 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。