tag 标签: 总线应用

相关博文
  • 热度 18
    2012-3-4 11:12
    2052 次阅读|
    0 个评论
        RS485总线在我司产品运用的比较多,下位机联网主要依靠RS485方式进行,上位机与下位机通讯也使用该方式通讯,很多产品内部各个模块间通过RS485进行通讯。根据实际使用情况,将RS485通讯做些总结,权当对RS485总线运用的一个总结,以应用为基调,肯定有很多不足的地方,若有不对之处,敬请指教。       RS485总线是一种串行的时分总线,半双工,一主多从的网络组成方式。在实际的运用过程中,一般采用“主机轮询从机,从机实时返回”的方式进行,通讯通常采用数据包的方式,下面以一种易懂的通讯格式来介绍,通讯格式为“起始字符+设备特征码+数据包序号码+命令特征码+数据+校验码+结束字符”,各个域的字节长度可由用户定义。       工作过程可如下:假设一条RS485总线上,主机叫做A机,A1、A2、A3为从机,一般总线上所有终端平时处于接收状态,主机也一样,只在有必要发送数据时,才处于发送状态,一个时刻,必须保证总线只有一个器件处于发送状态,否则总线会乱序。以A机轮询A1机状态为例:A发送数据包起始字节,A1、A2、A3均接收该字节,A继续发送设备特征码A1,A1接收并与自己设备码比较相同,继续接收,A2、A3接收比较则发现与自己的设备码不同,就不再接收后续字符(接收中断仍在进行,只是接收到数据不写入相应接收缓冲区,这样就接收不了一个完整的数据包,接收不到完整数据包,就不会作出处理),A继续发送数据包序号码,A1从机接收,A继续发送命令特征码,A1接收,A继续发送数据域数据,A1接收,A发送校验码,A1接收并判断之前接收到的数据是否符合校验规则(比如CRC16校验,异或算法校验,加运算校验),若不符合,则放弃本次数据包接收,符合校验规则,A1继续接收,A发送结束字符,A1继续接收结束字符,如此一个完整的数据包被接收,按照命令特征码和数据域数据解析命令,作出反应,并按同样的逻辑返回给主机A机状态。 同样对A2、A3也同样进行,一般主机若在发送数据包后会有计时规则,超时无数据返回,则判定从机不在总线上,从机也一样,如果超过设定时间未接收到主机发来数据包,从机也进入脱机状态。       作为一个系统,在设计通讯协议的时候,必须充分考虑通讯格式的可扩展性、兼容性,这样产品才能有较好的延续性、可继承性。在通讯速率方面,最好采用标准的1200bps、9600bps、19200bps等大家常用的波特率,以更好的和其他公司一些产品连接。通讯距离方面,虽然理论理论距离1200m,其实和从机个数,通讯使用线缆,通讯环境(干扰)是有很大关系的,距离长的,往往需要通过中继器加强信号、减慢通讯速率来解决干扰。       在硬件电路组成方面,大都使用RS485通讯芯片(如MAX485、SP3483、SN65LBC184),就如RS232有很多芯片一样,并不需要用户使用分立元件搭建电路,相对外围的元件是很少的,一般作为通讯线路,容易遭受各种电气干扰,受各类脉冲的冲击,因此必须考虑如何将线路上这些破坏性的干扰降低,使用TVS管是个好办法,一般在通讯线路长,共模干扰比较严重,可在通讯线路上接近芯片楚接共模电感,以让通讯更稳定;作为RS485,若从器件挂在离主机最远处,需在485A、485B间并上一个120欧姆左右的电阻,以防通讯能量反射。        RS485总线构成虽然简单,但要在实际项目中用好,也绝非易事,多进行现场问题的分析、解决,非常有帮助我们对RS485总线的认识。