电讯技术
主办单位:中华人民共和国工业和信息化产业部
国际刊号:1001-893X
国内刊号:51-1267/TN
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:37266 人次
 
    本刊论文
智能开关柜操控装置Modbus-RTU通讯协议的设计_上位机

  论文摘要:智能开关柜操控装置具有RS485现场总线,适合于采用Modbus-RTU协议来实现与上位机的串行通信。本文根据Modbus协议的定义以及智能开关柜操控装置采集信息的种类和特点,完整地设计了智能开关柜操控装置与上位机通讯的Modbus-RTU通信协议,并采用VC++程序设计语言实现了该通讯协议。

  论文关键词:智能开关柜,协议,上位机,控件

  引言

  我国智能发电和智能输电网的建设与发达国家基本同步,但是智能配电网的建设则相对滞后。随着国家低碳经济、节能减排和新能源战略的实施,智能配电网的建设必然受到越来越多的重视。现代计算机技术和通信技术的飞速发展,促进了智能配电系统的发展和完善,而开关柜的智能化就是智能配电网的重要基础。

  智能开关柜是在以模拟仪表、继电器为监测、控制设备的普通开关柜基础上,与新型的智能仪表(网络电力仪表、智能配电监控/保护模块、网络I/0等)进行配合,通过其网络通讯接口与中央控制室的计算机系统联网,从而可以实现对各供配电回路的电压、电流、有功功率、无功功率、功率因数、频率、电度量等电参数以及断路器的分合闸状态、故障信息、开关柜的温湿度信息进行监测,对断路器的分合闸状态和开关柜的温湿度进行控制,并可以配合远程监控软件实现“四遥”。

  本课题采用高性能AVR单片机设计的开关柜智能操控装置提供RS485通讯接口,可进行串口通信。本文根据Modbus通讯协议的定义以及智能开关柜操控装置采集信息的种类和特点,完整地设计了该类智能开关柜操控装置与上位机通讯的Modbus-RTU通信协议,并采用VC++程序设计语言实现了该通讯协议。

  1智能开关柜Modbus-RTU通讯协议设计

  1.1Modbus-RTU通讯协议简介

  Modbus通讯协议是由Modicon公司开发且已是工业领域全球最流行的通讯协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。

  Modbus协议规定了消息、数据的结构、命令和应答的方式。数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求。Master端也可以直接发消息修改Slave端的数据,实现双向读写。

  Modbus协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(开关柜),然后,终端设备发出的应答信号以相反的方向传输给主机。Modbus协议只允许在主机和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

  Modbus通讯规约包括RTU协议和ASCII协议。RTU(RemoteTerminalUnit)通讯方式采用8位二进制数据传输命令或数据,数据校验采用CRC循环冗余校验,通讯速度较快;ASCII通讯方式采用7位二进制表示的ASCII码进行通讯,数据校验采用奇偶校验或LRC逻辑冗余校验,通讯速度较慢。在一个通讯系统中,只能选用一种通讯方式。

  在RTU模式下,帧中的每个字节直接用于传输,这样在同样的波特率下,可比ASCII模式传输更多的数据。与绝大多数电力自动化仪表一致,本仪表采用Modbus-RTU通讯模式。

  1.2字节格式

  智能开关柜操控装置Modbus-RTU通讯协议中的数据结构以及数据传输遵循以下规则:

  编码形式:二进制;

  字节位:每个传输序列包含11位串行数据,其中1位起始位、8位数据位D0~D7、2位停止位;

  发送方式:数据位传输时,先传低位,后传高位,如图1所示。

  图1字节传输序列(RTU模式)

  Fig.1Bytetransmissionsequence(RTUmode)

  1.3数据帧格式

  帧是传送信息的基本单元,Modbus协议中主机与从机采用相同的帧格式。

  RTU帧以至少4个字节的停顿时间开始,同样以至少4个字节的停顿时间标志帧的结束。整个帧必须作为连续的流传送,RTU数据帧格式如表1所示。

  表1Modbus-RTU协议的帧格式

  Tab.1FrameformatofModbus-RTUprotocol

  帧开始 地址码 功能码 数据区 校验码 帧结束

  4字节

  停顿时间

  1字节 1字节 N字节 2字节

  4字节

  停顿时间

  1.3.1地址码

  地址码用来选定哪个从机与主机通讯,占1个字节。每个从机具有唯一的地址码,即仪表地址。主机发送的地址码表明主机与之通讯的从机地址,从机发送的地址码则表明回送的从机地址。

  本设计限制可使用的地址为1~247,其它地址保留。智能开关柜操控装置(从机)可以利用按键修改仪表地址,也可以通过主机修改特定从机的仪表地址。

  1.3.2功能码

  功能码表示主机本次通讯要求从机执行的动作,功能码占1个字节,表2列出了仪表支持的Modbus协议规定的标准功能码及其定义和具体操作。

  表2功能码及其定义

  Tab.2Functioncodeanditsdefinition

  功能码

  定义

  操作

  03H/04H

  读寄存器

  读取一组寄存器的数据

  10H

  写寄存器

  修改一组寄存器的数据

  一般Modbus协议规定读取内部数字量保持寄存器和外部输入数字量寄存器采用不同的功能码,分别为01H和02H,读取内部模拟量保持寄存器和外部模拟量寄存器亦采用不同的功能码,分别为03H和04H[4]。对于相关系统和设备的调研表明,传统协议区分内部量和外部量的做法完全不适合于智能配电系统。因此本仪表采用兼容设计方案,不区分内部模拟量和外部模拟量,功能码03H和04H通用。同时,为了提高数据传输效率,本协议把每16位二进制开关输入量组织成为一个字寄存器,并使之与模拟量或系统参数的读取采用相同的功能码。

  即功能码03H或04H为读寄存器,此功能允许主机获得仪表采集的模拟量数据、开关量数据以及系统参数。读寄存器个数不能超出允许地址范围。Modbus通讯规约允许主机一次请求的最大寄存器个数为60个。

  功能码10H为写寄存器,主机利用此功能将数据(或系统参数)保存到仪表的寄存器。要求写入的寄存器必须可写,个数不能超出允许地址范围。Modbus通讯规约允许一次最多保存60个寄存器。同样,开关量输出、模拟量输出和系统参数的保存均采用相同的功能码,但每个开关量寄存器只控制一个开关设备以提高遥控可靠性。

  1.3.3数据区

  数据区随功能码不同而不同。

  功能码03H/04H(读寄存器)的主机命令数据区包含要读取寄存器的起始地址(2个字节)及读取长度(2个字节),从机应答数据区包含数据字节量(1个字节)以及数据列表。

  功能码10H(写寄存器)的主机命令数据区包含要写入寄存器的起始地址(2个字节)、写入长度(2个字节)以及写入数据列表,从机应答数据区包含写入寄存器的起始地址以及写入长度。

  1.3.4校验码

  校验码用于主机或从机判断接收到的数据是否出错,使系统通讯更可靠。Modbus-RTU协议采用CRC-16(16位循环冗余校验码)校验方法,包含16位二进制。CRC校验码由发送端计算,放置于发送信息的尾部。接收端重新计算接收到的信息的校验码,并与接收到的校验码相比较,如果二者不相符,则表明通讯出错。

  CRC-16校验码的计算方法:

  (1)预置16位寄存器全为1,即寄存器CRC=0FFFFH;

  (2)把8位数据信息与CRC码的低8位数据进行异或,送回CRC寄存器;

  (3)计算结果向右移一位,用0填补最高位;

  (4)如果移出位为1,把CRC寄存器的内容与预置数(0A001H)相异或,如果移出位为0,不进行异或运算;

  (5)重复第三步和第四步直到移位8次,处理完成一个字节;

  (6)重复第二步至第五步直到所有字节处理结束。

  2寄存器地址分配及出错处理

  2.1寄存器地址分配

  功能码采取简化兼容设计方案以后,寄存器的地址分配非常重要。根据开关柜运行和操作实际,把寄存器地址分为以下四类,其中每个寄存器存储16位二进制数。

  地址0000H~00FFH为系统参数区,寄存器可读可写。内容主要包括仪表参数设置密码、加热控制上限、加热控制下限、湿度控制上限、湿度控制下限、排风控制上限、排风控制下限、仪表Modbus通讯地址和RS485通讯波特率选择等。

  如果主机把数据(1~247)写入从机仪表通讯地址寄存器,从机正确执行该指令以后将以新的从机地址进行应答;如果主机把数据(0~4)写入从机波特率选择寄存器(0代表1200波特、1代表2400波特、2代表4800波特、3代表9600波特、4代表19200波特),从机正确执行该指令以后将以新的波特率进行应答。

  地址0100H~01FFH为运行参数区,寄存器只可读取,不能写入。内容主要包括三相电压有效值及平均值、三相电流有效值及平均值、三相有功功率及总和、三相无功功率及总和、三相视在功率及总和、三相功率因数及总功率因数(定义为总有功功率与总视在功率之比)、频率、电能数据等电气参数,1#和2#温湿度传感器的温度和湿度测量值等非电气参数,以及开关量状态指示、高压带电指示、面板按键指示和加热状态指示等开关量参数。

  地址0200H~02FFH为控制信息区,寄存器只可写入。内容包括断路器远方操控、远方强制排风降温、远方强制加热/排风除湿等控制功能。

  地址0500H~05FFH为厂家保留区,用于标识仪表类别、型号以及仪表测试。

  2.2出错处理

  当仪表检测到了校验码出错以外的错误时,将向主机回送信息,功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128。从机返回的错误信息帧格式如表3所示。

  表3从机返回的错误信息帧

  Tab.3Errorinformationframeformslave

  地址码

  功能码

  (最高位为1)

  错误码

  校验码

  1字节

  1字节

  1字节

  2字节

  其中错误码定义如下:

  01H—非法的功能码,表示接收到的功能码仪表不支持;

  02H—非法的寄存器地址,表示接收到的寄存器地址超出仪表的范围;

  03H—非法的数据值,表示接收到的数据值超出仪表允许的数值范围。

  3通讯协议的上位机程序设计

  VC++6.0程序设计语言有专门基于串口程序设计的MScomm控件。使用MScomm的查询法实现串口通信,具体设计步骤如下:

  (1)初始化串口:用Settings设置串口参数,包括串口选择,波特率、数据位、奇偶校验位和停止位;

  (2)读取运行参数:用SetCommPort打开串口,产生OnComm事件,定时器SetTimer每隔1秒产生OnTimer事件,发出一系列读取命令读取全部运行参数。

  发送每条命令时上位机计算CRC校验码一并发送,从机响应命令后发出应答数据。MScomm控件根据GetCommEvent获得CommEvent判断属性。如果CommEvent=2,则接收下位机发送的应答数据和校验码并重新计算接收数据的校验码,若校验码正确则存储并显示相应的数据;

  (3)修改系统参数/远方操控:根据应用程序界面的菜单命令或按钮命令向下位机发出数据读取或写入指令,读取或修改系统参数,或者向下位机发送远方操控指令。同样,MScomm控件根据GetCommEvent获得CommEvent判断属性,如果CommEvent=1,则向下位机发送系统参数修改命令或开关柜远方操控指令。

  4结束语

  智能开关柜是智能配电网的基本操作单元,采用现场总线可以组成灵活的配电网信息采集与监控系统。

  基于Modbus-RTU通信规约设计的智能开关柜操控装置Modbus-RTU通讯协议简化了传统协议的功能码,既符合开关柜采集信息的种类和特点,又提高了上位机监控软件的兼容性。

  据此协议设计的上位机软件能够在主控计算机和智能开关柜操控装置之间有效地进行数据传输和操控命令下发。采用CRC16位冗余校验可以保证数据传输的可靠性和操控命令下达的准确性。

  参考文献

  1 余贻鑫。 新形势下的智能配电网[J]. 电网与清洁能源,2009,25(7):1-3.

  2 王成山,李鹏。 分布式发电、微网与智能配电网的发展与挑战[J]. 电力系统自动化,2010, 34(2):10-14,23.

  3 倪维祯。 数据通信原理[M]. 北京:中国人民大学出版社,2000.3.

  4 张海源,任春梅,张冉。 Modbus协议在电力系统中的应用[J]. 继电器,2007,35(17):31-34,57.

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

特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《电讯技术》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《电讯技术》编辑部  (权威发表网)   苏ICP备20026650号-8