您的当前位置:首页正文

基于P89C669微控制器的MODBUS协议转换器设计与实现

来源:个人技术集锦
第19卷第2期2006年4月

常州工学院学报

JournalofChangzhouInstituteofTechnology

Vol.19 No.2

Apr.2006

基于P89C669微控制器的MODBUS

协议转换器设计与实现

肖闽进

(常州工学院电子信息与电气工程学院,江苏常州213002)

摘要:基于P89C669微控制器和计算机数据通信技术,设计了MODBUS协议转换器,实现了MODBUS网络的主控设备与远程终端单元(RTU)之间的数据转换,并在电力系统220kV主变风冷控制中用于变电所站内自动化监控计算机系统的MODBUS网络和可编程控制器(PLC)的数据通信。

关键词:P89C669微控制器;MODBUS协议;数据通信;CRC校验中图分类号:TN915.04  文献标识码:A文章编号:1671-0436(2006)02-0012-04   随着工业网络技术的发展和现场监控要求的程序存储器,可用于并行编程或串行在系统编程提高,许多应用场合要求可编程控制器(PLC)能和在应用中编程。利用这个特点,本协议转换器够接入工业控制网络,以实现网络上的主控设备可进行在系统编程(ISP),并且在接入调制解调器对可编程控制器的实时监控。MODBUS是一种通用的工业控制数据通信协议,本文基于P89C669微控制器和计算机数据通信技术,设计了MODBUS协议转换器,实现了MODBUS网络的主控设备与远程终端单元(RTU)之间的数据转换,并在电力系统220kV主变风冷控制中用于变电所站内自动化监控计算机系统的MODBUS网络和可编程控制器的数据通信。

的条件下,可实现远程编程。P89C669所具有的2个全双工增强型UART实现了协议转换器分别对MODBUS网络和对可编程控制器(PLC)的高速率双向通信接口。P89C669微控制器的ISP电路如图1所示。

2 硬件组成原理

MODBUS协议转换器硬件组成如图2,图中,

1 P89C669微控制器片内资源与

在系统编程(ISP)

  P89C669(PhilipsSemiconductData)是基于PHILIPS半导体新51MX内核的首类Flash微控制器的代表性器件。具有96k字节的Flash程序存储器,2k字节的数据SRAM,1个可编程计数器阵列(PCA),可通过SFR的位设置配置成不同时间范围的看门狗定时器,2个增强型UART及字节型I2C总线串行接口。

P89C669微控制器包括一个非易失性Flash

收稿日期:2005209226

主控单元为P89C669微控制器,进行通信控制、

数据接收、数据存储、数据结构转换、CRC校验以及数据的转发。P89C669微控制器对于底层的通信接口进行时序的控制、通信速率的产生和调整;对于高层的MODBUS协议进行数据通信的校验、数据格式的转换、实时数据的存储和转发。数据缓存单元在P89C669微控制器的读写命令控制下,实现通信数据的缓冲存储。通信控制电路监测网络上的信号数据流,并向P89C669微控制器发出监测结果信号,由微控制器调整合适的通信和转换速率。协议转换器设计有2个通信接口,

© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

第2期肖闽进:基于P89C669微控制器的MODBUS协议转换器设计与实现

为远程终端单元的网络数据通信。

13

3 通信协议与CRC校验

MODBUS协议是通用的工业控制通信协议。

通过MODBUS协议,控制设备相互之间、控制设备经由网络和其它设备之间可以进行数据通信。目前MODBUS已经成为一通用工业标准。通过MODBUS协议,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

MODBUS协议定义了一个控制设备能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了主控设备访问远程终端单元(RTU)以及控制设备或远程终端单元的应答过程,规定了差错检测以及消息域格局和内容的公共格式。当在MODBUS网络上通信时,协议规定了每个控制设备或远程终端单元需要知道它们的设备地址,识别按地址发来的消息,确定要产生的动作。如果需要应答,控制设备将生成反馈信息并用MODBUS协议发出。在其它网络上,包含了MODBUS协议的消息转换为在此网络上使用的帧或包结构。

MODBUS协议规定主控设备与远程终端单元之间的通信是通过访问/应答过程实现的。

(1)访问消息中的功能码通知被选中的控制设备或远程终端单元要执行的功能。数据段包含了远程终端单元要执行功能的任何附加信息。例如,功能码07H是从控制设备中读遥信数据。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为控制

图2 MODBUS协议转换器硬件组成框图可分别连接MODBUS网络和可编程控制器(PLC)通信接口,其中MODBUS通信接口采用RS-485电气规范,可接入任何底层符合RS-485

图1 P89C669微控制器的ISP电路图电气规范的工业控制网络;PLC通信接口根据不同可编程控制器生产厂商的不同型号进行配置,可接入RS-232、RS-422、RS-485(MaximandDallasSemiconductorDataBook)通信接口或局域网络。硬件电路的设计具有信号驱动、阻抗匹配和抗干扰能力强的特性,可直接用于设备和网络,在MODBUS网络上实现以可编程控制器(PLC)

设备或远程终端单元提供了一种验证消息内容是否正确的方法。

