一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种自适应轮询软件处理方法、装置及存储介质与流程

2022-11-28 10:30:29 来源:中国专利 TAG:


1.本发明涉及总线通信技术领域,尤其是一种自适应轮询软件处理方法、装置及存储介质。


背景技术:

2.半双工总线通信是指数据可以沿两个方向传送,但同一时刻一个信道只允许单方向传送,即在通信过程的任意时刻,数据只能从a传到b或从b传到a,不能同时发送;若要改变传输方向,需要通过控制器进行方向切换。现有的基于modbus半双工总线通信方法中,主节点按预设周期进行召唤,大量时间浪费在周期等待,无法根据响应时间调整召唤周期;因为通过控制器进行方向切换,在软件运行过程中会被中断或中断嵌套打断,执行完成所有中断任务返回任务继续执行。如果在软件设计中使用了较多的中断或中断执行消耗时间过多,会导致顺序执行的任务无法按照预设周期运行。
3.因此,针对这一现状,迫切需要开发一种自适应轮询软件处理方法,实现提高总线利用率和系统响应的实时性,避免在中断中进行数据处理,对嵌入式任务处理的实时性要求无影响的目的。


技术实现要素:

4.为解决现有技术存在的节点按预设周期进行召唤,大量时间浪费在周期等待,无法根据响应时间调整召唤周期的问题,本发明提供一种能够根据从节点响应情况快速进行再次召唤,比固定周期召唤提高了总线利用率和系统响应的实时性的自适应轮询软件处理方法,包括:
5.s1:设置通信超时时间tout,设置主节点、从节点数据接收处理方式为查询式数据接收处理方式;
6.s2:主节点发送第一请求,第一从节点接收到所述主节点发送的所述第一请求的时间为第一发送时间td1;
7.s3:所述第一从节点进行所述查询式数据接收处理,所述第一从节点进行数据解析消耗时间为第一解析时间ts1;
8.s4:所述主节点检测判断所述第一发送时间td1和所述第一解析时间ts1之和是否超过所述通信超时时间tout,如未超时,执行s5,否则,执行s7;
9.s5:所述第一从节点回复所述第一请求,所述主节点接收到所述第一从节点回复的时间为第二回复时间td2;
10.s6:所述主节点进行所述查询式数据接收处理,所述主节点进行数据解析消耗时间为第二解析时间ts2,所述第一从节点进行超时自复位处理,执行s8;
11.s7:所述第一从节点进行延时等待,并对超时的所述第一从节点进行标记;
12.s8:所述主节点发送第二请求,返回所述s2循环。
13.优选地,所述s1中还设置了从节点连续超时次数值上限值,所述s7中对超时的所
述第一从节点进行标记的具体内容为:所述主节点等待超时,对所述第一从节点超时计数加1,判断所述第一从节点连续超时次数是否超过所述连续超时次数值上限值,如超过,所述主节点发出告警信息,提示所述第一从节点出现异常。
14.优选地,所述查询式数据接收处理方式包括:主节点、从节点设置接收缓存区,端口接收的数据有序缓存到所述接收缓存区中;建立数据接收数组buf。
15.优选地,所述查询式数据接收处理方式包括:将数据处理指针ptr、数据处理计步step和报文长度len用作数据处理过程记录。
16.优选地,设置判断所述接收缓冲区内数据是否合法的规则,当所述接收缓冲区内数据为合法数据时,将所述接收缓冲区内数据读取到所述数据接收数组buf内。
17.优选地,根据标准modbus协议,判断所述数据接收数组buf中第2个数据是否符合协议要求,若符合,则计算报文长度len;若不符合,所述数据处理计步step清零,筛除所述数据接收数组buf内第1个数据。
18.优选地,当所述数据处理计步step等于所述报文长度len时,并且通过数据校验后,进行报文解析。
19.优选地,所述超时自复位处理的包括:所述超时自复位处理的包括:设置从节点无数据接收时间的上限tover,并设置从节点无数据接收时间的超时次数上限k,当从节点无数据接收时间超过tover时,超时次数加1,当超时次数大于超时次数上限k时,所述从节点进行端口初始化。
20.优选地,一种自适应轮询软件处理装置,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上任一项所述的自适应轮询软件处理方法。
21.优选地,一种存储介质,所述存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行如上任一项所述的方法。
22.本发明解决了当前现有主节点的召唤周期固定,大量时间浪费在周期等待,软件运行过程中会被中断或中断嵌套打断的问题。本发明通过主节点设计了自适应轮询查询策略,根据从节点响应情况快速进行再次召唤,提高总线利用率和系统响应的实时性;设计了查询式数据接收处理方案,将数据接收处理作为任务,根据端口数据指针判断是否有新数据接收,进行数据处理,取代常规的中断式处理方案,减少在中断中运行的代码量,提高了任务运行的实时性。
附图说明
23.为了更清楚地说明发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是自适应轮询方案流程图;
25.图2是查询式数据接收处理流程图;
26.图3是从节点超时自复位流程图。
具体实施方式
27.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
28.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
29.实施例一
30.一种自适应轮询软件处理方法,基于modbus半双工总线通信方法,如图1所示,包括
31.s1:设置通信超时时间tout,设置主节点、从节点数据接收处理方式为查询式数据接收处理方式,还设置了从节点连续超时次数值上限值;此处不限制tout的时间范围,可选的,通信超时时间tout与固定召唤周期相同,在现有的通常设定召唤周期tper,每tper个周期顺序执行1次请求,即2次召唤请求相隔时间为tper,设置tout与tper相同,可选的tper取值为200ms—500ms,本实施例中tper为200ms,即tout设置为200ms。
32.此处查询式数据接收处理方式的具体内容可选的,主节点、从节点设置接收缓存区,端口接收的数据有序缓存到所述接收缓存区中,结合通信协议判断缓冲区内的数据,避免在中断中进行数据处理,对嵌入式任务处理的实时性要求无影响;建立数据接收数组buf,将数据处理指针ptr、数据处理计步step和报文长度len用作数据处理过程记录,设置判断数据是否合法的规则,设置异常数据的筛选规则以及校验规则,最终进行报文解析。可选的,如图2所示,具体步骤为:
33.u1:设置接收缓存区,接收缓存区内有数据指针rxwrite;
34.u2:主循环周期判断第一数据处理指针ptr与接收缓冲区数据指针rxwrite是否一致,如果一致表明没有新的数据接收,等待下一次查询;如不一致表明有新数据接收,执行u3;
35.u3:判断数据处理计步step是否为0,如果为0表明为初始数据,执行u4,否则,执行u6;
36.u4:判断接收缓冲区内第二数据处理指针ptr对应数据是否合法数据,合法执行u5,否则为非法数据,返回u2;可选的,此处判断第二数据处理指针ptr对应数据与预期的地址是否一致,依据标准modbus协议,通信首字节为设备地址,此步骤为判断地址是否合法;
37.u5:将接收缓冲区第二数据处理指针ptr对应数据读取到数据接收数组buf内,数据处理记步数step加1,报文长度len置为3;返回u2;
38.u6:将接收缓冲区第二数据处理指针ptr对应数据读取到数据接收数组buf内,数据处理记步数step加1;进入u7;
39.u7:判断数据处理计步step是否为3,如果为3执行u8,否则,执行u12;
40.u8:判断数据接收数组buf中第2个数据是否符合协议要求,依据标准modbus协议,通信第2个字节为功能码,此处判断功能码是否合法,如果符合执行u9,否则执行u11;
41.u9:根据通信协议约定计算报文长度len,执行u10;依据标准modbus协议,可以根据功能码计算本次通信报文长度;
42.u10:将接收缓冲区第二数据处理指针ptr加1,返回u2;
43.u11:数据处理计步step清零,丢掉数据接收数组buf内第1个数据,返回u2;此处筛除了非法数据,筛除异常字节,提高了数据处理的抗干扰能力;
44.u12:判断数据处理计步step是否等于报文长度len,如果相等执行u13,如果不相等,执行u10;
45.u13:数据处理计步step清零,进行数据校验,执行u14;此处不限定数据校验的方式;
46.u14:判断数据校验是否通过,如果通过执行u15,如果不通过,执行u11;
47.u15:进行报文解析,完成单次通信交互,返回u2;
48.使用主控器芯片设计了modbus半双工总线的查询式数据接收处理方案,可有效筛除异常字节,提高了数据处理的抗干扰能力;查询式数据接收处理方案,将数据接收处理作为任务,根据端口数据指针判断是否有新数据接收,进行数据处理,取代常规的中断式处理方案,减少在中断中运行的代码量,提高了任务运行的实时性。
49.s2:主节点发送第一请求,第一从节点接收到主节点发送的第一请求的时间为第一发送时间td1;
50.s3:第一从节点进行查询式数据接收处理,第一从节点进行数据解析消耗时间为第一解析时间ts1;
51.s4:主节点检测判断所述第一发送时间td1和第一解析时间ts1之和是否超过通信超时时间tout,如未超时,执行s5,否则,执行s7;
52.s5:第一从节点回复第一请求,主节点接收到所述第一从节点回复的时间为第二回复时间td2;
53.s6:主节点进行查询式数据接收处理,主节点进行数据解析消耗时间为第二解析时间ts2,第一从节点进行超时自复位处理,执行s8;此处超时自复位处理,可选的,包括:设置从节点无数据接收时间的上限tover,并设置从节点无数据接收时间的超时次数上限k,当从节点无数据接收时间超过tover时,超时次数加1,当超时次数大于超时次数上限k时,从节点进行端口初始化。可选的,具体步骤如图3所示,:
54.z1:从节点进行端口初始化,通信变量的初始化,完成通信端口的配置,执行z2;
55.z2:设置从节点无数据接收时间的上限tover,并设置从节点无数据接收时间的超时次数上限k,从节点打开总线接收使能,等待接收主节点的数据,执行z3;
56.z3:以此时刻为起始时刻,进行从节点无数据接收计时,执行z4;
57.z4:从节点判断通信端口有无新数据接收,如果有接收,表明端口正常,执行z5;如果无接收,表明端口异常,执行z7;
58.z5:从节点超时次数清零,重置无数据接收计时,执行z6;
59.z6:从节点进行数据解析,根据解析的数据进行回复,执行z3;
60.z7:从节点判断无数据接收计时是否大于预设超时时间tover,如果大于预设超时时间tover,表明出现了通信超时,执行z8;否则,表明暂未超时,执行z3;
61.z8:从节点出现了通信超时,对超时次数加1,执行z9;
62.z9:从节点判断超时次数是否大于预设超时次数k,如果大于预设超时次数k,表明该节点可能出现了异常,执行z1;否则,执行z3。
63.半双工总线通信中通信由主节点发起,从节点解析主节点发送数据进行回复响应,如果从节点长时间未收到主节点的数据,进行从节点通信端口初始化,能有效减少因从节点端口异常导致的通信异常问题。
64.s7:第一从节点进行延时等待,并对超时的所述第一从节点进行标记;可选的标记的方法为:当主节点等待超时,对所述第一从节点超时计数加1,判断所述第一从节点连续超时次数是否超过所述连续超时次数值上限值,如超过,所述主节点发出告警信息,提示所述第一从节点出现异常。
65.s8:主节点发送第二请求,返回所述s2循环。
66.通过上述自适应轮询方案,实现了主节点收到从节点响应后立刻再次进行发送请求,在未超时的状态下实现了召唤周期的自适应。如果通信过程中均未出现超时,则单次数据交互时间tx=td1 ts2 td2 ts1,其中x表示请求次数,周期轮询时间为t1 t2

