发明内容
有鉴于此,本发明的目的在于提供一种单主通信控制总线主设备冗余切换的方法,以实现主设备冗余切换。
为实现上述目的,本发明提供如下技术方案:
一种单主通信控制总线主设备冗余切换方法,主设备周期诊断总线通信状态,获取表征通信正常程度的诊断结果,所述主设备包括主用主设备和备用主设备;
所述方法包括:所述主用主设备获取所述备用主设备的诊断结果;
所述主用主设备根据自身的诊断结果和所述备用主设备的诊断结果,决定是否进行冗余切换。
优选的,所述主用主设备获取所述备用主设备的诊断结果具体包括:当冗余通道通讯正常时,所述主用主设备获取所述备用主设备的诊断结果。
优选的,所述诊断结果包括正常通信状态、可能故障状态和故障状态;
所述正常通信状态,是所述主用主设备或备用主设备在当前周期内接收到总线数据时所设置的;
所述可能故障状态,是所述备用主设备在当前周期内未能接收到总线数据,并且上一周期自身的诊断结果为正常通信状态或可能故障状态时所设置的;
所述故障状态,是所述备用主设备在当前周期内未接收到总线数据,并且上一周期自身的诊断结果为故障状态时所设置的,或者,是所述主用主设备在当前周期内未接收到总线数据时所设置的。
优选的,所述主用主设备根据自身诊断结果和所述备用主设备诊断结果,决定是否进行冗余切换具体包括:
所述主用主设备将自身诊断结果和所述获取到的备用主设备诊断结果分别转换为相应的故障等级,所述故障等级的等级越高表示故障越严重;
所述主用主设备将自身的故障等级和所述备用主设备的故障等级进行比较,并在自身的故障等级高于所述备用主设备的故障等级时,启动冗余切换。
优选的,所述故障等级包括0级故障等级,1级故障等级和2级故障等级;
所述正常通信状态与所述0级故障等级相对应;
所述可能故障状态与所述1级故障等级相对应;
所述故障状态与所述2级故障等级相对应。
优选的,所述冗余切换包括:主用主设备与备用主设备之间的工作状态与备用状态的切换。
优选的,所述冗余切换是通过主用主设备与备用主设备间的冗余通道进行的。
优选的,所述故障是由内部硬件故障和外部总线故障中的至少一个引起的;
所述可能故障是由内部硬件故障和外部总线故障中的至少一个引起的。
从上述的技术方案可以看出,在本发明实施例中,主用主设备和备用主设备分别周期诊断总线通信状态,并分别获得表征通信正常程度的诊断结果。主用主设备获取备用主设备诊断结果,并根据自身诊断结果和备用主设备诊断结果,决定是否进行冗余切换,从而实现了主设备冗余切换。
进一步的,主用主设备将自身的诊断结果和所述备用主设备诊断结果分别转换为相应的故障等级,并将自身的故障等级同备用主设备的故障等级进行比较,若自身的故障等级高于备用主设备的故障等级,则启动冗余切换,从而提供了冗余切换的具体方式。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的单主通信控制总线的工作模型如图1所示,单主通信控制总线上0#地址和1#地址是1:1冗余配置的主设备。在其它单主通信控制总线的工作模型中,还可存在两个以上的主设备。无论包括多少个主设备,任何时刻至多有一个主设备作为主用主设备(图1中标示有“工作”的主设备为主用主设备),至于其他主设备则作为备用主设备(图1中标示有“备用”的主设备为备用主设备)。更具体的,主用主设备承担总线调度和管理职责,可主动发起总线通信;而备用主设备,随时准备切换至工作状态,接替原来主用主设备承担总线调度和管理职责,也即完成冗余切换(主用主设备和备用主设备可通过冗余通道交互信息并完成冗余切换)。至于,单主通信控制总线上的从设备,其受主设备调度和管理,不具备转化为总线主设备的权利。
为实现主设备冗余切换,本发明实施例所提供的单主通信控制总线主设备冗余切换的方法,所基于的前提是:主用主设备和备用主设备分别周期诊断总线通信状态,并分别获得表征通信正常程度的诊断结果。基于上述前提,参见图2,上述方法可至少包括以下步骤:
S201:主用主设备获取备用主设备诊断结果;
步骤S201的具体实现方式可有多种。例如,上述主用主设备可通过冗余通道向备用主设备发送诊断结果获取指令。备用主设备接收到该指令后,将自身诊断结果发送给主用主设备;或者,备用主设备在获得自身诊断结果后,可主动将其发送给主用主设备。
S202:主用主设备根据自身诊断结果和备用主设备的诊断结果,决定是否进行冗余切换。
由上可见,在上述实施例中,主用主设备和备用主设备分别周期诊断总线通信状态,并分别获得表征通信正常程度的诊断结果。主用主设备获取备用主设备的诊断结果,决定是否进行冗余切换,从而实现了主设备冗余切换。
在本发明其它实施例中,上述所有实施例中的“主用主设备获取备用主设备的诊断结果”可具体包括:当冗余通道通讯正常时,主用主设备获取备用主设备的诊断结果。需要指出的是,冗余通道可以为单独的通信通道,也可以与单主通信总线共用通信通道。
如图1所示,冗余通道是位于“主用主设备”和“备用主设备”之间的通道,可用于交互信息以完成冗余切换。冗余通道可以是串口或者以太网,冗余通道所采用的通信协议可以是TCP/IP协议。
在本发明其它实施例中,上述所有实施例中的诊断结果可包括正常通信状态、可能故障状态和故障状态。
上述可能故障和故障均可由内部硬件故障和外部总线故障中的至少一个所引起。
主设备如何设置诊断结果的流程可参见图3,其可包括以步骤:
S301:判断自身当前是否为主用主设备,如果是,则跳转至S302;如果否,则跳转至S311;
具体的,主设备可根据当前自身是否具备主动发起通讯的权利,判断自身是否为主用主设备。
S302:判断在当前周期内是否接收到总线数据,如果是则跳转至S303,否则跳转至S304;
S303:将诊断结果设置为“正常通信状态”(图3中使用“正常通信”表示“正常通信状态”);
S304:将诊断结果设置为“故障状态”(图3中使用“故障”表示“故障状态”);
S311:判断在当前周期内能否接收到总线数据,如果是则跳转至S303,否则跳转至S312;
S312:获取上周期诊断结果;
具体的,主设备将记录自己每周期的诊断结果,从而可以查询出(也即获取到)上周期的诊断结果。或者,也可将每个主设备每一周期的诊断结果存储在存储介质上,主设备可通过访问存储介质获取自身上一周期的诊断结果。
S313:判断上周期总线诊断结果是否为“故障状态”,如果是则跳转至S314,否则跳转至S315;
S314:将诊断结果设置为“故障状态”;
S315:将诊断结果设置为“可能故障状态”。
根据图3所披露的步骤可知:
正常通信状态,是主用主设备或备用主设备在当前周期内接收到总线数据时所设置的;
可能故障状态,是备用主设备在当前周期内未能接收到总线数据,并且上一周期自身的诊断结果为正常通信状态或可能故障状态时所设置的;
故障状状态,是备用主设备在当前周期内未接收到总线数据,并且上一周期自身的诊断结果为故障状态时所设置的,或者,是主用主设备在当前周期内未接收到总线数据时所设置的。
下面,将分别对主用主设备和备用主设备的诊断结果的迁移进行介绍。
前已述及,备用主设备不具备主动发起通讯的权利,因此其总线通信状态诊断受限制,比如,若主用主设备出现内部硬件故障而无法发起通讯,则备用主设备将无法如期接收到总线数据,因此,备用主设备的诊断结果是相对不准确的。为此,引入了“可能故障状态”。
基于上图3所示的流程,备用主设备诊断结果的迁移可参见图4(在图4和5中,“通信正常”代表“在当前周期内接收到总线数据”,而“通信故障”代表“在当前周期内未接收到总线数据”),可见:
假设,前一周期诊断结果为“正常通信状态”,如在当前周期内接收到总线数据,则备用主设备将诊断结果维持在“正常通信状态”,否则,备用主设备将诊断结果转换至“可能故障状态”;
假设,前一周期诊断结果为“可能故障状态”,如在当前周期内接收到总线数据,则备用主设备将诊断结果转换至“正常通信状态”,否则,备用主设备将诊断结果维持在“可能故障状态”;
假设,前一周期诊断结果为“故障状态”,如在当前周期内接收到总线数据,则备用主设备将诊断结果转换至“正常通信状态”,否则,备用主设备将诊断结果维持在“故障状态”。
需要说明的是,备用主设备的前一周期诊断结果之所以为“故障状态”,是因为该备用主设备在前一周期原本是作为主用主设备的,在作为主用主设备时,其对应的诊断结果为“故障状态”,因此在经过冗余切换转变为备用主设备后,保留了“故障状态”的诊断结果。
另外,还有一种特殊情况,如果主用主设备通过周期性诊断后发现,在当前周期内未接收到总线数据的原因不是由于备用主设备的问题,而是其它模块的问题,则主用主设备可通过冗余通道通知备用主设备从“故障状态”退回到“可能故障状态”。
在介绍过备用主设备后,下面将介绍主用主设备。基于上图3所示的流程,主用主设备通信诊断结果的迁移可参见图5。可见:
假设,前一周期诊断结果为“正常通信状态”,如在当前周期内可接收到总线数据,则主用主设备将诊断结果维持在“正常通信状态”,否则,将诊断结果转换至“故障状态”;
假设,前一周期诊断结果为“故障状态”,如在当前周期内未接收到总线数据,则将诊断结果维持在“故障状态”,否则,则将诊断结果转换至“正常通信状态”;
假设,前一周期诊断结果为“可能故障状态”,如在当前周期内未接收到总线数据,则将诊断结果转换至“故障状态”,否则,将诊断结果转换至“正常通信”状态。需要说明的是,主用主设备的前一周期诊断结果之所以为“可能故障状态”,是因为该主用主设备在前一周期原本是作为备用主设备的。在作为备用主设备时,其对应的诊断结果为“可能故障状态”,因此在经过冗余切换转变为主用主设备后,保留了“可能故障状态”的诊断结果。
同时需要注意的是,主用主设备具备主动发起通信的权利,其总线通信状态检测不受限制,因此,检测结果是准确的。对于主用主设备而言,上述“正常通信状态”和“故障状态”这两个状态为稳态,“可能故障状态”为暂态(备用主设备转换为主用主设备后残留)。
综上,在单主通信控制总线主设备冗余配置情况下,本发明实施例针对备用主设备对总线通信状态诊断受限的情况,在诊断结果中引入“可能故障”状态,该状态表明一种未得到确认的诊断结果,该诊断结果的严重程度介于“正常通信”和“故障”之间。也即,如按严重程度由高到低排序应为:正常通信状态、可能故障状态、故障状态。或者说,故障状态差于可能故障状态,而可能故障状态差于正常通信状态。
基于此,主用主设备在接收到备用主设备发送的诊断结果后,可将自身诊断结果同备用主设备的诊断结果进行比较,如果自身诊断结果差于备用主设备的诊断结果,则进行冗余切换;否则不进行冗余切换。比如,假设主用主设备的诊断结果为故障状态,而备用主设备的诊断结果为可能故障状态,则进行冗余切换。
另外,先假定主设备A作为主用主设备在某一周期的诊断结果为故障状态,而作为备用主设备的主设备B在该周期的诊断结果为可能故障状态或正常通信状态,则进行冗余切换,主设备A切换为备用主设备,主设备B主用主设备切换为主用设备。
之后,主设备A以备用主设备的角色经过一次总线通信状态诊断后,如仍未接收到总线数据,则主设备A的诊断结果维持在故障状态。而在此时,如果作为主用主设备的主设备B的诊断结果也为故障状态,则由于二者的诊断结果相同,因此,即使作为主用主设备的主设备B处于故障状态,其也不会与主设备A再次进行冗余切换。从而可以避免频繁切换。
同时由于本发明实施例中可能故障和故障均可由内部硬件故障和外部总线故障中的至少一个所引起,也即诊断结果不区分内部硬件故障和外部总线故障,因此无需搭建模块总线硬件检测电路,只需通过软件即可实现,可以节省成本。
在本发明其他实施例中,还可将上述诊断结果转换为相应的故障等级。比如,故障等级可包括0级故障等级、1级故障等级和2级故障等级,故障等级越高表示故障越严重(也即,由0至2级,故障等级依次增高,相应的故障严重程度顺次递增)。其中,上述“正常通信状态”与0级故障等级相对应,“可能故障状态”与1级故障等级相对应,“故障等级”与2级故障等级相对应。
基于上述故障等级,在本发明其它实施例中,上述单主通信控制总线主设备冗余切换方法的具体步骤如下:
S601:主用主设备判断冗余通道的通信是否正常,如果是则跳至S602,如果否,则跳转到S606;
步骤S601的具体实现方式可有多种。例如,主用主设备通过冗余通道发送测试指令给备用主设备,备用主设备收到该指令,同时发送确认指令给主用主设备,如果主用主设备接收到该确认指令,判定冗余通道的通信是正常的,否则判定冗余通道的通信是不正常的。
S602:主用主设备获取备用主设备的诊断结果;
至于获取备用主设备的诊断结果的具体方式,可参见前述步骤S201的相关描述,在此不作赘述。
S603:主用主设备将自身的诊断结果和备用主设备的诊断结果分别转换为相应的故障等级。
S604:主用主设备判断自身的故障等级是否高于备用主设备的故障等级,是则跳转至S605,否则跳转至S606;
S605:进行冗余切换。
更具体的,冗余切换可包括主用主设备与备用主设备之间的工作状态与备用状态的切换。
S606:不进行冗余切换。
需要说明的是,步骤S603-S606是前述步骤S202中如何“根据自身诊断结果和备用主设备的诊断结果,决定是否进行冗余切换”的另一具体实现方式。
在本实施例中,上述步骤S601-S606通过将诊断结果转换为故障等级,并用数字来表示各种故障以及故障的严重程度,这样有利于程序处理。
此外,也可将与正常通信状态对应的故障等级、与可能故障状态对应的故障等级和与故障状态对应的故障等级直接作为诊断结果。这样,主用主设备自身的诊断结果,以及所获取到的备用主设备的诊断结果将直接为故障等级,此时,可免去上述步骤S603,由步骤S602直接进入步骤S604。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。