(2)应答如果控制设备产生一正常的应答,在应答消息中的功能代码是在访问消息中的功能代码的应答。数据段包括了控制设备收集的数据,如寄存器值或状态。错误检测域使主控设备确认消息内容是否可用。

错误检测域即CRC域是两个字节,包含16位的二进制值。由发送微控制器计算后加入到消息中。接收微控制器重新计算收到消息的CRC,并与接收到的CRC域中的值比较,若结果不同则有错误。

© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

14常州工学院学报

CRC首先调入值是全“1”的16位寄存器,然

2006年

后调用过程将消息在当前寄存器中对连续的8位字节值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移

动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。

CRC简单函数如下(限于篇幅,高低字节表不再列出):

unsignedshortCRC(puchMsg,usDataLen)unsignedchar3puchMsg;/3要进行CRC图3 CRC校验程序流程图4 工程应用实例本文设计的MODBUS协议转换器已经应用于常州电力公司的220kV主变风冷控制系统中,

应用系统框图如图4所示。

校验的消息3/

unsignedshortusDataLen;/3消息中字节数3/

{

unsignedcharuchCRCHi=0xFF;/3高CRC字节初始化3/

unsignedcharuchCRCLo=0xFF;/3低CRC字节初始化3/

unsigneduIndex;/3CRC循环中的索引

3/

while(usDataLen--)/3传输消息缓冲区

3/

{

uIndex=uchCRCHi^3puchMsgg++;/3

计算CRC3/

uchCRCHi=uchCRCLo^auchCRCHi[uIn2dex];

uchCRCLo=auchCRCLo[uIndex];

}

return(uchCRCHi<<8|uchCRCLo);}

CRC校验程序流程如图3所示。

图4 MODBUS协议转换器应用系统框图图中,MODBUS协议转换器通过RS-485总线与变电所站内自动化监控计算机系统的MOD2BUS网络接口连接,与作为远程终端单元(RTU)的三菱FX2N可编程控制器的连接,为防止现场强电磁场对数据通信的干扰,采用了单模光纤。站内自动化监控计算机系统发出的运行指令和采集的主变压器油温、负荷电流等运行参数通过MODBUS网络传输给MODBUS协议转换器,接收

© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

第2期肖闽进:基于P89C669微控制器的MODBUS协议转换器设计与实现15

到指令或数据,MODBUS协议转换器即与可编程控制器建立通信,将经过协议转换的指令或数据发送给可编程控制器,实现根据油温、负荷电流对风冷机组和油泵的调控,同时协议转换器还将风冷和油泵机组的工作状态信息实时地回传给站内自动化监控计算机系统。

MODBUS协议的实际应用要根据系统的功能和需求,合理设计访问/应答帧结构,既满足当前数

表1 遥测命令

子站地址08功能码01H

数据起始地址(高位)=0数据起始地址(低位)=0数据个数00H

数据个数04H(按字节计)主变温度值低字节主变温度值高字节主变负载电流低字节主变负载电流高字节

CRC校验码低8位CRC_LCRC校验码高8位CRC_H据通信的需要,又要具有一定的灵活性,还要适当

预留发展空间。表1、表2是本协议转换器使用的一对访问/应答帧结构。根据前面的讨论,表1、表2所示访问/应答帧结构符合MODBUS协议规范,并且主变油温、负荷电流的数据位能够满足实际需要。变电所站内自动化监控计算机系统发送的遥测命令帧(访问)和MODBUS协议转换器的遥测量上传帧(应答)分别示于表1和表2。

表2 遥测量上传

子站地址08功能码02H数据字节个数04H主变温度值低字节

   

主变温度值高字节主变负载电流低字节主变负载电流高字节

CRC校验码低8位CRC_LCRC校验码高8位CRC_H

5 结束语

本文设计的MODBUS协议转换器实现了基

于MODBUS网络的主控设备与远程终端单元(RTU)之间的数据通信,可广泛应用于工业实时监控系统中。在常州电力公司电网上已连续安全运行半年以上,实践表明,本协议转换器抗干扰能力强,通信误码率低,数据转换可靠,可以满足电

力系统强电磁场环境和高可靠性以及长期连续运行工作稳定的要求。

[参考文献]

[1]张友德.飞利浦80C51系列单片机原理与应用技术手册

[M].北京:航空航天大学出版社,2000.

[2]吴伟陵.信息处理与编码[M].北京:人民邮电出版社,2003.

OntheDesignofMODBUSProtocolConverterBasedonP89C669MCU

XIAOMin2jin

(SchoolofElectronicInformation&ElectricEngineering,ChangzhouInstituteofTechnology,Changzhou213002)

Abstract:ThispaperpresentsadesignandrealizationofMODBUSprotocolconverterbasedonP89C669MCU.TherealtimedatacommunicationbetweensupervisioncomputersystemandPLCin220kVpowertransformercoolingcontrolsystemhasbeenrealized.

Keywords:P89C669MCU;MODBUSprotocol;datacommunication;CRCverify

责任编辑:庄亚华

© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

因篇幅问题不能全部显示,请点此查看更多更全内容