基于Modbus RTU协议的电力数据采集系统设计

2016-08-29 03:17南京西尔特电子有限公司傅启国
电子世界 2016年15期
关键词:PC机通信协议子程序

南京西尔特电子有限公司 傅启国



基于Modbus RTU协议的电力数据采集系统设计

南京西尔特电子有限公司傅启国

对Modbus通信协议进行了较深入研究,在此基础上设计了基于Modbus RTU协议的电力数据采集系统,实现PC机和数据采集终端之间的互联通信,进而实现了对电力系统数据的集中管理和实时监测,该系统具有简单、经济、兼容性好等优点。

Modbus通信协议;数据采集系统;电力系统

0 引言

随着智能电网的不断发展,在电力系统中除了要对电能进行精确计量,还需要实现电力系统电能质量和运行状态的实时监测,而这都依赖于对电力系统的电压、电流、有功功率、功率因数等相关参数的实时和准确采集。

现场总线技术是20世纪80年代末90年代初发展起来的自动化领域的现场设备互联网络通信技术,通过现场总线把各电力数据采集终端的数据传输给中央控制计算机,实现集中分析、实时监测,为电力系统的可靠运行和智能电网的持续发展提供数据支持[1]。

在各种应用较成熟的现场总线中,Modbus通信协议因其简单、实用、投资小和兼容性好等特点而在电力系统通信领域得到了广泛应用,下面对其介绍。

1 Modbus通信协议

Modbus通信协议最初由Modicon公司开发出来,现在是工业领域最成熟的应用层协议之一[2],具有开放、透明、侦错能力强、实时性好等优点。协议规定总线上只能有一个主设备,可以有多个从设备,并采用主从结构的通信方式。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息给主设备,如果以广播方式查询,则任何从设备不作回应。

1.1传输模式

在Modbus网络上进行通信,其数据传输模式有两种:ASCII模式或RTU模式。用户使用时需设置为其中的一种模式。

(1)ASCII模式

?

以ASCII模式进行通信时,消息中的每个字节都作为两个ASCII字符发送,错误检测方法采用纵向冗余检测(LRC)。消息中每个字符由1个起始位、7个数据位、0或1个奇偶校验位和1或2个停止位组成。该模式的优点是字符发送的时间间隔可达到1秒而不产生错误。

(2)RTU模式

地址 功能代码数据数量 数据1 … 数据n CRC高字节CRC低字节

以RTU模式进行通信时,消息中的每个字节包含两个十六进制字符,错误检测方法采用循环冗余检测(CRC)。消息中每个字符由1个起始位、8个数据位、0或1个奇偶校验位和1或2个停止位组成。RTU模式在同样的波特率下,可以比ASCII方式传输更多的数据。

本采集系统采用传输效率较高的RTU模式进行通信,下面简要介绍Modbus RTU的消息帧格式。

1.2Modbus RTU消息帧

表1给出了一个Modbus RTU消息帧格式。

表1 RTU消息帧格式

可以看到,RTU消息帧包括地址域、功能域、数据域和CRC域四部分。

(1)地址域

地址域是消息帧第一个字节,范围为十进制的0~247,其中地址0用作广播地址,表示消息发送给所有从设备;1~247则可设置为某一从设备地址,所以最多支持247个从设备。主设备在对某一从设备发送消息时,需要将该从设备的地址放入地址域中,从设备返回消息时,把自身的设备地址也放入回应消息的地址域中,这样主设备就知道消息来源于哪个从设备。

(2)功能域

功能域在地址域之后,范围一般为十进制的1~127,具体包含了从设备需要执行哪些任务,采集哪些数据的信息。Modbus协议应用于电力系统时,需采集的数据类型主要有:可读写模拟量,如保护整定值等;只读模拟量,如电压、电流、频率等电力参数。

(3)数据域

数据域紧接着功能域。从设备执行由功能码所定义的任务,组织相应数据,具体信息包括起始寄存器地址、要处理项的数目、实际数据字节数等。

(4)CRC域

排在结尾的CRC域是两个字节,它由主设备计算,置于发送消息帧的末尾,从设备接收信息帧后,再次计算CRC,比较计算得到的CRC与接收到的是否相同,如果一致,则表明传输正确;否则,则表明传输出错。

2 基于Modbus RTU协议的电力数据采集系统

基于Modbus RTU协议的电力数据采集系统如图1所示,系统的主站采用PC机,从站为各数据采集终端,总线协议为Modbus通信协议,传输模式为Modbus RTU模式。通过Modbus总线实现了PC机与各数据采集终端的互联通信。

