一种串口单线多方通讯系统及方法与流程

摘要: 本发明涉及数据通讯,特别涉及一种串口单线多方通讯系统及方法。背景技术:1、在网络通讯设备、pd快充、5g终端、光伏储能及智能锂电终端等应用中,设备内部通常包含多...
一种串口单线多方通讯系统及方法与流程

本发明涉及数据通讯,特别涉及一种串口单线多方通讯系统及方法。

背景技术:

1、在网络通讯设备、pd快充、5g终端、光伏储能及智能锂电终端等应用中,设备内部通常包含多个功能单元(如协议处理单元、状态监测单元、保护控制单元、人机交互单元等),这些功能单元需通过同一条物理串口总线(如uart、rs485或隔离串口)与设备内部的电源管理单元或外部扩展模块进行数据交互。由于串口总线具有“任意时刻总线上只能有一个设备发送报文”的物理特性,多单元并发访问同一串口时,必须由数据代理系统对通讯信道进行统一管理。

2、现有技术中,已出现多种串口通讯代理方案。例如,中国专利cn115328836a提出了一种多app串口分时复用方法,多个微应用通过串口管理app访问端设备时,按照“抢占”及“优先级”原则分时复用物理串口。具体而言,各app发送的请求携带优先级参数,串口管理app将请求按优先级插入数据发送队列,然后按顺序依次处理队列中的请求,每个请求携带独立的“帧超时”和“字节超时”参数。

3、又如,中国专利cn1774696b公开了一种通过主处理器实现设备间异步串行通信的方法,建立串口设备处理、协议封装、底层通信等任务块,每个任务块被赋予优先级。其核心调度逻辑为:低优先级任务完成后,才触发下一个高优先级任务的执行。

4、再如,中国专利cn116527770a提出了一种多方式通讯的数据代理系统及方法,为不同类型的通讯方式开辟指定线程和优先级队列,基于线程和优先级队列创建映射表,将app发送的通讯数据存入优先级队列后,取优先级最高的单个数据进行同步阻塞式处理,处理完毕后才处理下一个数据。

5、上述现有技术方案在“串口单线多方通讯”场景下,仍存在以下不足:

6、(一)同步阻塞式i/o导致总线利用率低下

7、cn116527770a及cn115328836a等方案中,线程在处理一个请求时需同步等待从设备回复——发送数据后,线程进入阻塞状态,直至收到回复或超时后才继续处理下一个请求。在此阻塞期间,即使队列中存在更高优先级的任务,也无法被处理;即使物理串口总线处于空闲状态(从设备正在处理命令尚未回复),总线也无法被其他任务利用。这导致“单线”的物理带宽被严重浪费,高优先级任务的实时性受制于低优先级任务的i/o等待时间。在pd快充协议协商或光伏储能bms(电池管理系统)数据采集等对实时性要求极高的场景中,这种阻塞式处理方式可能导致关键指令的响应延迟,影响充电协议握手或电池保护触发的时效性。

8、(二)主动上报数据仅能在独占模式下处理

9、cn116527770a明确限定其“通讯口实时监控机制”仅对独占模式下的通讯设备使用。然而在rs485等共享总线模式(一主多从)的工业及能源设备场景中,从设备(如储能电池包、光伏逆变器、锂电保护板等)随时可能主动向主机上报数据(如告警信息、突发读数、故障状态)。现有方案在共享模式下无法有效处理主动上报,导致上报数据被忽略或丢失,严重影响了系统的实时监测能力和故障预警能力。在智能锂电终端中,电池保护板的过温、过压等突发告警若无法及时上报,可能造成严重的安全隐患。

10、(三)接收处理与调度决策相互独立,缺乏跨层协同

11、现有技术中,数据接收模块与调度模块是相互独立的——异步接收器收到数据后仅负责转发给对应的功能单元,不干预调度器的决策。当从设备主动上报数据时,调度器并不知道总线上正在发生什么,仍然按照既定队列顺序发送请求。这极易导致总线数据碰撞——主机在从设备正在上报的过程中发送命令,双方数据在总线上冲突,造成通信失败。在5g终端及网络通讯设备中,总线数据碰撞可能导致关键状态信息丢失,影响设备的网管监控和远程运维能力。

12、(四)重试机制与优先级调度相互独立,缺乏动态联动

