————————————作者简介作者简介::冯子陵(1987-),男,硕士研究生、CCF 会员,主研方向:嵌入式系统设计,物联网;俞建新,副教授 收稿日期收稿日期::2011-11-24 修回日期修回日期::2012-02-16 E-mail :fzl_7@RS485总线通信协议的设计与实现冯子陵冯子陵,,俞建俞建新新(南京大学计算机科学与技术系,南京 210046)摘 要:针对目前接口标准的RS485总线通信协议不统一问题,设计一个高效稳定的通信协议。
介绍RS485总线网络的组网方式,给出RS485总线通信协议的设计方法。
借鉴CSMA/CD 协议,提出一种简单高效的冲突处理方法。
在ARM7、ARM9、DE2-70 3种嵌入式开发平台,以及µC/OS 、Linux 、VxWorks 3种操作系统上进行实验和测试,结果表明,该通信协议在通用性、稳定性、实时性和可扩展性等方面均符合接口标准技术要求。
关键词关键词::RS485总线;通信协议;嵌入式系统;冲突处理;帧结构Design and Implementation of RS485 Bus Communication ProtocolFENG Zi-ling, YU Jian-xin(Department of Computer Science and Technology, Nanjing University, Nanjing 210046, China)【Abstract 】Because there is not normal communication protocol for RS485 bus network, a fast and steady communication protocol is designed. This paper introduces the method of creating the RS485 bus network and a detailed design of communication protocol for RS485 bus network. A simple and efficient conflict processing method is proposed with special reference to CSMA/CD protocol. The communication protocol is implemented and tested on ARM7, ARM9 and DE2-70 embedded development platforms with uC/OS, Linux or VxWorks operating systems. Experimental results show that this communication protocol meets the technical requirements in terms of versatility, stability, real-time and scalability aspects.【Key words 】RS485 bus; communication protocol; embedded system; conflict processing; frame structure DOI: 10.3969/j.issn.1000-3428.2012.20.056计 算 机 工 程 Computer Engineering 第38卷 第20期V ol.38 No.20 2012年10月October 2012·工程应用技术与实现工程应用技术与实现·· 文章编号文章编号::1000—3428(2012)20—0215—04 文献标识码文献标识码::A中图分类号中图分类号::TP2731 概述RS485是由RS232发展而来的接口标准,能用于组 建点到多点或者多点到多点的网络,解决了RS232接口标准的联网问题。
RS485总线网络凭借组建成本低、可靠性高、分布范围较大等特点,在智能家居、远程监控、远程控制、远程抄表等领域得到广泛应用。
RS485网络的通信方式分主从式和总线式2种。
如今在工业控制中一般采用主从式的通信方式,而总线通信方式有更好的扩展性、通用性,在总线通信协议上也容易搭建主从式RS485通信网络。
RS485总线网络组网方式很简单,组建成本低廉,但至今没有统一的总线通信协议。
目前国内在开发基于RS485总线网络的应用系统时,往往临时设计RS485总线通信协议,导致系统在可移植性和高效稳定性方面存在一定的问题。
综上所述,很有必要设计一个高效稳定的RS485总线通信协议作为统一的协议标准。
本文在研究RS485接口标准的基础上,设计一个高 效稳定的通信协议,并对测试结果进行比较和分析。
2 RS485介绍一般的PC 和嵌入式开发板串口都是RS232接口标准。
该接口标准有如下特点:RS232采用负逻辑,即用 “−5 V~−15 V ”电压表示逻辑“1”,“+5 V~+15 V ”电压表示逻辑“0”;RS232驱动器最大允许2 500 pf 的电容负载,因此RS232的最大通信距离仅为15 m 左右;RS232采用共地的单端信号传输方式,所以抗噪声干扰性弱;传输速率较低,在异步传输时波特率为20 Kb/s 。
RS485是由美国电子工业协会在RS422的基础上制订并发布的串口标准。
RS485接口标准解决了联网问题,并且各方面性能比RS232接口有较大的提高。
因此, RS485接口替代RS232接口广泛用于中小型集散系统中。
RS485接口标准的具体参数如表1所示。
表1 RS485接口标准的具体参数性能指标 RS485总线 工作模式差分传输(平衡传输)允许的收发器数目 32最大电缆长度 4 000英尺(1 219 m)最大数据速率 10 Mb/s 最小驱动输出电压范围 ±1.5 V 最大驱动输出电压范围 ±5 V 驱动器输出阻抗 54 Ω 接收器输入灵敏度 ±200 mV接收器输入电压范围−7V ~+12V216 计 算 机 工 程 2012年10月20日3 RS485总线组网方式RS485总线网络组建方法很简单,采用两线或者四线方式。
所有RS485节点全部挂在一对RS485总线上,这里的GND 地线和电源线可以不接。
接线时需注意RS485总线不能开叉。
从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。
RS485总线网络的终端有PC 和嵌入式设备。
这些终端一般是常用的RS232串行通信接口,所以需要通过RS232/ RS485转换器接入网络。
在通信协议测试中,本文选用的是UTEK 公司生产的型号为UT-2201的转换器。
接线方 式如图1所示。
第38卷 第20期 217冯子陵,俞建新:RS485总线通信协议的设计与实现 串口通信采用异步传送方式,按字节接收数据。
当串口收到第1个字节数据时,首先进行判定,然后进行相应的赋值操作。
若接收到的第1个字节数据为0xB1,则总线忙状态字赋值为1;若为0xB0,则总线忙状态字赋值为0;若为0xAA ,则确认帧状态字赋值为1;若为0x7E ,则调用数据帧接收函数。
数据帧接收流程如图2(b)所示。
(a)帧发送流程 (b)帧接收流程图2 数据通信流程4.4 冲突处理方法冲突处理函数的处理流程如图3所示。
图3 冲突处理流程针对RS485总线网络上节点较少的情况,通过总线侦听方式可以使总线冲突的几率非常小。
但当总线处于空闲状态时,若2个或2个以上的节点同一时刻申请总线,仍会造成总线冲突。
针对这种情况,本文采用一种类似于以太网的载波监听多路访问/冲突检测协议(CSMA/CD)[6]的方法,在保证数据传输正确性的前提下尽量提高数据传输的速度。
数据接收端对接收到的数据进行校验,如果出错则认为发生了总线冲突,接收端不会发送确认帧。
若在规定时间内未收到确认帧,发送端就调用冲突处理函数。
以太网采用的是二进制指数退避算法。
这种算法并不复杂,而且确保了退避过程的稳定性,所以也使用在作者设计的RS485总线通信协议中。
二进制指数退避算法又 分为3种类型,即非坚持型、1-坚持型、P-坚持型。
非坚持型的缺点是:即使有多个节点要发送数据,介质仍可能处于空闲状态,造成介质利用率低。
1-坚持型提高了介质利用率,但存在不可避免的冲突。
P-坚持型退避算法是一种折中方案[7],而改进的动态P-坚持退避算法[8]通过动态调整发送概率来提高性能。
为了提高介质利用率,加强总线网络的实时性,RS485总线通信协议采用了1-坚持型退避算法。
5 通信协议的实现与测试为了测试本文RS485总线通信协议的通用性,利用实验室现有的开发平台,分别在S3C44B0X 开发平台、S3C2410开发平台、DE2-70开发平台上,以及µC/OS 、Linux 、VxWorks 3种操作系统上进行了验证,并对该协议实时性、稳定性等方面进行了测试。
首先从3种开发平台中各准备2台开发板,测试不同实验环境下RS485总线网络的数据传输速度。
为了减少通信线路带来的影响,信号线采用RS485专用电缆(STP- 120 Ω)。
在实验过程中,其中一台开发板向另外一台开发板发送1 KB 的数据,将从发送第一帧数据到收到最后一帧的确认帧之间的时间作为数据传输时间,统计多次实验数据然后计算平均值。
本文用系统传输1 KB 数据所用时间的平均值来衡量RS485总线通信协议的实时性。
由于存在实验器材老化、串口驱动不相同等问题,实验数据仅供参考。
实验结果如图4所示,其中,实验环境①~环境⑤分别指ARM7+µC/OS 、DE2-70+µC/OS 、ARM9+µC/OS 、ARM9+Linux 、ARM9+VxWorks 。
图4 不同硬件平台和操作系统下不同硬件平台和操作系统下的的实时性测试结果通过图4可知,通信协议可以满足大多数应用系统对实时性方面的基本技术要求。
同时,测试结果可以作为搭218 计算机工程2012年10月20日建系统时对选择软硬件平台方面的参考。
ARM9实验平台凭借其处理器性能优势,使整个系统的传输速率更快。
由于µC/OS系统小,硬件开销小,因此相同硬件平台下使用µC/OS操作系统时传输速率更占优势,但Linux、VxWorks 操作系统的稳定性更高。
VxWorks操作系统综合性能最好,但由于并非开源操作系统,因此有成本高的缺点。
为了测试通信协议的稳定性,在协议应用层实现了简单的跳水评分系统。