基于Profibus-DP现场总线通信的分布式监控系统设计
2014-07-12汪先兵倪受春林其斌王祥傲
汪先兵,倪受春,林其斌,王祥傲
Profibus-DP现场总线通信协议传输速率可达12Mbit/s,具有完全开放性、可靠性高、灵活扩展性的特点,在工业自动化领域被广泛使用[1-3]。目前,世界上许多自动化生产厂家都开发了带有标准的Profibus-DP接口的智能仪器产品,从而可以方便的接入Profibus-DP现场总线的分布式监控系统中。分布式监控系统中的上位机软件如组态王、WinCC等商用组态软件编程快捷、功能齐全和图库丰富等优点,但对于中小型工业分布控制系统,价格相对昂贵,同时对操作人员的技术要求也较高[4-6]。基于此,本文研究了西门子S7-300系列PLC的Profibus-DP现场总线网络的通信技术,在PRODAVE软件和MPI网络的基础上采用VC++6.0开发了上位机监控软件,实现了上位机与S7-312PLC之间的通信、检测、监控、诊断和管理的一体化设计,进一步实现了对分布式监控系统的“四遥”功能。
1 系统的通信结构设计
Profibus-DP现场总线组成的分布式监控系统从上到下依次为:监控管理层、通信管理层、现场设备层。在整个分布式监控系统中,最上层是由PC主机、服务器和打印机组成,第二层是由西门子S7-300系列S7-312的PLC构成,第三层由现场带有Profibus-DP通信接口的智能设备组成。
1.1 监控管理层
以监控主机PC、服务器作为监控系统的核心,在该PC上运行VC++6.0高级语言开发的上位机软件,可实现对各现场设备状态监控、报警显示和数据记录等操作,通过服务器存储的数据可进行数据统计和分析报表。监控主机PC通过TCP/IP以太网实现与服务之间的数据交换,监控主机PC与S7-312的PLC通信是由主机内的CP5611卡与PLC的MPI端口连接实现的,其MPI通信速率为187.5kbps/s。
1.2 通信管理层
主要由4台S7-312PLC、STEP7软件以及梯形图程序组成,下行通过串口连接若干台现场设备层的低压智能设备,上行通过MPI网络口连接监控管理层PC主机;负责将现场信息采集并向PC主机发送有关信号以及具体执行控制命令,驱动执行机构,完成监控系统的上传和下达任务。
1.3 现场设备层
该层是带有Profibus-DP接口的低压智能设备组成,通过Profibus-DP总线连接起来,一方面将采集到的数字量信号、开关量输入信号与输出信号送入PLC至监控主机PC,另一方面接收来自监控主机的命令信号。此外,智能设备可完成就地显示、控制、整定参数、报警和测量等任务。如图1所示为典型的Profibus-DP现场总线通信的分布式监控系统结构图。
图1 Profibus-DP分布式监控系统通信结构
2 系统的通信管理层软件设计
GSD文件包括智能设备的I/O点数、诊断信息、波特率和时间监视等工作特性[7],低压智能设备进行Profibus-DP通信组态时须用GSD文件使通信设备集中在同一现场总线系统中进行数据采集和集中监控处理。如图2所示为低压智能设备的Profibus-DP现场总线通信组态。
图2 低压智能设备的Profibus-DP通信组态
低压智能设备通信组态后,利用共享数据DB块来储存每台仪表的参数变量值,PLC寄存器中每条数据记录对应一个DB块,每条数据记录中的一个字段对应该DB块中的一个字。PLC程序在访问数据块时,按一定顺序很方便的读写并处理对应数据块中的变量。根据分布式监控系统的要求,通过S7-312系列PLC的继电器输出节点进行控制,从而达到控制现场智能设备的启动、停止以及报警和跳闸的复位,以达到对现场设备的实时遥控。智能设备的变量参数共享数据块DB1的变量参数传送图如图3所示。
图3 智能设备的变量参数传送图
3 系统的监控管理层软件设计
监控管理层中上位机软件设计主要包括主界面以及启动系统、主界面切换、实时数据和实时曲线、遥控命令、遥调命令和数据库管理系统等几个部分。其监控软件设计的层次结构如图4所示。上位机软件设计中,采用PRODAVE软件实现监控主机PC与西门子S7-312PLC的MPI通信的数据交换。PRODAVE是用于与PC与S7-312PLC之间的数据链接通信的工具箱[8],基于PRODAVE提供的库函数,可利用VC++6.0开发上位机的通信软件,实现上位机的远程监控。
图4 监控软件设计的层次结构
3.1 实时数据采集程序设计
实时数据的采集就是通过PRODAVE函数来实现读取PLC存储区中多个连续字节信息。系统为每类通信数据设定相应的通信命令,程序通过PRODAVE中的动态链接库读取PLC中的数据,VC++6.0在调用DLL函数之前,需在API函数定义的头文件 W95_s7.h和Komfort.h声明其函数原型。
程序执行数据采集,给变量plc_adr_table赋初值,采用load_tool建立PC与PLC的通信连接,程序如下:
程序执行主函数main中的int res=load_tool(1,“S7ONLINE”,plc_adr_table)语句,res==0为通信正常,res=!0为通信错误。程序执行int error=unload_tool()表明PC与PLC断开连接。在通信结束时需用unload_tool函数断开PC与PLC的连接,避免PC死机和出现异常情况。
3.1.1 读取PLC中的输入寄存区中字节数据
低压智能保护仪表组态后,其开关量、数字量和模拟量数据是按字节数据和字数据依次存放在PLC中对应的输入寄存区中和对应的DB块中,程序可通过e_field_read函数依次读取PLC中输入寄存区中的字节数据,并经过相应的处理后显示。
e_field_read函数从输入寄存器地址0001开始依次读取两个字节的数据,并存放到变量存储区Buffer中。在程序的开始发送读取PLC指令,连续读取两次,如果两次的数据读入都不符合,则程序强制退出。反之,如果正确,则对低压智能设备的运行状态、报警状态和跳闸状态进行处理显示。实时数据和实时曲线显示如图5所示。
图5 实时数据和实时曲线显示
3.1.2 读取PLC中的DB块的数据字
PC与PLC通信连接后,就可对低压智能设备进行数据采集,智能设备的开关量、模拟量数据依次存放于PLC中对应的DB块中,一条记录对应一个DB块,每条记录的一个字段对应该DB块中的一个字。程序通过db_read函数依次读取PLC中各DB块中的字,并经过相应的处理后,进行数据显示。
db_read函数读取PLC数据块DB1中从DBW0开始的数据字,并存放到PC的变量存储区buffer中。读取PLC中的DB块的数据字的程序流程如图6所示。数据采集显示如图7所示。
图6 读取DB块数据程序流程图
图7 通信后数据采集显示图
3.2 PLC中的控制程序设计
系统实现对现场低压智能设备的控制和调整参数,需读写PLC输出寄存区中的数据,监控主机PC实时获取PLC采集的现场仪表的开关量信号状态和仪表参数,经分析与决策后,将控制命令和调整参数发送到PLC,以实时控制现场设备运行和调整参数。低压智能设备组态后,输出寄存区中采用一个字节的前5位来标示设备的各个控制状态。程序中利用a_field_read函数先读取设备的运行状态,经程序判断处理后通过a_field_write函数改变输出寄存区的值来控制智能设备。
程序运行后先关闭数据采集的时钟命令,读取PLC中输出寄存区中的运行数据,而后依据读取的数据状态对PLC输出寄存区中字节的修改,实现对现场设备的启动、停止,控制以及参数的调整,执行完毕,重新打开数据采集时钟。系统的控制程序流程如图8所示。
图8 系统控制程序流程图
4 调试结果
监控系统软件编程完成后,搭建实验平台进行系统调试。现场设备层为100台带Profibus-DP通信的MMC unit低压智能保护仪表,每50台之间DP通信口串联在一起。通信管理层为两台西门子S7-300系列S7-312PLC,每台PLC下面挂上50台带DP通信口的低压智能保护仪表,每台PLC通过MPI通信电缆和监控管理层的监控主机与服务器相连。装置变电所主界面实时数据显示如图9所示,图中绿色线路表示线路接通,红色线路表示线路断开,文本框内显示为每相线路的电流值,遥控按钮为控制该条线路的接通和断开,遥控按钮具有权限设置,只有登录的用户才可以进行遥控操作,一旦线路出现故障,告警和故障指示灯绿红闪烁。菜单栏可以切换化水处理站、空压站等界面。
图9 装置变电所主界面实时数据显示图
污水处理站实时数据和实时曲线显示如图10所示。图中实时显示测量数据、开关量数据和平均电流和线电压的实时曲线。
图10 污水处理站实时数据显示图
图11所示为地址为3的低压智能保护仪表的历史数据的查询结果,此数据存放于服务器的数据库中。
图11 化水处理站历史数据查询结果图
5 结 论
Profibus-DP现场总线组成的分布式监控系统具有数据传输速度快、正确率高、可靠性高的特点,本文设计了Profibus-DP现场总线技术的分布式监控系统结构,研究了在MPI网络通信和PRODAVE软件基础上,基于调用PRODAVE软件包的动态链接库和多线程技术,利用VC++6.0开发了分布式监控系统的上位机软件,该软件实现了西门子S7-312PLC与上位机的通信及上位机的远程监控,实现了低成本、具有部分可复用功能的上位机监控软件,具有一定的应用前景,针对相同的工程项目只要修改相应部分参数就可以实现相同监控效果,大大地提高了开发的效率,也保证了系统的稳定性。
[1]顾洪军.工业企业网与现场总线技术及应用[M].北京:人民邮电出版社,2002.
[2]郝丽,王东兴.Profibus-DP从站开发研究[J].北京机械工业学院学报,2000,15(1):23-27.
[3]王紫湘.基于Profibus-DP的断路器智能通信模块设计及开发[D].湖南大学,2006.
[4]章 猛.Profibus现场总线技术与PC控制[J].信息技术,2002,26(10):28-29.
[5]叶晓山.Profibus现场总线在工业自动化控制系统中的应用[J].安徽化工,2002,50(3):45-50.
[6]冯地斌,吴 波.Profibus现场总线技术[J].自动化与仪器仪表,2002,30(2):65-68.
[7]廖常初.S7-300/400PLC应用技术[M].北京:机械工业出版社,2005.
[8]邱仲潘.Visual C++6.0从入门到精通[M].北京:电子工业出版社,1999.