论文导读:常将数字化的智能模块EDA9033D作为系统监测参数的现场数据采集装置。控件可简化Windows下的串口通信编程。此系统已在某分部市电量采集监控中使用。规约,基于Modbus规约的智能模块在电量采集系统中的应用。
关键词:Modbus规约,智能模块,电量采集,MSComm控件
0概述
在过去传统的电力监控系统中,常采用电流、电压、功率、功率因素、电量等一系列变送器及测量这些变送器标准输出信号的输入模块作为系统的前端采集装置,这样既增加了系统成本,又使现场布线复杂,系统可靠性还不高。
随着计算机技术的不断发展,综合了4C技术的分布式控制系统的产生,实现了工业生产过程的集中管理与分散控制。在现代各种分布式电力监控系统及工业控制与测量系统中,常利用上监控中心计算机进行现场实时数据的获取与发送。采用简单可靠易开发的通信软件,可大大降低系统的开发难度。由于文献1没有对通信软件及通信流程进行详细介绍,本文结合具体通信实例给出了相应程序代码。
1. 1EDA9033D智能模块
在现代分布式电力监控系统中,常将数字化的智能模块EDA9033D作为系统监测参数的现场数据采集装置。智能电量变送器EDA9033D采用了RS-485接口,遵循标准的Modbus-RTU通讯规约,且能连接到所有的计算机和终端并与之通讯。
1.1EDA9033D智能模块性能
EDA9033D智能模块是一智能型三相电参数数据综合采集模块,可准确输出三相相电压;三相电流;功率、正(反)向有(无)功电度等电参数;电压、电流等的测量精度优于0.2%,其它电量的测量精度优于0.5%。进行通信时,数据格式、通讯速率、模块地址等参数可灵活设定。组网方便,通过使用RS-485中继器,可将多达247个模块连接到同一网络上。
1.2智能模块通讯格式
EDA9033D通信采用Modbus-RTU通讯规约,数据传输方式中每个字节包括1个起始位,8个数据位(最小的有效位优先发送),无奇偶校验位,1个终止位;数据错误检测时采用循环冗余校验码方式进行确认。
进行数据交换时,主机发送的查询数据帧格式,应与EDA9033D返回的响应数据帧格式相同。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。数据帧格式如表1所示
Adress |
Function |
Data |
Check |
8-bits |
8-bits |
N*8-bits |
16-bits |
表1 EDA9033D数据帧格式
1.2.1数据帧地址域
地址域在数据帧的开始部分,由一个字节组成,地址范围为0-255,EDA9033D可用的模块地址为1-247,地址0用作广播地址,其它地址保留。每个模块在接入网络时,地址是唯一的,主计算机通过地址域来选通EDA9033D模块,模块发送回应消息时,它把自己的地址放入回应的地址域中,告诉主计算机哪个模块正与之进行通信。
1.2.2数据帧功能码
功能码告诉被寻址到的EDA9033D模块执行何种功能,表2列出了模块用到的主要功能码以及其含义。发表论文,Modbus规约。
功能码 |
含义 |
01H |
读1/多路开关量输出状态 |
02H |
读1/多路开关量输入状态 |
03H |
读多路寄存器 |
05H |
写1路开关量输出 |
0FH |
写多路开关量输出 |
10H |
写多路寄存器 |
表2 功能码及其含义
除上表中列出的常用功能码之外,EDA模块还有两个扩展功能码65H和66H,65H用于读取多个连续测量周期的实时数据,66H用于实时测量数据自动上传。
1.2.3数据帧数据域
数据域包含了主计执行特定功能所需要的数据,或者从机响应查询时采集到的数据。如果有错误发生,此域包含一异议代码,主机应用程序可以用来判断采取下一步行动。
1.2.4数据帧错误校验域
该域允许主从设备检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数据在传输时线路上可能会发生一些改变,出错校验能够保证不去响应那些传输过程中发生改变的数据,可提高系统的安全性和效率。EDA9033D模块错误校验使用了CRC-16方式,其容易实现,是目前应用最广的检错码编码方式之一。
21EDA9033D智能模块在.电量采集系统中的应用
2.1系统组成分析
现代分布式电力监控系统通常是由监控中心计算机、通信网络、现场数据采集装置和现场电气设备4部分组成。发表论文,Modbus规约。监控中心计算机通过网络监控多个现场的数据采集装置,完成实时数据的存储和显示。现场数据采集装置与现场电气设备连接,实时采集电气设备运行过程中的各项工作参数。
2.2监控中心计算机通信软件
由于本系统采用力创公司生产的多个作为现场数据采集装置与监控中心计算机的通信软件作为现场数据采集装置,于是系统通信网络采用RS485菊花链总线结构,协议采用Modbus协议。监控中心计算机利用现有的RS-232接口,通过使用RS232/485的转换器与EDA9033D模块相连接。
监控中心计算机采用采用VB6.0中的串口通信控件MSComm作为现场数据采集装置与监控中心计算机的通信软件。MSComm控件可简化Windows下的串口通信编程,通过串行端口来接收和传输数据,为应用程序提供串行通信功能。
2.3系统通信实例
系统采用查询与应答方式进行通信,每一种查询命令都对应着一种应答。发表论文,Modbus规约。例如,系统要求获得1号模块所连接现场设备的相电压、电流、功率等26个实时电参数,并将其以十进制形式循环显示,需知道系统的4个配置参数Uo、Io、Ubb和Ibb才能进行数据的转换。
2.4通信程序
MSComm通信控件处理通信问题时有事件驱动和查询两种方式。事件驱动通信是处理串行端口交互作用的一种非常有效的方法。OnComm事件是MSComm控件的唯一事件。事件驱动通信方式流程包括串口初始化→写串口→触发OnComm事件→读串口→数据处理显示。
(1)串口初始化程序
为保证数据传输成功,需将EDA9033D模块数据格式、通讯速率设置成和监控中心计算机一样的参数。
MSComm1.CommPort =1'设定通信端口号为COM1
MSComm1.InputMode= comInputModeBinary
'设定为二进制的数据流方式
MSComm1.RThreshold= 1'设定接收缓冲区每收到一个字符就触发OnComm事件
MSComm1.SThreshold= 0'数据发送时不产生OnComm事件
MSComm1.Settings ='9600,n,8,1''设定传输数据格式
MSComm1.PortOpen =True'打开COM1端口
程序启动时打开串口;退出程序时关闭串口,以便使各种操作在串口打开状态下进行。
(2)写串口程序
Output属性用于将要发送的数据写入传输缓冲区。按照Modbus–RTU规范协议写串口。发表论文,Modbus规约。当使用RTU格式是,由于MSComm通信控件自身具有不足,不能简单发送十六进制数据,进行一下处理
Dim info(1 To 8)As Byte
info(1) = &H1
info(2) = &H3
info(3) = &H0
info(4) = &H40
info(5) = &H0
info(6) = &H1A
info(7) =&HC5 'crc校验码低字节
info(8) =&HD5 'crc校验码高字节
MSComm1.Output =info'写串口
(3)通信事件发生
在初始化程序中设定的RThreshold属性值,决定了发生OnComm事件之前要接收的字符数,OnComm事件发生后,将接收缓冲区的数据读取出来。发表论文,Modbus规约。由于此次通信事件接收缓冲区等待的字符数为57,部分程序代码为:
IfMSComm1.InBufferCount < 57 Then Exit Sub
getbyte =MSComm1.Input'读串口
For i =LBound(getbyte) To UBound(getbyte)
buffer = buffer +Hex(getbyte(i)) + Chr(32)
Next i
(4) 数据处理显示
进行数据转换处理时,采用MSComm控件的查询处理方式可便捷的知道系统的4个配置参数Uo、Io、Ubb和Ibb,可使用Do… Loop语句循环等待接收
Do
DoEvents'转让控制权,以便让操作系统处理其它的事件
Loop UntilMSComm1.InBufferCount >= 15。发表论文,Modbus规约。
此通信格式下的数据都以十六进制显示,且存放在相邻的两个内存单元,以Uo为例,需进行如下处理:
Uo =Val('&H' & (Hex(getbyte(3)) + Hex(getbyte(4))))
将Uo、Io、Ubb和Ibb定义成全局变量,代入从串口读出的数据,便可以真实值显示。以0041H寄存器中的数值Ub为例,先定义Ub1代入公式得出Ub的真实值
Ub1 =Val('&H' & (Hex(getbyte(5)) + Hex(getbyte(6))))
Text3(1).Text =CStr(Ub1 * Uo * Ubb / 10000)。
3.结束
目前,此系统已在某分部市电量采集监控中使用,这种通信方式灵活,可扩展性强,并且结构简单,可靠性高,具有较好的实际价值和使用价值,可大大减轻现场操作工人的工作强度,提高工作效率。
参考文献
[1]陆敏等,Modbus协议在电量采集系统中的应用,水利水文自动化,2004(1)
[2]EDA9033D三相电参数采集模块使用说明书
[3]范逸之,VisualBasic与RS-232串行通信控制,清华大学出版社,2002
|