13、数据包携带“最大发送次数”和“优先级”两个独立参数,重试逻辑与优先级调度互不影响——无论一个任务已经重试了多少次、还剩多少次“存活”机会,其调度优先级始终保持不变。这意味着一个濒临被丢弃的“濒死任务”和一个刚入队的普通任务在调度上被一视同仁,无法获得优先抢救的机会。在光伏储能系统中,若电池状态查询请求因总线干扰反复重试却得不到优先调度,可能导致储能调度策略无法及时更新,影响整个系统的能量管理效率。

14、(五)优先级静态化,低优先级任务存在被饿死的风险

15、现有方案的优先级仅在任务入队时确定,此后不再变化。在源源不断的高优先级任务涌入时(例如持续的快充协议握手或高频bms状态轮询),低优先级任务(如常规状态日志上报、周期性维护查询等)可能被永久阻塞而得不到处理,即“任务饥饿”(starvation)问题。长期来看,这会导致设备维护数据缺失、远程诊断功能失效,影响网通电源适配器及储能设备的全生命周期管理能力。

16、针对上述现有技术的不足,本发明提供一种串口单线多方通讯的数据代理系统及方法。

技术实现思路

1、本发明的目的在于提供一种串口单线多方通讯系统及方法,以解决背景技术中提出的问题。

2、为实现上述目的,本发明提供如下技术方案:一种串口单线多方通讯方法,包括以下步骤:

3、步骤s1:接收多个应用功能模块发送的通讯请求,将所述通讯请求按优先级存入同一物理串口对应的待发送队列中;

4、步骤s2:从所述待发送队列中选取当前优先级最高的通讯请求,通过所述物理串口以非阻塞方式发送该通讯请求的数据帧,发送完成后立即返回,不等待该通讯请求的回复数据;

5、步骤s3:在所述s2的发送完成后,返回执行所述s2,以处理所述待发送队列中的下一个通讯请求;以及,

6、在执行所述s2的过程中,若检测到新的高优先级通讯请求入队,则暂停当前通讯请求的等待状态,优先执行所述新的高优先级通讯请求的发送处理。

7、本发明所述的串口单线多方通讯方法,其中,所述s3中“返回执行所述s2,以处理所述待发送队列中的下一个通讯请求”具体为:每次发送完成后,重新扫描所述待发送队列,选取当前优先级最高的通讯请求进行发送,直至所述待发送队列为空。

8、本发明所述的串口单线多方通讯方法,其中,还包括异步接收步骤:

9、s4:通过独立的异步接收线程实时监听所述物理串口的输入数据,对接收到的数据帧进行解析,识别该数据帧为回复数据帧或主动上报数据帧;

10、若为回复数据帧,则根据帧标识匹配对应的通讯请求,并将回复数据转发至发起该请求的应用功能模块;

11、若为主动上报数据帧,则解析其源设备地址,将上报数据转发至订阅了该设备上报事件的应用功能模块。

12、本发明所述的串口单线多方通讯方法,其中,所述s4中识别出主动上报数据帧后,还执行地址锁操作:

13、解析所述主动上报数据帧的源设备地址,冻结所述待发送队列中所有目的地址与该源设备地址相同的待处理通讯请求;

14、在所述主动上报数据帧被分发至对应的应用功能模块后,且确认所述物理串口已恢复空闲状态时,解除所述地址锁,恢复被冻结的通讯请求的正常排队与发送。

15、本发明所述的串口单线多方通讯方法,其中,所述s4中在地址锁生效期间,被冻结的通讯请求的超时计时器暂停计时,待地址锁解除后继续计时。

16、本发明所述的串口单线多方通讯方法,其中,所述s4中还包括总线负载统计步骤:

17、统计单位时间内所述物理串口上接收到的主动上报数据帧的数量,计算当前总线繁忙指数;

18、所述s2中发送通讯请求后,该通讯请求的超时等待时间根据所述总线繁忙指数动态设定,所述超时等待时间与所述总线繁忙指数正相关。

19、本发明所述的串口单线多方通讯方法,其中,所述通讯请求携带预设优先级参数和最大重试次数参数;所述s2中还包括重试控制步骤:

20、当通讯请求发送后在超时等待时间内未收到回复数据帧时,判定本次发送失败;

21、若该通讯请求的已重试次数小于所述最大重试次数,则将该通讯请求重新放入所述待发送队列等待再次发送;若已重试次数达到所述最大重试次数,则将该通讯请求移入死信队列,并通知发起该请求的应用功能模块。

