当前位置: 首页 > 技术资料 > 基于P89C669微控制器的MODBUS协议转换器设计

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

QooIC.com 新闻出处:电子市场 | 发布时间:2010/11/22 16:00:18

  0 引言


  工业网络技术的发展和现场监控要求的提高,使得许多应用场合要求可编程逻辑控制器(PLC)能够接入工业控制网络,以实现网络上的主控设备对PLC的实时监控。MODBUS是一种通用的工业控制数据通信协议,本文基于P89C669微控制器和计算机数据通信技术,设计了MODBUS协议转换器,实现了MODBUS网络的主控设备与远程终端单元(RTU)之间的数据转换,并在电力系统220kV主变风冷控制中用于变电所站内自动化监控计算机系统的MODBUS网络和可编程控制器的数据通信。


  1 P89C669微控制器片内资源与在系统编程


  P89C669是基于PHILIPS半导体新51M X内核的首类Flash微控制器的代表性器件。具有% kB的Flash程序存储器,2k B的数据SRAM,1个PCA(可编程计数器阵列),可通过SFR(专用功能寄存器)的位设置配置成不同时间范围的看门狗定时器,2个增强型UART通用异步收发器)及字节型12C总线串行接2口0P89C669 微控制器包括一个Flash程序存储器,可用于并行编程或串行ISP(在系统编程)和在应用中编程。利用这个特点,本协议转换器可进行ISP,并且在接人调制解调器的条件下,可实现远程编程。P89C669所具有的2个全双工增强型UART实现了协议转换器分别对MODBUS网络和对PLC的高速率双向通信接口。P89C669微控制器的ISP电路见图1。


  2 硬件组成原理


  MODBUS协议转换器硬件组成如图2所示。


  主控单元为P89C669微控制器,进行通信控制、数据接收、数据存储、数据结构转换、CRC循环冗余校验)以及数据的转发。P89C669对底层的通信接口进行时序的控制、通信速率的产生和调整;对高层的MODBUS协议进行数据通信的校验、数据格式的转换、实时数据的存储和转发。数据缓存单元在P89C669的读写命令控制下,实现通信数据的缓冲存储。通信控制电路监测网络上的信号数据流,并向P89C669发出监测结果信号,由微控制器调整合适的通信和转换速率。协议转换器设计有2个通信接口,可分别连接MODBUS网络和PLC通信接口,其中MODBUS通信接口采用RS-485电气规范,可接人任何底层符合RS-485电气规范的工业控制网络;PLC通信接口根据不同的PLC生产厂商的不同型号进行配置,可接人RS-232,RS -422,RS-48 5通信接口或局域网络。硬件电路的设计具有信号驱动、阻抗匹配和抗干扰能力强的特性,可直接用于设备和网络,在MODBUS网络上实现以PLC为RTU的网络数据通信。


  3 通信协议与CRC校验


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


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


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


  a)访问:消息中的功能码通知被选中的控制设备或RTU要执行的功能。数据段包含RTU要执行功能的任何附加信息,例如功能码07H是从控制设备中读遥信数据。数据段必须包含要告诉从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为控制设备或RTU提供了一种验证消息内容是否正确的方法。


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


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


  CRC首先调人值是全"1”的16位寄存器,然后调用过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8位数据对CRC有效,起始位和停止位以及奇偶校验位均无效。


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


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


  4 工程应用实例


  本文设计的MODBUS协议转换器已经应用于常州电力公司的220 kV主变风冷控制系统中,应用系统框图如图4所示。


  图中MODBUS协议转换器通过RS-485总线与变电所站内自动化监控计算机系统的MODBUS网络接口连接,与作为RTU的三菱FX2N PLC连接,为防止现场强电磁场对数据通信的干扰,采用了单模光纤。站内自动化监控计算机系统发出的运行指令和采集的主变压器油温、负荷电流等运行参数通过MODBUS网络传输给MODBUS协议转换器,接收到指令或数据,MODBUS协议转换器即与PLC建立通信,将经过协议转换的指令或数据发送给PLC,实现根据油温、负荷电流对风冷机组和油泵的调控,同时,协议转换器还将风冷和油泵机组的工作状态信息实时地回传给站内自动化监控计算机系统。


  MODBUS协议的实际应用要根据系统的功能和需求,合理设计访问/应答帧结构,既满足当前数据通信的需要,又要具有一定的灵活性,还要适当预留发展空间。图5、图6是本协议转换器使用的一对访问/应答帧结构。


  根据上述的讨论,图5、图6所示访问/应答帧结构符合MODBUS协议规范,并且主变油温、负荷电流的数据位能够满足实际需要。变电所站内自动化监控计算机系统发送的遥测命令帧(访问)和MODBUS协议转换器的遥测量上传帧(应答)分别示于图5、图6。


  5 结束语


  本文设计的MODBUS协议转换器实现了基于MODBUS网络的主控设备与RTU之间的数据通信,可广泛应用于工业实时监控系统中。在常州电力公司电网上连续安全运行半年以上的实践表明,本协议转换器抗干扰能力强,通信误码率低,数据转换可靠,可以满足电力系统强电磁场环境和高可靠性以及长期连续运行工作稳定的要求。