基于RS485总线的主从通信方法
2020-03-04白曦,王俊
白 曦,王 俊
(中国航空工业集团公司西安航空计算技术研究所,西安 710068)
1 组网方式
供电数据采集器与智能接触器采用半双工UART接口[1],通过异步串行通信接收和发送信息。供电数据采集器与智能接触器间有2路RS485总线,每路总线采集4个只能接触器状态。RS485总线组网方式如图1所示。
图1 RS-485总线组网方式
2 主从通信机制
2.1 帧结构
稳定可靠的通信不仅依赖硬件环境,也依赖于通信协议。主节点供电数据采集器与从节点智能接触器之间的通信协议如图2所示。
图2 数据桢结构
(1)数据帧头:用于标识数据帧的开始,数据帧头字由2个字节组成,主节点发送数据帧头1的值为0xAA,数据帧头2的值为0x55,主节点接收数据帧头1的值为0xEB,数据帧头2的值为0x90。
(2)数据帧ID号:RS485总线上的通信为广播方式,所以每个智能接触器应该有独立地址,判断该数据帧是否应该接收。
(3)命令/数据:数据帧中实际数据,为了保证数据通信可靠性,所有数据以0~9的ASCII码发送,智能接触器收到后再处理。
(4)校验和:用于数据帧的校验,它是除本身外的块中所有字节之和以256为模的二进制补码。
2.2 RS485总线通信
2.2.1 主从通信时序控制
供电数据采集器与智能接触器的接口采用半双工UART接口,通过异步串行通信接收和发送信息。RS485总线为半双工通信方式,同一时刻只能有一个节点处于发送状态,否则会引起总线冲突[2]。供电数据采集器与智能接触器之间的通信采用定时启动方式,供电数据采集器为主设备,智能接触器为从设备,通信启动方式采用定时启动方式,主控站按约定周期向从控站发送数据命令,以启动一次数据传送的通信,直到该次通信所应传送的数据传送完毕,然后主控站才结束这次传送过程,下一个通信周期又重复这个传送过程。供电数据采集器每50ms轮询一个智能接触器,4个智能接触器共需要200ms完成一次通信。一次通信包括从主设备发送数据到主设备接收数据完成,通信周期采用定时器实现,定时器周期t为10ms,通信周期T为50ms,一次通信传输过程包括以下4个阶段:一是在通信周期T到来时,调度供电数据采集器发送任务组织发送数据;二是在每个定时器周期t到来时,主设备检测发送数据并启动物理传输;三是智能接触器在每个定时器周期t到来时进行数据查询接收,解析,并组织回复数据;四是供电数据采集器在接收任务周期T到来时进行数据接收、解析。
2.2.2 通信状态机
为了解决线上主从设备收发冲突问题,设计了通信状态机,保证一次通信周期内的发送接收在同一状态下进行,直到本次通信结束或另一状态触发条件满足,通信进入另一状态。针对本项目通信特点,设计了握手状态、空闲状态、数据传输状态、错误恢复状态、错误处理状态5个状态。各状态间的转换见图3所示。
图3 通信状态机
上电后,供电数据采集器进入握手状态,向智能接触器发送握手命令并等待智能接触器的回复确认,若握手失败,则一直处于握手状态,直到握手成功。
握手成功后,如果有数据则转入数据传输状态,在此状态下,供电数据采集器和智能接触器之间可传输检测命令和检测结果;若无数据传输,则进入空闲状态,直到有数据发送后才转入数据传输状态。
数据传输状态下若发生传输错误,通信进入错误恢复状态,如果在规定的恢复次数内数据传输正确,则通信转回数据传输状态,如果恢复失败,则通信转入错误处理状态,进行通信状态错误处理。
2.2.3 通信异常处理通信异常处理分为2种情况:
(1)握手失败:供电数据采集器向智能接触器发送握手命令后,若接收不到智能接触器回复,则供电数据采集器一直发送握手命令,直到握手成功。
(2)通信异常:在外部通信链路受到干扰时,出现数据丢失、数据不对等问题,供电数据采集器对接收数据进行有效性判断后,若接收错误,则采用重发机制,并设置从发次数上限N,在重发计数小于N时,若接收正确,则通信链路恢复正常,若连续N次都接收错误,则记录通信链路故障。
3 结束语
本文设计的RS485总线通信方法,采用主-从通信方式,确定供电数据采集器为主设备,智能接触器为从设备,并通过在主设备上设置通信状态机,确定了主设备实时通信状态,对数据状态进行校验,只处理当前状态下的数据,使发送和接收均在同一状态下进行,从而有效避免数据交互过程中的收发错误和收发冲突问题,提高了供电数据采集器与智能接触器间通信的可靠性。经试验室联试验证,该方法有效可行,能大幅度提高设备间的通信效率。