tx;如果通信过程中出现了m次超时,则周期轮询时间为m*tout ∑ty,其中ty为未超时交互时间,tout为通信超时时间。半双工通信中适用于数据量较少的通信应用,主节点发送数据不超过50字节,从节点回复数据长度不超过100字节。可选的,本实施例中取数据传输波特率为115200bps,1位起始位,1位停止位,主节点发送数据长度为50字节,从节点回复请求为100字节。根据上述参数,使用自适应轮询方案,主节点发送消耗时间td1为3.4ms,从节点发送消耗时间td2为7.0ms,数据解析消耗时间ts1、ts2不超过5ms。如果通信过程中未出现超时,则单次数据交互时间tx=td1 ts2 td2 ts1=20.4ms;设置通信超时时间tout=tper,其中tper为召唤周期,如果出现通信超时,单次数据交互时间tx=tper=200ms。如上分析,使用自适应轮询方案,通信过程中均未出现超时,周期轮询时间∑tx/n*tper=10.2%,即通信速率提高了近90%;极端情况下,使用自适应轮询方案,所有通信均超时,周期轮询时间与固定周期召唤时间一致。实际现场总线应用中,考虑到通信可靠性,综合通信速率可提升60%-90%,有效的提高了总线利用率和系统响应的实时性。主节点、从节点侧均可使用的单一的主控制器芯片实现,软件开辟发送、接收缓冲区,结合通信协议判断缓冲区内的数据,避免在中断中进行数据处理,对嵌入式任务处理的实时性要求无影响;数据以字节为单位进行打包处理,可筛除异常字节保留有效数据,无信息丢失;响应时间小于召唤周期时,主节点根据从节点响应情况快速进行再次召唤,提高总线利用率和系统响应的实时性;从节点响应时间高于主节点召唤周期时进行延时等待,等待次数超过预设值时发出告警信息;本发明从节点超时自复位方案实现了自诊断和自恢复,提升了端口的健壮性,能有效减少因从节点端口异常导致的通信异常问题。
67.实施例二
68.本实施例提供一种自适应轮询软件处理装置,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上任一项所述的自适应轮询软件处理方法。
69.实施例三
70.本实施例提供一种计算机可读存储介质,其存储有计算机程序;当所述计算机程序被计算设备中的处理器执行时,使得计算设备执行实施例一任一所述的方法。
71.为了说明的目的,前述描述使用具体命名以提供对所述实施方案的透彻理解。然而,对于本领域的技术人员而言将显而易见的是,不需要具体细节即可实践所述实施方案。
因此,出于例示和描述的目的,呈现了对本文所述的具体实施方案的前述描述。这些描述并非旨在是穷举性的或将实施方案限制到所公开的精确形式。对于本领域的普通技术人员而言将显而易见的是,鉴于上面的教导内容,许多修改和变型是可行的。另外,当在本文中用于指部件的位置时,上文和下文的术语或它们的同义词不一定指相对于外部参照的绝对位置,而是指部件的参考附图的相对位置。
72.此外,前述附图和描述包括许多概念和特征,其可以多种方式组合以实现多种有益效果和优点。因此,可组合来自各种不同附图的特征,部件,元件和/或概念,以产生未必在本说明书中示出或描述的实施方案或实施方式。此外,在任何特定实施方案和/或实施方式中,不一定需要具体附图或说明中所示的所有特征,部件,元件和/或概念。应当理解,此类实施方案和/或实施方式落入本说明书的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献