微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于RS-485总线多CPU控制系统简化网络模型及其通讯协议

基于RS-485总线多CPU控制系统简化网络模型及其通讯协议

时间:12-11 来源:互联网 点击:

主控制器则子控制器发送A_S_HAVE,主控制器收到后发出应答控制字A_M_READY;如果子控制器被主控制器查询到没有指令数据帧要发送给主控制器,则发送A_S_OVER,告诉主控制器无数据帧发送,主控制器退出此次连接继续查询下一个子控制器。

由图4所示可知,通信连接建立以后主控制器和子控制器之间可以进行指令数据帧传输。当传输完一个数据帧后,接收方需要应答相应的连接控制字(如:“已接收一帧”即A_S_RECEIVED/A_M_RECEIVED),只有这样才能继续发送下一帧指令数据帧,否则认为发送不成功。

3.3 应用层通信协议

应用层是四层简化网络模型中最顶层,其主要关心具体要发送什么数据和接收到数据后执行后续的操作等,而数据传输由应用层以下的层完成。应用层主要包含以下几点:

(1)数据格式:在多CPU控制系统中采用两种格式的数据。一是本地使用的数据,为了编程方便和直观,采用ASCⅡ码来表示。二是网络通信数据,为了使通信程序高效、简洁,采用压缩BCD码。通过这两种格式数据大大提高了网络传输效率。

(2)消息:在应用层中采用WIN32操作平台的“消息”概念来描述控制器之间的数据传输,其内容与指令数据帧相同。由于本地对数据处理可能很快,而数据传输要等待网络连接建立,这样数据本地处理和网络传输就不能够同步进行,所以就必须采用缓冲机制来协调。仿照WIN32操作平台中对消息的处理办法,用循环队列数据结构来缓冲消息(如图5所示)。消息全部采用统一长度,一般采用4个字节,队列中每个元素为一个数组(长度为4个字节),每个队列中共有5个元素,采用先进先出(FIFO)原则,并且循环使用。生成或收到的消息时先放入消息数组中,并作为一个元素放入REAL指针所指尾部入缓冲队列(REAL加1),进行通信时从HEAD指针所指首部取出最先进入队列数据帧(HEAD加1)。同时系统对当前的消息中第一个字节(控制指令)内容进行判断,从而进入相应的消息处理程序。

4 通信软件的抗干扰措施

4.1 在协议中增加差错控制措施

当主控制器发送呼叫帧后,如果在规定的时间内没有收到子控制器的应答帧或没有得到正确应答帧,则认为通信失败。只有等到下次再与该子控制器建立连接时,重新完成上次未交换的数据帧。同时采用累加校验字段来判断数据是否正确,通过以上措施可以有效的防止通信错误发生。

4.2 在软件设计中适当增加延时

当主控制器或子控制器有一种状态转到另一种状态时,插入一定延时(一般为几十毫秒),其可以大大提高总线稳定性,从而可提高数据传输可靠性。

5 结束语

由RS-485网络的多CPU控制系统的特点,并参照ISO七层网络模型和TCP/IP协议设计思想,提出了适用于该系统的四层简化网络模型、各层的通信协议和数据帧的格式。在实际应用中,根据四层简化网络模型及其通信协议编制的通信软件在实际应用中效果良好、通信速度和可靠性得到大大的提高。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top