本发明涉及通信领域,尤其涉及通信领域中一种通信状态更新方法和装置。
背景技术:
modbus协议是工业自动化领域广泛应用的应答通信协议,已经成为通用工业标准。modbus协议分为基于串口(rs-232、rs-422、rs-485)的modbusrtu协议和基于tcp/ip以太网的modbustcp协议。modbus通信使用主(master,也称主站)—从(slave,也称从站、设备)技术,主站初始化传输(查询,query,也叫请求,依次查询称为轮询),从站根据主站查询提供的数据作相应反应。主站可单独和从站通信,也能以广播方式和所有从站通信。如果单独通信,从站返回一个消息作为回应,如果是以广播方式查询的,则从站不作任何回应。
综上,modbus协议中,只有主站才有发起query的权利,从站只有收到query后,才有权利向主站发送应答报文(response)。换言之,在modbus协议中,主站只能通过query/response才能获得从站的数据,从站永远不能向主站主动上送任何报文。
在modbus协议的实际应用中,设备的全部数据往往需要包含n(n>1)轮次的请求/应答才能完成的。我们记这n个请求分别记为:q1,q2,……,qn,记这n个请求对应的应答依次为r1,r2,……,rn。modbus协议作为典型的请求/应答型通信协议,常规的流程总是一问一答,即上次的请求要么超时,要么得到应答,才会进入下一次的发送请求,每次主站只发送一个请求。modbus主从通信时序图如图1所示,主站初始化时,首先发送请求q1,主站在收到应答r1或者超时时间达到后,主站才会发送一下个请求q2,主站在收到应答r2或者超时时间达到后,然后主站再发送请求q3,如此轮转直到主站发送请求qn,主站在收到应答rn或者超时时间达到后,主站方才完成设备完整的一次轮询;然后主站发送请求q1,开始新一轮请求,如此循环。
modbus主从通信时,主站不仅要获得设备的遥信、遥测、遥脉等数据信息,还需要实时更新设备通信状态,设备通信状态主要是指设备提供数据的功能是否正常,通常可用好/坏、在线/离线来表示。
主站更新设备通信状态的常规方法:在主站的请求序列q1,q2,……,qn,q1,q2,……中,从任意请求qi(i∈[1,n])开始,主站连续k次(通常k至少大于等于3)问询(对应请求qi,qi 1,……,qi k-1)设备均无有效应答,或者持续w秒主站收不到设备任何有效应答(实际相当于主站经历了连续多次发送超时),则主站认为与从站设备通信故障,置设备通信状态为离线。
在实际通信时,存在交错的情形:在n个请求中,当其中有m(m<n)个请求总是得不到应答,但剩余n-m请求却有应答,会导致m个请求中数据持续不能刷新,一旦实际m个请求中含关键数据,则应视为主站与设备通信故障,但按常规的设备的在线或离线计算方法很可能主站无法报设备通信故障。
技术实现要素:
本发明要解决的技术问题是提供一种通信状态更新方法,能够准确判别交错情形下的设备通信状态。
为了解决上述技术问题,本发明实施例提供了一种通信状态更新方法,包括:
每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数;其中,一轮请求中分别包含n个请求,其中n为正整数;
根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;
将所述通信状态综合值与预设阈值进行比较;
根据比较结果更新通信状态。
一种示例性的实施例中,上述方法还具有下面特点:
统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若本轮中该请求超时,则将该请求对应的连续超时次数加1;若本轮中收到该请求的应答,则将该请求的连续超时次数置为零;
其中,一个请求的连续超时次数是指在本轮及之前轮次的请求中,该请求在超时时间内没有收到应答的连续次数。
一种示例性的实施例中,上述方法还具有下面特点:
统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若在本轮中该请求超时一次,将该请求对应的连续超时次数加1,并判断该请求对应的连续超时次数是否达到该请求对应的预设连续超时次数,若未达到该请求对应的预设连续超时次数则重新发送该请求;若在该请求对应的预设连续超时次数内收到该请求的应答,则停止重复发送该请求并将该请求的连续超时次数置为零。
一种示例性的实施例中,上述方法还具有下面特点:
根据每个请求的超时次数和预设的每个请求的通信状态权重计算通信状态综合值,包括:
按照如下公式计算通信状态综合值:
其中,i为请求号,i∈[1,n],ci为请求号i对应的请求的当前的连续超时次数,wi为请求号i的通信状态权重,cw为通信状态综合值。
一种示例性的实施例中,上述方法还具有下面特点:
所述预设阈值包括第一预设阈值和第二预设阈值;
将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态,包括:
若所述通信状态综合值大于第一预设阈值,则将通信状态更新为可疑;
若所述通信状态综合值大于第二预设阈值,则将通信状态更新为故障。
为了解决上述问题,本发明还提供了通信状态更新装置,包括:包括:存储器和处理器;其特征在于:
所述存储器,用于保存用于通信状态更新的程序;
所述处理器,用于读取执行所述用于通信状态更新的程序,执行如下操作:
每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数;其中,一轮请求中分别包含n个请求,其中n为正整数;
根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;
将所述通信状态综合值与预设阈值进行比较;
根据比较结果更新通信状态。
一种示例性的实施例中,上述装置还具有下面特点:
统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若本轮中该请求超时,则将该请求对应的连续超时次数加1;若本轮中收到该请求的应答,则将该请求的连续超时次数置为零;
其中,一个请求的连续超时次数是指在本轮及之前轮次的请求中,该请求在超时时间内没有收到应答的连续次数。
一种示例性的实施例中,上述装置还具有下面特点:
统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若在本轮中该请求超时一次,将该请求对应的连续超时次数加1,并判断该请求对应的连续超时次数是否达到该请求对应的预设连续超时次数,若未达到该请求对应的预设连续超时次数则重新发送该请求;若在该请求对应的预设连续超时次数内收到该请求的应答,则停止重复发送该请求并将该请求的连续超时次数置为零。
一种示例性的实施例中,上述装置还具有下面特点:
根据每个请求的超时次数和预设的每个请求的通信状态权重计算通信状态综合值,包括:
按照如下公式计算通信状态综合值:
其中,i为请求号,i∈[1,n],ci为请求号i对应的请求的当前的连续超时次数,wi为请求号i的通信状态权重,cw为通信状态综合值。
一种示例性的实施例中,上述装置还具有下面特点:
所述预设阈值包括第一预设阈值和第二预设阈值;
将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态,包括:
若所述通信状态综合值大于第一预设阈值,则将通信状态更新为可疑;
若所述通信状态综合值大于第二预设阈值,则将通信状态更新为故障。
综上,本发明实施例提供的通讯状态更新方法和装置,不但完全兼容传统的设备通信状态判别和计算方法,而且解决了传统方法很难解决的交错情形下的设备通信状态判别。
附图说明
图1为modbus主从通信时序图。
图2为根据本发明实施例一的通信状态更新方法的示意图。
图3为根据本发明实施例三的通信状态更新装置的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
图2为本发明实施例的通信状态更新方法的示意图,如图2所示,本实施例的通信状态更新方法包括:
s11、每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数。
一种示例性的实施例中,一轮请求中可分别包含n个请求,其中n为正整数;
一种示例性的实施例中,统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若本轮中该请求超时,则将该请求对应的连续超时次数加1;若本轮中收到该请求的应答,则将该请求的连续超时次数置为零;
其中,一个请求的连续超时次数是指在本轮及之前轮次的请求中,该请求在超时时间内没有收到应答的连续次数。
一种示例性的实施例中,统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若在本轮中该请求超时一次,将该请求对应的连续超时次数加1,并判断该请求对应的连续超时次数是否达到该请求对应的预设连续超时次数,若未达到该请求对应的预设连续超时次数则重新发送该请求;若在该请求对应的预设连续超时次数内收到该请求的应答,则停止重复发送该请求并将该请求的连续超时次数置为零。
s12、根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;
一种示例性的实施例中,按照如下公式计算通信状态综合值:
其中,i为请求号,i∈[1,n],ci为请求号i对应的请求的当前的连续超时次数,wi为请求号i的通信状态权重,cw为通信状态综合值。
s13、将所述通信状态综合值与预设阈值进行比较,根据比较结果更新通信状态。
一种示例性的实施例中,所述预设阈值可以包括第一预设阈值和第二预设阈值;
将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态,可以包括:
若所述通信状态综合值大于第一预设阈值,则将通信状态更新为可疑;
若所述通信状态综合值大于第二预设阈值,则将通信状态更新为故障。
综上,本发明实施例一提供的通讯状态更新方法,通过每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数;根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态。完全兼容传统的设备通信状态判别和计算方法,而且解决了传统方法很难解决的交错情形下的设备通信状态判别。
实施例二
本发明实施例二的设备通信状态计算方案如下:
n个请求中,每个请求配置各自的通信状态权重w(w≥0),默认值1,w越大该请求对设备通信状态判定的权重越大,w越小该请求对设备通信状态判定的权重越小,w为0表示该请求不参与通信状态计算。
我们定义设备通信状态综合计算值cw为:
其中,i为请求号,i∈[1,n],ci为请求号i(对应请求qi)当前的连续超时次数(ci初始值为0,请求号i超时一次ci累加1,主站收到请求号i的设备应答则ci立即清零),wi为请求号i的通信状态权重。
主站更新设备通信状态的具体方案如下,主站动态计算cw:
当cw≥cw0(cw0表示可疑设备通信状态综合计算值,可配置),认为主站与从站通信状态可疑,置设备通信状态为可疑,此时,主站可以产生低级别的报警以提示操作员,通信状态可疑次数应纳入可疑次数统计以宏观表述设备通信质量。
当cw≥cw1(cw1表示故障设备通信状态综合计算值,可配置,cw1大于cw0),认为主站与从站通信状态为坏(故障),置设备通信状态为坏(故障)。此时,主站宜产生高级别的报警以充分提示操作员,通信状态故障次数应纳入故障次数统计以宏观表述设备通信质量。
通常每个请求无论设备是否应答,每轮每个请求均只各自发送一次;但也有的场景要求如果请求qi(1≤i≤n)无应答,则请求qi必须重复发送,直到主站收到应答ri或者qi的本轮重复发送次数达到a(a>1)次才轮转到下一请求qi 1。
我们再来看技术背景中谈到的这种情况:在n个请求中,其中有m(m<n)个请求总是得不到应答,但剩余n-m请求却有应答,前文已谈到常规方法时,主站很可能不会报设备通信故障,只有一种情况主站可以报设备通信故障,即m≥k且m个请求中至少有k个请求是连续的(中间没掺杂其他请求),除此之外的其他所有情形,常规的设备在线和离线方法均无法报告设备通信故障。
以下将阐述利用本方法,在n个请求中,其中有m(m<n)个请求总是得不到应答,但剩余n-m请求却有应答的情形时,我们仍然可以确定地报设备通信故障。
从公式(1)可知,cw中,每个请求都有自己的连续超时次数,每个请求的连续超时次数乘以各自的通信状态权重所得值的累加和构成了cw,因此,cw和m在n中的排列次序无关,n个请求中但凡有一个请求总是无应答,只要该请求的通信状态权重不为0,则随着运行时间的增长,总有那么一刻,cw会大于cw1,这时主站就认为从站通信状态为坏,主站会报设备通信故障。
显然,当公式(1)中每个请求的通信状态权重均为1时,这时公式(1)可简化为:
由公式(2)可知,当常规的设备通信状态判别方法能报告设备通信故障时,按本方案提出的设备通信状态判别和计算方法所得结果与传统的方法完全一致。
为了更加直观,我们不妨举例:
我们假设n=10,即一共有十个请求:q1,q2,……,q10。我们假设传统方法下的k=5,即从任意时刻开始,主站只要连续5次问询设备均无有效应答,则主站认为与装置通信故障,传统方法会置设备通信状态为离线。我们再假设m=6,不妨假设q2,q3,q4,q6,q7,q8这六个请求总是得不到应答,但剩余的四个请求q1,q5,q9,q10却有应答,但由于轮询次序为{q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q1,q2,……},所以,这里虽然满足m>k,但按照轮询次序k的最大值只能为3,将永远凑不够k≥5的条件,因此传统方法用法不会报设备通信故障,即传统的设备离线和在线状态方法已经不能客观的充分反映这种设备通信异常情况。
我们再看上例情形下的本技术方法适用情况,我们假设cw0=5,cw1=10,我们定义完整的一轮轮询序列为{qi,qi 1,qi 2,……,qn-1,qn,q1,q2,……,qi-2,qi-1},i∈[1,n],注意请求的下标值不能超出n,因此上述完整的一轮轮询序列中所示下标值模n为实际下标值,例如5模3的值为2。举以下几种不同通信状态权重w示例,用户可以自主选用:
示例1:我们假设每个请求的通信状态权重均为1,这时适用公式(2),显然在经历完整的一轮轮询序列后,cw将变为6,由于cw0=5,满足cw≥cw0,这时,认为主站与从站通信状态可疑;又经历完整的一轮轮询序列后,cw将变为12,由于cw1=10,满足cw≥cw1,这时,认为主站与从站通信状态故障。
示例2:我们假设q6,q7,q8这三个请求的通信状态权重为0(即这三个请求不参与设备通信状态计算),其余请求的通信状态权重均为1,这时公式(1)变为
显然在经历完整的一轮轮询序列后,虽然q2,q3,q4,q6,q7,q8这6个请求都得不到应答,但只有q2,q3,q4参与设备通信状态计算,cw将变为3,又经历完整的一轮轮询序列后,cw将变为6,由于cw0=5,满足cw≥cw0,这时,认为主站与从站通信状态可疑;再经历完整的两轮轮询序列后,即累计共四轮轮询序列后,cw将变为12,由于cw1=10,满足cw≥cw1,这时,认为主站与从站通信状态故障。
示例3:我们假设q6,q7,q8这三个请求的通信状态权重为0(即这三个请求不参与设备通信状态计算),q2,q3,q4的通信状态权重为2,其余请求的通信状态权重均为1,这时公式(1)变为
在经历完整的一轮轮询序列后,虽然q2,q3,q4,q6,q7,q8这6个请求都得不到应答,但只有q2,q3,q4参与设备通信状态计算,由于q2,q3,q4的通信状态权重为2,因此cw将变为6,由于cw0=5,满足cw≥cw0,这时,认为主站与从站通信状态可疑;再经历完整的一轮轮询序列后,cw将变为12,由于cw1=10,满足cw≥cw1,这时,认为主站与从站通信状态故障。
综上所述,本方案提出的设备通信状态判别和计算方法,不但完全兼容传统的设备通信状态判别和计算方法,而且还可以解决传统方法很难解决的交错情形下的设备通信状态判别。同时,本案方法通过引入请求通信状态权重w,支持对请求中不同请求通信状态权重差异性配置,对于重要的、实时性要求高的请求,通常其w值配置宜大,对于对实时性不太敏感或者不太重要的请求,其w值可以配置为较小值。
实施例三
图3为本发明实施例三的通信状态更新装置的示意图,如图3所示,本实施例三的通信状态更新装置包括:存储器和处理器。
所述存储器,用于保存用于通信状态更新的程序;
所述处理器,用于读取执行所述用于通信状态更新的程序,执行如下操作:
每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数;其中,一轮请求中分别包含n个请求,其中n为正整数;
根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;
将所述通信状态综合值与预设阈值进行比较;
根据比较结果更新通信状态。
一种示例性的实施例中,统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若本轮中该请求超时,则将该请求对应的连续超时次数加1;若本轮中收到该请求的应答,则将该请求的连续超时次数置为零;
其中,一个请求的连续超时次数是指在本轮及之前轮次的请求中,该请求在超时时间内没有收到应答的连续次数。
一种示例性的实施例中,统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若在本轮中该请求超时一次,将该请求对应的连续超时次数加1,并判断该请求对应的连续超时次数是否达到该请求对应的预设连续超时次数,若未达到该请求对应的预设连续超时次数则重新发送该请求;若在该请求对应的预设连续超时次数内收到该请求的应答,则停止重复发送该请求并将该请求的连续超时次数置为零。
一种示例性的实施例中,根据每个请求的超时次数和预设的每个请求的通信状态权重计算通信状态综合值,包括:
按照如下公式计算通信状态综合值:
其中,i为请求号,i∈[1,n],ci为请求号i对应的请求的当前的连续超时次数,wi为请求号i的通信状态权重,cw为通信状态综合值。
一种示例性的实施例中,所述预设阈值包括第一预设阈值和第二预设阈值;
将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态,包括:
若所述通信状态综合值大于第一预设阈值,则将通信状态更新为可疑;
若所述通信状态综合值大于第二预设阈值,则将通信状态更新为故障。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
1.一种通信状态更新方法,包括:
每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数;其中,一轮请求中分别包含n个请求,其中n为正整数;
根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;
将所述通信状态综合值与预设阈值进行比较;
根据比较结果更新通信状态。
2.如权利要求1所述的方法,统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若本轮中该请求超时,则将该请求对应的连续超时次数加1;若本轮中收到该请求的应答,则将该请求的连续超时次数置为零;
其中,一个请求的连续超时次数是指在本轮及之前轮次的请求中,该请求在超时时间内没有收到应答的连续次数。
3.如权利要求1所述的方法,统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若在本轮中该请求超时一次,将该请求对应的连续超时次数加1,并判断该请求对应的连续超时次数是否达到该请求对应的预设连续超时次数,若未达到该请求对应的预设连续超时次数则重新发送该请求;若在该请求对应的预设连续超时次数内收到该请求的应答,则停止重复发送该请求并将该请求的连续超时次数置为零。
4.如权利要求2或3所述的方法,根据每个请求的超时次数和预设的每个请求的通信状态权重计算通信状态综合值,包括:
按照如下公式计算通信状态综合值:
其中,i为请求号,i∈[1,n],ci为请求号i对应的请求的当前的连续超时次数,wi为请求号i的通信状态权重,cw为通信状态综合值。
5.如权利要求1所述的方法,包括:
所述预设阈值包括第一预设阈值和第二预设阈值;
将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态,包括:
若所述通信状态综合值大于第一预设阈值,则将通信状态更新为可疑;
若所述通信状态综合值大于第二预设阈值,则将通信状态更新为故障。
6.一种通信状态更新装置,包括:存储器和处理器;其特征在于:
所述存储器,用于保存用于通信状态更新的程序;
所述处理器,用于读取执行所述用于通信状态更新的程序,执行如下操作:
每当发送一轮请求后,统计一轮请求中所包含的每个请求的连续超时次数;其中,一轮请求中分别包含n个请求,其中n为正整数;
根据每个请求的连续超时次数和预设的每个请求的通信状态权重计算通信状态综合值;
将所述通信状态综合值与预设阈值进行比较;
根据比较结果更新通信状态。
7.如权利要求6所述的装置,其特征在于:
统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若本轮中该请求超时,则将该请求对应的连续超时次数加1;若本轮中收到该请求的应答,则将该请求的连续超时次数置为零;
其中,一个请求的连续超时次数是指在本轮及之前轮次的请求中,该请求在超时时间内没有收到应答的连续次数。
8.如权利要求6所述的装置,其特征在于:
统计一轮请求中所包含的每个请求的连续超时次数,包括:
对于每个请求分别按照如下方式统计:若在本轮中该请求超时一次,将该请求对应的连续超时次数加1,并判断该请求对应的连续超时次数是否达到该请求对应的预设连续超时次数,若未达到该请求对应的预设连续超时次数则重新发送该请求;若在该请求对应的预设连续超时次数内收到该请求的应答,则停止重复发送该请求并将该请求的连续超时次数置为零。
9.如权利要求7或8所述的装置,其特征在于:
根据每个请求的超时次数和预设的每个请求的通信状态权重计算通信状态综合值,包括:
按照如下公式计算通信状态综合值:
其中,i为请求号,i∈[1,n],ci为请求号i对应的请求的当前的连续超时次数,wi为请求号i的通信状态权重,cw为通信状态综合值。
10.如权利要求6所述的装置,其特征在于:
所述预设阈值包括第一预设阈值和第二预设阈值;
将所述通信状态综合值与预设阈值进行比较;根据比较结果更新通信状态,包括:
若所述通信状态综合值大于第一预设阈值,则将通信状态更新为可疑;
若所述通信状态综合值大于第二预设阈值,则将通信状态更新为故障。
技术总结