22、本发明所述的串口单线多方通讯方法,其中,所述通讯请求的当前调度优先级由以下公式动态计算:

23、当前优先级=预设优先级+等待时间老化增益+重试紧急偏移量;

24、其中,所述等待时间老化增益随该通讯请求在所述待发送队列中的等待时间增加而递增;所述重试紧急偏移量=(最大重试次数-已重试次数)×紧急权重系数,该通讯请求每经历一次重试,所述重试紧急偏移量增加一个所述紧急权重系数。

25、本发明所述的串口单线多方通讯方法,其中,当所述通讯请求的已重试次数达到所述最大重试次数减一时,所述重试紧急偏移量使该通讯请求的当前调度优先级提升至高于所述待发送队列中所有未经历重试的通讯请求的优先级。

26、此外,本发明还提供一种串口单线多方通讯系统,该系统包括:

27、队列管理模块,用于接收多个应用功能模块发送的通讯请求,将所述通讯请求按优先级存入同一物理串口对应的待发送队列中;

28、非阻塞发送模块,用于从所述待发送队列中选取当前优先级最高的通讯请求,通过所述物理串口以非阻塞方式发送该通讯请求的数据帧,发送完成后立即返回,不等待该通讯请求的回复数据,并继续处理所述待发送队列中的下一个通讯请求;

29、抢占调度模块,用于在所述非阻塞发送模块发送过程中,若检测到新的高优先级通讯请求入队,则暂停当前通讯请求的等待状态,优先控制所述非阻塞发送模块执行所述新的高优先级通讯请求的发送处理;

30、异步接收模块,用于通过独立的异步接收线程实时监听所述物理串口的输入数据,对接收到的数据帧进行解析和分发;

31、地址锁模块,用于在所述异步接收模块识别出主动上报数据帧时,解析其源设备地址,冻结所述待发送队列中所有目的地址与该源设备地址相同的待处理通讯请求,并在所述主动上报数据帧处理完毕后解除冻结;

32、重试管理模块,用于在通讯请求发送超时后,根据该通讯请求的最大重试次数执行重试控制;

33、优先级动态计算模块,用于根据通讯请求的预设优先级、等待时间老化增益和重试紧急偏移量动态计算当前调度优先级;

34、以及,所述待发送队列中各通讯请求的优先级由所述优先级动态计算模块实时更新,所述非阻塞发送模块每次从所述待发送队列中选取当前优先级最高的通讯请求进行发送。

35、与现有技术相比,本发明的有益效果体现在如下3个方面:

36、1.总线利用率显著提升

37、本发明采用非阻塞发送机制,数据帧通过物理串口发送完成后立即返回,不等待从设备回复。串口总线在等待回复的空闲时段可被其他待发送任务利用,将"占用总线的时间"从"等待回复的时间"中彻底剥离,使单条串口总线在单位时间内能够服务更多的通讯请求,总线利用率接近物理极限。在光伏储能系统中,该机制使得bms电池包状态轮询、pd快充协议握手及锂电保护板状态监测等多类任务可共享同一总线而互不阻塞,显著提升了多从设备并发访问场景下的数据吞吐能力;

38、2.高优先级任务的实时性得到根本保障

39、本发明实现了真正意义上的任务级抢占调度——每次发送完成后重新扫描队列,选取当前优先级最高的任务进行处理;若在发送过程中有新入队的高优先级任务,可立即暂停当前任务的等待状态,优先发送高优先级任务。高优先级任务的实时性不再受制于低优先级任务的i/o等待时间,满足了pd快充协议协商过程中关键指令的快速下发、光伏逆变器保护触发信号的即时响应、以及锂电保护板过温/过压告警的优先上报等场景下对实时性的严苛要求;

40、3.系统架构从"同步阻塞"跃迁至"异步非阻塞+可抢占"

41、本发明打破了传统串口通讯代理中"先发先等、顺序执行"的同步范式,构建了以非阻塞发送为核心、以动态优先级重排为调度的新型架构,为后续引入主动上报处理、动态超时、优先级老化等高级机制提供了基础性的架构支撑。该架构使得5g终端设备及网通电源适配器内部各功能单元(协议处理单元、状态监测单元、保护控制单元、人机交互单元等)在共享同一物理串口总线时,能够实现从设备主动告警的实时捕获、总线冲突的自主规避以及拥塞状态下的自适应超时调节,为智能锂电终端和储能设备的全生命周期管理提供了可靠的通信底座。