图1 基于Modbus RTU协议的电力数据采集系统

作为主设备的PC机可以采集并记录各项参数,可对各相电压或电流绘制实时曲线,并对配电线路中的各设备状态进行实时记录等。具体来说,基于Modbus RTU协议的电力数据采集系统可以采集的数据主要有:

●三相电流Ia、Ib和Ic,三相电压Ua、Ub和Uc和电网频率;

●电能、有功功率、无功功率和功率因数;

●线路上各采集终端的地址、历史记录数据等。

3 数据采集系统软件设计与开发

采集系统软件包括从站(数据采集终端)和主站(PC机)两部分组成。主站软件是基于PC的Windows平台,采用Visual C++语言设计。从站软件采用C语言设计。

3.1数据采集系统主站软件设计

利用高级语言Visual C++可方便地开发主站管理平台。

MSComm控件是Windows下串行通信编程的ActiveX控件,它提供了一种通过串行接口收发数据的简便方法[3]。该控件提供两种通信处理方式:事件驱动方式和查询方式。考虑到事件驱动方式具有程序响应及时和可靠性高等优点,本次设计MSComm控件采用事件驱动的工作方式。

采集系统中,作为主站的PC机是主设备,由它触发通信事件,从站的采集终端是从设备,它根据主站发出的命令采集相应的数据。本设计中主站PC机的通信程序的流程如图2所示。

图2 主站通信流程图

图3 中断子程序

主站进行控件属性初始化后,先查询链路状态,在确定链路状态正常后,等待按钮事件或定时事件的发生。当有按钮事件或定时事件触发时,从站进入通信接收中断子程序进行任务处理,否则,继续完成从站的其他功能。从站获取电压、电流等数据是通过主站设置定时自动通信功能,在一定的时间间隔内从从站采集而实现的。

3.2数据采集系统从站软件设计

当主站PC机发送消息到从站采集终端时将在从站采集终端触发接收中断,消息帧接收完成后便退出中断子程序,然后从站根据功能域的信息执行具体的采集任务,最后再把响应消息发送给主站。所以从站通信程序分为发送子程序、协议处理子程序和接收中断子程序。

(1)中断子程序设计

中断子程序的功能是接收数据。一个Modbus RTU消息帧包含多个字节,接收子程序一次只接收一个字节,当接收完一帧完整的数据时,才将相关变量都清零,并通知协议处理子程序处理消息帧。接收子程序流程如图3所示。

(2)协议处理子程序设计

协议处理子程序的功能是处理Modbus RTU消息帧。当接收到一帧完整的数据时,首先进行CRC校验,如果校验错误则丢弃该帧数据。在校验正确时,再判断地址是否与本从站相符,如果不符也要丢弃该帧数据。接着再根据功能码的定义调用相应的功能码处理函数,处理完成后组织应答帧,并发送调用发送子程序的信号,其程序流程如图4所示。

(3)发送子程序设计

在数据发送前,从站采集终端处于发送状态,数据写入发送缓存后,每次发送一个字节,当发送缓存为空时,表示发送完毕。而在数据发送完成后,还要使从站采集终端处于接收状态,等待主站的命令。其程序流程如图5所示。

4 结束语

Modbus通信协议由于其开放、简单、实用、兼容性好而被广泛应用。本文对ModBus协议进行了较深入的研究,在此基础上设计了基于Modbus RTU协议的电力数据采集系统,并对从站和主站的软件设计进行了较详细的讨论。该系统具有适用性强、简单、经济、易于维护等优点。

[1]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999.

[2]顾海勤,杨奕,全毅,马跃.基于MODBUS协议的智能仪表与PC机双向通讯设计[J].仪表技术与传感器,2013(12): 33-35.

[3]龚建伟,熊光明. 串口通信编程实践[M].北京:电子工业出版社,2004.

傅启国,男,控制理论与控制工程专业硕士研究生毕业,研究方向:电力自动化、嵌入式开发。

猜你喜欢
PC机通信协议子程序
基于Wireshark的列控中心以太网通信协议解析器的研究与实现
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
基于单片机与PC机的电气量采集系统设计
基于NS-3的PLC多频通信协议仿真平台设计与实现
浅谈子程序在数控车编程中的应用
VIVID3彩色超声仪结构原理及维修
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
基于风险分析的安全通信协议简化研究