基于群呼和队列应答策略提高RS485总线通信效率
2022-06-22柏思忠
柏思忠
(1.中煤科工集团重庆研究院有限公司,重庆 400039;2.瓦斯灾害监控与应急技术国家重点实验室,重庆 400039)
RS485 总线有着布线简单、通信方便、价格低廉、通信距离长等优点,在工业现场、智能控制、环境监测等领域得到广泛应用。随着电子技术和信息技术的进一步发展,RS485 总线连接节点设备数量越来越多,单个节点信息量越来越大,提高RS485总线通信效率愈发急迫,主要采取提高波特率、控制收发控时序、多主通信和软件改善通信策略4 方面措施。在提高波特率方面,彭韬等[1]采用变化的波特率达到通信效率最优;卢超[2]和陈航等[3]都使用最大波特率高达40 Mbps 的通信速率;景程等[4]使用多种设备不同波特率通信提高通信效率;范洁等[5]更是为了满足实时性要求将RS485 瞬间改变为脉冲波形传递信息;刘希高等[6]为RS485 高速隔离提供了磁隔离方式实现上兆速率传输,提高波特率的措施最直接有效,但是高波特率传输距离大大缩短;郭佳欣[7]等指出高波特率还会增加误码率。在控制收发时序方面邓昊等[8]通过软硬件2 方面有效控制收发转换时间到1 个合理范围;闻海忠[9]采用3 种硬件方式实现收发控自动切换,控制收发控时序单帧数据仅能减少不到毫秒级的时间,通信效率提高有限。多主通信方面,胡明飞等[10]采用载波监听多路访问/冲突检测协议(CSMA/CD)实现多路温度采集器主动发送数据;李周利等[11]采用主从节点控制、从节点自然优先 级设置及3 种软、硬件定时方法解决了总线冲突问题;于鑫等[12]通过广播命令切换主从机状态实现多主通信;韩路平等[13]采用监听和时间同步切换主从机状态实现两主多从通信;但是前2 种多主通信增加了冲突检测等硬件成本,后2 种本质上在某个时刻仍是一主多从模式,对通信效率提高意义不大。改善通信策略方面,陈品富等[14]根据变长帧自动调节下发频度实现自适应召唤策略,较大幅度提高了总线通信效率,是一种通用有效的方法,但没有明确给出从机如何快速发送紧急信息的策略,需进一步细化和完善。当然,提高总线通信效率的同时还必须保证通信的可靠性,不能忽略刘喜增等[15]提出的信号反射干扰和赵亮等[16]提出的RS485 总线距离长、节点数多、反射干扰、假起始信号等因素对通信可靠性的影响。
针对提高RS485 总线通信效率的问题,结合上述分析,提出了一主多从采用群呼和队列应答策略来提高RS485 中心提高通信效率。
1 群呼和队列应答策略
RS485 总线通信过程中,主机采用群呼方式,呼叫信息中携带当前总线所有从机地址组成的地址链表和应答时隙时长;从机采用队列模式应答,应答分为优先应答和正常应答2 个队列,从机根据自身应答信息的重要性选择回发,重要和紧急信息在优先应答队列对应时隙回发,平常信息在正常应答队列对应时隙回发,所有从机都在线监听,优先应答和正常应答2 个队列中根据地址链表中顺序逐一回发,已经在优先队列中回发的从机正常应答队列不再回发,实现重要和紧急信息优先传递。
1)主机群呼。主机通过RS485 连接n 台从机,初始化阶段从1~n 逐台呼叫,主机根据收到的所有从机E1~En的地址建立1 个地址链表A1~An;然后进入正常工作流程,主机发出群呼命令,呼叫信息包括地址链表A1~An和每个时隙对应时长△τ 转(通常取值总线传输2~10 字节宽度)为接收状态,等待从机应答。
2)从机应答队列。RS485 总线n 台从机根据自身实时通信信息的重要和紧急程度分为优先队列和正常队列。通信信息涉及故障、报警、数据急剧变化等情况需要及时发送的从机根据地址从小到大进入优先队列,通信信息无重要和紧急情况的从机根据地址从小到大进入正常队列,二者只能且必须选其一。
3)应答时隙分配。RS485 总线从机应答时隙的分配如图1,主机群呼后,等待1 个时隙△τ 依次为优先队列应答时隙X1~Xn,优先队列时隙后紧跟1个等待时隙△τ 再依次为T1~Tn。
图1 队列应答时隙分配图Fig.1 Queue response slot allocation diagram
4)从机应答策略。从机队列应答示意图如图2。主机群呼完毕后,优先队列中有从机(例如E2)排队,经过1 个等待时隙△τ,然后再等到从机对应时隙X2应答,应答完毕后增加1 个等待时隙△τ,后续的队列对应时隙向后顺延1 个时隙△τ,优先队列中还有从机就继续在对应时隙应答,增加1 个等待时隙△τ 并顺延,直到优先队列中从机应答完毕;优先队列从机应答完毕后经过1 个等待时隙△τ,正常队列中排队从机开始在对应时隙应答(从E1~En),信息无变化时应答信息简化,在优先队列已经应答的从机(例如E2)在正常队列中不再出现,从机应答后增加1 个等待时隙△τ 顺延,直到正常队列所有从机应答完毕,本次主机群呼结束,进入下一次群呼,周而复始。
图2 从机队列应答示意图Fig.2 Slave queue response diagram
5)优劣分析。主机群呼和队列应答策略遵循RS485 通用一主多从模式,根据总线所有从机建立地址链表,划分应答时隙,从机根据自身信息紧急和重要程度排队到优先队列和正常队列有序应答。这种策略具有以下4 个方面的优势:①它是一种软件策略,具备通用性,与波特率、从机数量和通信距离无关,硬件不作任何改变;②采用群和队列顺序应答,一呼多应,减少主机呼叫次数和帧与帧间隔,缩短了轮询周期,提高了总线通信效率;③采用优先管理机制,保证从机重要和紧急数据及时传输;④从机应答信息无变化时,采用减少字节长度的简化帧应答,进一步缩短轮询周期。但是,群呼和队列应答策略也有1 个方面的劣势,整个通信过程时序要求更加严格,从机要一直监听并严格根据对应时序要求进行应答。
2 实际应用
试验平台为1 台分站(主机E0)通过RS485 总线连接4 台甲烷传感器(从机E1~E4对应地址1#~4#),1#传感器和分站之间1.5 m 电缆连接,后3 台传感器之间采用1 000 m 模拟电缆依次连接。试验平台如图3。
图3 试验平台Fig.3 Test platform
RS485 总线通信速率采用2 400 bps,单字节在总线传输时间约4.2 ms,传统呼叫一呼一答方式,分站发送10 字节共42 ms,传感器应答15 字节63 ms,传感器收到分站呼叫等待时隙△τ=10 ms,分站收到传感器信息后等待80 ms 开始下一次呼叫。整个轮询周期分站呼叫4 次,每台传感器各应答1 次,共780 ms。
群呼和优先应答时序图如图4。
图4 群呼和优先应答时序图Fig.4 Group call and priority response timing diagram
采用群呼和队列应答策略时,其中第2 台传感器有紧急信息需要及时上传,1#、3#和4#共3 台传感器正常信息应答,分站呼叫增加了地址链表和等待时隙时长信息共15 字节63 ms,整个轮询周期分站呼叫1 次,2#在优先队列应答1 次,其余3 台传感器在正常队列各应答1 次,共耗时475 ms,轮询周期缩短305 ms。优先队列中的传感器应答和正常队列中传感器应答时间一样,只是应答次序问题,因此这个轮询周期数值适用于优先队列中0~4 台所有情况。其中优先队列中的2#传感器应答响应时间为20 ms,而传统呼叫2#传感器应答响应时间为205 ms,采用优先队列方式大大提高了传感器重要和紧急信息的响应时间,尤其是地址号更大的传感器响应时间减少得更多。
RS485 总线通信在采用群呼和队列应答策略时,所有传感器信息都没有变化只是正常应答,采用4 字节16.8 ms 简化帧方式,整个轮询周期仅仅只有290.2 ms,比传统方式缩短489.8 ms,大大提高了通信效率。
经过群呼和队列应答策略试验,对比传统方式分析,可得出如下结论:①通过群呼和队列顺序应答减少主机(n-1)次呼叫和等待时间,缩短轮询周期;②通过设置优先队列保障紧急和重要信息的从机快速应答,减少响应时间;③对应答信息无变化的从机实施简化编码,缩短应答数据帧长度,进一步缩短轮询周期。
3 结 语
RS485 总线通信采用群呼和队列应答策略,硬件不作任何改变,细化和完善软件通信策略,对所有不同速率、不同距离、不同从机数量的RS485 都具有通用性。这种策略通过群呼、队列顺序应答和简化编码大幅度缩短轮询周期提高通信效率,同时设置优先队列保障了紧急和重要从机信息的及时传递,但是整个通信过程具有严格的时序要求,需要从机一直在线监听和遵循时序管理。