新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 如何基于RS485研究总线集散式测控系统?

如何基于RS485研究总线集散式测控系统?

作者:时间:2018-08-07来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/201808/385590.htm

2.3通信时序

由于RS-485通信是一种半双工通信,发送和接受共用同一物理通道,在任意时刻只允许一台单片机处于发送状态,因此要求应答的单片机必须在侦听到总线上呼叫信号己经发送完毕,并且在没有其他单片机应答信号的情况下才能应答。如果在时序上配合不好,就会发生总线冲突,使整个系统的通信瘫痪,无法正常工作。上位机与下位机之间如何进行数据传输,怎么提高通信的效率和可靠性,以及对通信过程中的故障处理,帧格式的约定,都需要一套详尽的通信协议。

由于RS-485标准只制定了物理层电气标准,对上层通信协议没有规定,这给设计者提供了很大的灵活性。一套完整的通信协议既要求结构简单,功能完备,又要求具有可扩充性与兼容性,并且尽量标准化。

3报文通信时的简单协议

SLIP(Serial?Line?Intemet?Protocol)协议是串行线路网际协议,它是最早的、也是仅有的两个串行IP协议之一。它实现了在串行通信线路上运行TCP/IP协议及其应用服务的功能,为用户上网提供了拨号IP模式。这里由它派生出改进协议:

(1)发送数据时的报文组装

●取一个关键字0x55,一个报文的传输以0x55为引导,中间可以有任意多的字节数,最后以0xAA结束一个报文。关键字0x55和0xAA不参与检验和运算。

●如果传输的原始数据中含有0x55,则将其替换成0xFF+0x05,求校验和时仍按一个0x55计算。

●如果传输的原始数据中含有0xAA,则将其替换成0xFF+0x0A,求校验和时仍按一个0xAA计算。

●如果传输的原始数据中含有0xFF,则将其替换成0xFF+0x00,求校验和时仍按一个0xFF计算。

●其余数据原样发送。

例如:当有0x55、,0x5A,0xAA,0xAS,0xFF这5个字节数据需要发送时,加上它们的算术校验和0xFD,原始数据总共6个字节。按上述方法整合成的一个报文为:0x55,0xFF,0x05,0x5A,0xFF,0x0A,0xAS,0xFF,0x00,0xFD,0xFF,总共11 个字节。

(2)接收数据时的报文解读

接受方将接收所有的数据并存入数组,主程序从数组中逐个取出数据并进行解读,其过程如下:

●等待出现第一个0x55,以判断一个数据包的开始。一旦读到0x55,立即进行一个报文接收的初始化工作,包括数组单元清0,字节计数器清0等工作。

●从队列中读取一个数据,如果不是0x55、0xAA或0xFF,则直接将数据存入数组。

●如果读到0xFF,则继续读其下一个数据,若是0x05,则替换回原始数据0x55;若是0x0A,则替换回原始数据xAA,若是0x00,则替换回原始数据0xFF。若都不是,则数据传输出错。

●当读到xAA时,一个报文结束,关串口接收中断,串口中断流程图如图4所示。

图4接收数据帧时的串口中断流程图

4结论

本文作者创新点:在多MCU之间中长距离通信的诸多方案中,RS-485因硬件设计简单、控制方便、成本低廉等优点。本文完成了基于RS-485的单主机一多从机的集散式控制系统的设计,包括上位机主控端与下位机从动端,并详细分析了其通信时序。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