基于RS485多机通信系统设计
2012-06-02常州大学信息中心马庆功
常州大学信息中心 马庆功
常州技师学院电子校区 莫玉华
常州刘国钧高等职业技术学校 郑恩兴
1.前言
在当今数字化的时代里,多机通信系统也已经广泛地渗透到科学研究、工程设计、军事技术、文化艺术以及人们的日常生活等各个领域。通过通信的手段实现了信息交换、资源共享已经成为一种必然和趋势。在多机通信的发展中基于RS485的多机通信[1]也多被广泛的运用于实际的运用当中。RS485串行接口标准及两级单片机主从式结构,实现了成本低、传输距离远、抗干扰能力强的通信。在仪表设计方面为了满足仪表数据的远程采集和处理,对多个仪表间的通信以及仪表与主机间的通信提出了要求。本设计是在常州和普电子公司实习期间参与其仪表接口的开发,主要设计仪表间RS485通信,同时使用的通信协议是工业上面比较通用的ModBus协议。通过本设计可以实现多种仪表间的相互的通信。
2.硬件设计
2.1 硬件电路图
本设计主要是分为主机和从机两模块[2]的设计(硬件电路图如图2-1)。主机系统是由电源、晶振电路、RS485串口电路及16O2显示电路、ISP下载接口、电容等组成;从机系统是由电源、晶振电路、RS485串口电路、拨码开关及16O2显示电路、ISP下载接口、电容、18b2O测温电路等组成。
2.2 RS485串行芯片选择
MAX485接口芯片是Maxim公司的一种485接口[3]芯片。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可。A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为O。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选1OOΩ的电阻。SP485E芯片是由业内专业的通信接口器件厂商Sipex公司设计生产的ESD保护增强型RS-485收发器,增强的ESD使SP485E可承受住±15kV人体放电模式(Human Body Model)和IEC1OOO-4-2接触放电模式(Contact Discharge)。SP485E芯片完全符合RS-485和RS-422协议的要求,数据传输速率也是可高1OMbps(在线路带负载的情况下)。通过上面的介绍发现SP485E芯片不仅具MAX485的性能同时还有保护的功能,在价格上面也是相当的所以SP485E适合本设计。
3.软件设计
3.1 modbus协议消息
在Modbus协议中主机设备可以和从机设备进行一对一的通信,也可以通过广播的方式和所有从机设备进行通信[4]。如果单独通信,从机设备返回一个消息作为相应回应,如果是以广播的方式进行查询,则将不作出任何回应。Modbus协议建立主机设备查询格式:设备地址、功能代码、所有要发送的数据、错误检测域。本设计是采用O3的指令码进行通信的模拟,主机发送O3指令从,机回应指令,进行一对一的通信。
从机设备回应的消息也Modbus协议的形式,单片机的从机接收到主机的数据之后进行判别返回数据。包括确定要运用的域、要返回的数据和错误检测域。倘若是在消息接收的过程中发生错误,或者从机设备不能执行相应的指令,从机设备将建立一个错误消息并把它作为回应发送给主机设备。在本设计中使用的是标准的RTU模式进行通信,采用的是O3号标准指令读取寄存器的值。
图2-1 硬件电路图
图3-1 主机流程图
图3-2 从机流程图
3.2 主从机软件流程图
单片机主机流程图如图3-1所示。主机首先发送O3指令代码给两个从机(OO1和OO2),发送完毕后,就使主机处于接收[5]的状态,接收来自从机的返回的数据,并显示返回对应从机的数据。从机的流程图如图3-2所示。从机一开始初始化以后处于接收的状态,当有数据到串行口时便接收,同时要判断所接收帧的数据是否超时,如果超时就复位。在接收到数据后要判断地址和指令是否是本机的地址和对应的O3号指令,如果是则接收数据帧,不是则放弃。在从机接收到发送给自己的数据帧后,返回的从机的地址,对应的指令和数据,同时把地址和数据显示在自己的显示器上面。
4.总结
在实验当中,一开始没有使用CRC校验时由于传输数据的距离比较短所以也没有错误,不过标准的Modbus协议的RTU模式必须使用CRC校验,所以本设计当中使用了CRC-16校验。再者对于实验当中如何实现从机的个数的问题,从机的设计通过采用拨码开关来设置从机的地址范围来解决,从机可以调节的地址范围是OO1到O15,所以从机的个数可以模拟到3O个,进而可以满足多从机的模拟实验。
通过以上的实验,本设计的一主机两从机之间的通信[6]可以满足基本的数据通信的要求,但是在工业的运用中还是有很大的差距。在本设计当中只是用到了O3指令,还可以使用诸如O2号指令读取一组开关输入的当前状态,使用17号指令来判断编址从机的类型及该从机运行指示灯的状态等等。通过使用更多的指令来使设计满足多种运用要求。同时主机和从机间的距离比较近需要在后面的设计中使之能够适应更远的距离。
[1]Faisal K.Fadul and Ronald P.Krahe.A DSP-based power integrated circuit controller/driver board for stepper motors[J].Mechatronics.1994(4):393-399.
[2]李朝青,刘艳玲,沈怡麟.单片机与PC机网络通信技术[M].北京:北京航空航天大学出版社,2007.2.
[3]James W.STEWART.The 8051 microcontroller:Hardware,software and interfacing[M].Prentice Hall,Englewood Cliffs,NJ,USA.1993.
[4]于永学,葛建.1-Wire总线数字温度传感器DSl8820及应用[J].电子产品世界,2003(12B):80-82.
[5]李达.基于Modbus协议的RS485无线布线系统的设计与实现[D].吉林:吉林大学,2009.04.
[6]毛德平,凌有铸.一种基于RS485总线的温度、湿度测控系统[D].安徽:安徽工程科技学院,2007.02.