一种485总线半双工通信的软件处理方法与流程

文档序号:19835643发布日期:2020-02-04 12:58阅读:2025来源:国知局
一种485总线半双工通信的软件处理方法与流程

本发明属于机载总线通信技术领域,涉及一种485总线半双工通信的软件处理方法。



背景技术:

rs485总线是由rs232发展而来的接口标准,适用于单点到多点或者多点之间的通信,弥补了rs232接口标准的互联问题。rs485总线以其接口简单、成本低廉、通信距离长、可靠性高等优势在交通、航空、航天、自动控制领域被广泛使用。

rs485网络的通信方式分主从式和总线式2种。工业控制中通常采用主从的工作方式,而总线通信方式有着良好的扩展性和通用性。当rs485总线工作在半双工通信方式,同一时刻只能有一个节点处于发送状态,否则会引起总线冲突。为了减少总线冲突,采用总线侦听方式。在发送端发送数据帧之前,先侦听总线状态,判断是否空闲。若总线空闲,则向总线广播总线申请帧,然后发送数据,否则循环等待。在航空领域机载嵌入式系统中,由于系统对实时性要求较高,通常采用应答的方式,从节点收到信息后,按照预定的时间序列向主节点发送数据。当rs485总线网络组建方法设为两线方式,发送和接收是复用一组数据线,传统的总线通信下会存在很大噪声,本发明针对这个问题,提出了软件处理方法,实现总线在半双工通信方式下,数据的高可靠性接收与发送。



技术实现要素:

本发明的目的是:485总线在半双工的通信模式下,采用两线方式组建的网络中,快速的数据发送和接收过程中,存在数据丢包和错包的情况。为解决该问题提出一种485总线半双工通信的优化算法。

本发明的技术方案是:优化485总线的应答响应逻辑,考虑到数据接收与发送过程中,数据传输需要的时间,引入信号量操作和fifo特殊处理,确保同一时刻下,总线上传输的数据不会发生冲突。

所述的一种485总线半双工通信的优化算法,包括以下步骤:

1)485总线接收使能打开,判断485总线接收开始标志rx_flag的状态,如果满足接收条件,则rx_flag==1,执行步骤2),否则,执行步骤5);

2)获取485总线接收fifo的长度,如果长度不为零,则读取fifo内的所有数据,执行步骤3);否则,执行步骤5);

3)对接收的数据进行校验,如果校验结果正确,数据接收过程结束,进入数据发送程序,执行步骤4);否则,执行步骤5);

4)打开485总线发送数据使能,将485总线接收开始标志置零,rx_flag=0,进行数据的发送程序;完成数据发送后,对发送fifo的长度进行判断,如果为0进入步骤5);否则,执行步骤6);

5)将485总线接收开始标志置1,rx_flag=1,485总线发送使能关闭,同时清空接收fifo;完成后执行步骤6);

6)485总线本次接收与发送结束,执行下一个周期任务,重新进入步骤1)。

优选地,上述所有步骤采用应答模式,只有485总线收到数据后,才执行数据的发送任务。

优选地,所述软件处理方法适用于485总线在半双工的通信模式下,数据接收与发送需要分时复用485总线。其特征在于,485总线半双工通信是周期任务,通信频率高。且采用应答模式,只有485总线收到数据后,才执行数据的发送任务。

附图说明

图1为本发明的方法流程示意图。

图2为传统485总线处理流程示意图。

具体实施方式

下面结合附图和实施例对本发明做进一步说明:请参阅图1,本发明中使用的rs485总线采用半双工,两线方式。数据与接收复用数据总线。飞控管理计算机(vmc)每20ms向伺服控制器(ace)发送数据,ace收到数据且校验核正确后,将自己的状态组包发送给vmc。

ace的运行周期为1ms,vmc向ace发送的数据长度为20,ace向vmc发送的数据长度为30,数据传输的波特率设定为115200bps。vmc发送给ace的20帧数据需要1.4ms,ace向vmc发送的30帧数据需要2.1ms。为避免发送数据和接收数据不在同一组复用的数据总线上冲突,且要求满足vmc和ace的实时性。因此软件不能通过加入延时函数来解决该问题,软件应用层定义了信号量rx_flag,初始化为1表示当前可以进入数据接收状态。ace通过周期查询的方式,判断数据是否传输完成,可以从接收转为发送状态,或者从发送状态转为接收状态。

举例对过程进行完整描述。使用本发明提出的一种485总线半双工通信的优化算法的步骤用例如下:

1)ace先将485总线接收使能打开,判断总线接收开始标志(rx_flag),如果满足接收条件(rx_flag==1),进入步骤2)。否则进入步骤5);

2)获取vmc通过485总线给ace发送数据的fifo长度,如果长度大于等于20,则读取fifo内的所有数据,进入步骤3)。否则进入步骤5);

3)对接收的数据进行校验,如果校验结果正确,数据接收过程结束,进入ace向vmc数据发送过程,进入步骤4)。否则,进入步骤5);

4)ace将485总线发送使能打开,将485接收开始标志置零(rx_flag=0),开始数据的发送。完成数据发送后,对发送fifo的长度进行判断,如果为0进入步骤5)。否则进入步骤6);

5)ace将总线接收开始标志置1(rx_flag=1),485总线发送使能关闭,同时清空接收fifo。完成后进入步骤6);

6)485总线本次接收与发送结束,进入下一个周期任务进入步骤1)。

步骤1)中的数据接收开始标志(rx_flag)确保数据接收与数据发送的互斥性,虽然程序是流水线顺序执行,但是无论是数据的接收和发送都是按照固定的波特率传送,需要考虑接收数据与发送数据需要的时间。

步骤5)中,对接收fifo清空操作,确保在数据接收模式下接收fifo内没有垃圾数据干扰。由于485总线半双工工作模式下,接收和发送数据线分时复用统一数据总线,数据在发送时会影响到接收端的fifo内数据,因此需要完成数据发送后,对接收fifo清空。

本发明提出了一种485总线半双工通信的优化算法,避免发送的数据与接收的数据在传输过程中发生冲突,且保证数据传输的实时性。实现了485总线高频收数与发数的可靠性与稳定性。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1