发明内容
本发明要解决的技术问题是克服目前CAN总线中从机在位信息人工配置繁琐、工程可维护性差、主机无法区分从机“不在位”和“通信中断”的问题,提供一种从机在位信息自动检测方法和系统,以及,一种主机。
为了解决上述问题,本发明提供了一种从机在位信息自动检测方法,包括:
主机上电或复位后,创建空白从机注册表;
所述主机接收到从机的注册帧后,将该从机的在位信息设置为在位并保存在从机在位信息表中;同时将该从机添加到从机注册表中;
所述主机根据所述从机注册表周期性轮询已经注册的从机,如果在轮询某一从机指定次数后,未收到该从机的响应,则判断该从机通讯中断。
进一步的,上述方法还可具有以下特点,所述方法还包括,所述主机收到刷新从机在位信息指令后,清空所述从机注册表,将所述从机在位信息表中所有从机在位信息设置为不在位;所述主机接收到从机的注册帧后,将该从机的在位信息设置为在位并保存在从机在位信息表中;同时将该从机添加到从机注册表中。
进一步的,上述方法还可具有以下特点,所述方法还包括,所述主机上电或复位或收到用户的刷新从机在位信息指令后,还广播注册请求命令至总线上的所有从机。
进一步的,上述方法还可具有以下特点,所述方法还包括,
所述主机还将内存中的所述从机在位信息表保存到掉电不丢失存储介质中;
所述主机上电或复位时,还从所述掉电不丢失存储介质中读取从机在位信息表,如果读取到有效的从机在位信息表,则将所读取的从机在位信息表中设置为在位的从机加入到所述从机注册表中;如果读取到无效的从机在位信息表,则将内存中的从机在位信息表中的所有从机的在位信息设置为不在位。
进一步的,上述方法还可具有以下特点,所述从机在收到所述注册请求命令,或者,上电时,或者,第二指定时间内未收到所述主机的轮询命令时,发送所述注册帧。
进一步的,上述方法还可具有以下特点,所述方法还包括,
所述从机发送所述注册帧后,如果第一指定时间内未收到所述主机的注册确认帧,则重发注册帧,直到收到所述主机的注册确认帧。
本发明还提供一种主机,包括:初始化单元、注册单元和轮询单元,其中:
所述初始化单元用于:主机上电或复位后,创建空白从机注册表;
所述注册单元用于:接收到从机的注册帧后,将该从机的在位信息设置为在位并保存在从机在位信息表中;同时将该从机添加到从机注册表中;
所述轮询单元用于:根据所述从机注册表周期性轮询已经注册的从机,如果在轮询某一从机指定次数后,未收到该从机的响应,则判断该从机通讯中断。
进一步的,上述主机还可具有以下特点,所述初始化单元还用于:收到刷新从机在位信息指令后,清空所述从机注册表,将所述从机在位信息表中所有从机在位信息设置为不在位。
进一步的,上述主机还可具有以下特点,所述初始化单元还用于,所述主机上电或复位或收到用户的刷新从机在位信息指令后,广播注册请求命令至总线上的所有从机。
进一步的,上述主机还可具有以下特点,所述注册单元还用于,将内存中的所述从机在位信息表保存到掉电不丢失存储介质中;
所述初始化单元还用于,在所述主机上电或复位时,从所述掉电不丢失存储介质中读取从机在位信息表,如果读取到有效的从机在位信息表,则将所读取的从机在位信息表中设置为在位的从机加入到所述从机注册表中;如果读取到无效的从机在位信息表,则将内存中的从机在位信息表中的所有从机的在位信息设置为不在位。
本发明还提供一种从机在位信息自动检测系统,包括上述主机,和从机,其中:
所述从机用于,在收到所述注册请求命令,或者,上电时,或者,第二指定时间内未收到所述主机的轮询命令时,发送所述注册帧。
进一步的,上述系统还可具有以下特点,所述从机还用于,发送所述注册帧后,如果第一指定时间内未收到所述主机的注册确认帧,则重发注册帧,直到收到所述主机的注册确认帧。
本发明在不增加任何硬件成本的前提下,通过软件算法实现从机在位信息自动检测,解决了现有从机配置不灵活、人工配置繁琐、易出错、误告警等问题,实现了用户的一键操作,减少人工配置失误,提高了系统的易用性和可靠性。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明实施例提供一种从机在位信息自动检测方法,包括:
主机上电或复位后,创建空白从机注册表;
所述主机接收到从机的注册帧后,将该从机的在位信息设置为在位并保存在从机在位信息表中;同时将该从机添加到从机注册表中;
所述主机根据所述从机注册表周期性轮询已经注册的从机,如果在轮询某一从机指定次数后,未收到该从机的响应,则判断该从机通讯中断。
其中,所述主机收到刷新从机在位信息指令后,清空所述从机注册表,将所述从机在位信息表中所有从机在位信息设置为不在位,所述主机接收到从机的注册帧后,将该从机的在位信息设置为在位并保存在从机在位信息表中;同时将该从机添加到从机注册表中。
其中,所述主机上电或复位或收到用户的刷新从机在位信息指令后,还广播注册请求命令至总线上的所有从机。
所述方法还包括,所述主机还将内存中的所述从机在位信息表保存到掉电不丢失存储介质中;
所述主机上电或复位时,还从所述掉电不丢失存储介质中读取从机在位信息表,如果读取到有效的从机在位信息表,则将所读取的从机在位信息表中设置为在位的从机加入到所述从机注册表中;如果读取到无效的从机在位信息表,则将内存中的从机在位信息表中的所有从机的在位信息设置为不在位。
其中,所述从机在收到所述注册请求命令,或者,上电时,或者,第二指定时间内未收到所述主机的轮询命令时,发送所述注册帧。
其中,所述从机发送所述注册帧后,如果第一指定时间内未收到所述主机的注册确认帧,则重发注册帧,直到收到所述主机的注册确认帧。
本发明可以适用于CAN总线系统,也可以适用于其它多主式总线。下述实施例中以CAN总线为例对本发明进行说明,其它总线类似。
主机维护一张从机注册表和一张从机在位信息表,从机注册表用于主机轮询,而从机在位信息表则记录所有从机的在位信息,当从机在位信息表发生变化时,则需要保存到掉电不丢失存储介质中;
主机上电或复位时创建一张空白的从机注册表,然后从掉电不丢失存储介质载入从机在位信息表,并初始化从机注册表;
主机和从机通过注册命令交互进行从机注册,即主机收到从机的注册帧时,将在位信息表中相应从机的在位信息由“不在位”修改为“在位”,并更新从机注册表;
主机只自动根据注册命令交互情况,将从机的在位信息由“不在位”修改为“在位”,而不会自动将从机的在位信息由“在位”改为“不在位”,只有在用户的参与下,才会将从机的在位信息由“在位”改为“不在位”,即主机自动对从机注册表进行“加法”操作,而只有在用户参与的情况下才对从机注册表“减法”操作;
主机GUI界面为用户提供从机在位信息浏览和刷新操作,用户进行从机在位信息刷新操作后,主机清空注册表,将在位信息表中所有从机在位信息设置为“不在位”,然后要求所有从机重新注册。
下面进一步说明本发明。
主机维护一张从机在位信息表和一张从机注册表,从机在信息表记录所有从机的在位信息,当在位信息表发生变化时,需要保存到掉电不丢失存储介质中,从机在位信息表如图1所示,而从机注册表用于主机对从机进行轮询,从机注册表如图2所示;
主机上电或复位时创建一个空白的从机注册表,然后从掉电不丢失存储介质读取从机在位信息表,若从机在位信息表无效,则将内存中的从机在位信息表中的所有从机在位信息设置为“不在位”,若读取的从机在位信息表有效,则通过从机在位信息表初始化从机注册表,所有在位的从机都添加到从机注册表中,如图1和图2所示;
然后主机通过广播命令,下发注册请求命令,要求CAN总线上所有从机进行注册,如图3所示;
从机收到主机的注册请求命令后,发送一个注册帧,从机的注册帧中至少包含从机地址号,并等待主机的注册确认帧,若一定时间T1内没有收到主机的注册确认帧,则从机重发一个注册帧,直到收到主机的注册确认帧,才停止发送注册帧;
从机刚上电运行时或在一定时间T2内没有收到主机的轮询命令,则发送一个注册帧,并等待主机的注册确认帧,若一定时间T1内没有收到主机的注册确认帧,则从机重发一个注册帧,直到收到主机的注册确认帧,才停止发送注册帧,从机流程如图4所示;其中,T1,T2根据需要设定;
主机收到从机的注册帧后,先遍历从机注册表,如果该从机已经注册,则不再注册,否则将该从机添加到从机注册表中,并修改内存中从机在位信息表,将相应从机的在位信息设置为“在位”并保存在位信息表,然后给相应从机回应一个注册确认帧,如图5所示;
主机的GUI界面为用户提供从机在位信息浏览,便于用户确认从机在位信息的正确性;
主机GUI界面为用户提供从机在位信息刷新操作,用户进行从机在位信息刷新操作后,主机将注册表中所有从机在位信息设置为“不在位”,然后转步骤3,主机软件流程如图6所示;
主机上电并完成从机注册表初始化后,只要从机注册表不为空表,主机就会周期性轮询注册表中的所有从机。主机根据从机注册表逐一轮询已经注册的从机,若某个从机在主机多次轮询后都没有回应,则主机判断该从机“通讯中断”,如图7所示。
通过以上步骤,在设备开局时,只要CAN总线上的从机通讯正常,主机就能自动检测能到该从机的在位信息,开局之后,如果用户新增加从机,则主机也会自动更新从机注册表,完成新增从机在位信息的自动检测,如果用户减少了从机数量,只要通过GUI界面进行从机在位信息刷新操作,就可以进行所有从机的重新注册和在位信息自动检测。
下面通过一应用示例进一步说明本发明。
某公司生产的某种型号通信基站电源系统已广泛应用于全球各主要通信运营商。该电源系统由交流配电、直流配电、最多40个整流器和一个监控单元组成,监控单元通过CAN总线对整流器进行监控,原先的方案是通过在主机设置整流器数量来进行整流器在位信息配置,主机上电或复位时,根据参数中的“整流器数量”N将1至N号整流器的在位信息配置为“在位”,其它整流器的在位信息设置为“不在位”。在实际应用过程中,需要把整流器插在1至N号槽位上,如果1至N号槽位有一个或多个槽位损坏,则监控需要对参数“整流器数量”进行与实际整流器数量不相符的设置,同时监控单元还会产生误告警,例如N号槽位损坏,则需要将“整流器数量”设置为N+1,然后将N号整流器地址改为N+1,并插入N+1号槽位,把N号槽位空着,同时监控会产生N号整流器通讯中断误告警。这不仅工程维护不方便,而且产生误告警。
通过本发明的技术方案,可以很好地解决这个问题。本实施例中,监控单元为主机,整流器为从机,包括:
1,通过一个单向链表实现从机注册表,每个节点保存一个已经注册的从机地址,开辟一个40个元素的无符号字符数组,用作从机在位信息表,数组的0到39元素分别对应1到40号整流器的位信息;
上述从机注册表和从机在位信息表的格式仅为示例,可以根据需要使用其他数表实现,本发明对此不作限定。
2,主机上电或复位时创建一个空白的从机注册表,然后从掉电不丢失存储介质读取从机在位信息表,若从机在位信息表无效,则将内存中的从机在位信息表中的所有从机在位信息设置为“不在位”,若读取的从机在位信息表有效,则通过从机在位信息表初始化从机注册表,所有在位的从机都添加到从机注册表中;
3,然后主机通过广播方式,下发注册请求命令,要求CAN总线上所有从机进行注册,主机的注册请求命令帧中包含广播地址和一个注册请求命令码;
4,从机收到主机的注册请求命令后,发送一个注册帧,并等待主机的注册确认帧,若N1(比如,5)秒钟内没有收到主机的注册确认帧,则从机重发一个注册帧,直到收到主机的注册确认帧,才停止发送注册帧;其中,该注册帧中包含从机地址号和序列号,共8个字节;
5,从机刚上电运行时或连续N2(比如,30)秒钟内没有收到主机的轮询命令,则发送一个注册帧,并等待主机的注册确认帧,若5秒钟内没有收到主机的注册确认帧,则从机重发一个注册帧,直到收到主机的注册确认帧,才停止发送注册帧;
6,主机收到从机的注册帧后,先遍历从机注册表,如果该从机已经注册,则不再注册,否则将该从机添加到从机注册表中,并修改内存中的从机在位信息表,将相应从机的在位信息设置为“在位”并保存在位信息表,然后给相应从机回应一个包含从机地地址号和注册确认命令码的注册确认帧;
7,主机的GUI界面为用户提供从机在位信息浏览,便于用户确认从机在位信息的正确性;
8,主机GUI界面为用户提供从机在位信息刷新操作,用户进行从机在位信息刷新操作后,主机清空从机注册表,并将内存中的从机在位信息表中所有从机设置为“不在位”,然后转步骤3;
9,主机根据从机注册表逐一轮询已经注册的从机,若某个从机在主机连续N3(比如5)次轮询后都没有回应,则主机判断该从机“通讯中断”。
通过采用本发明后,在设备开局或设备维护过程中增加整流器,用户不需要做任何设置,监控单元自动进行了整流器在位信息自动检测,如果在维护过程中,用户拔出了整流器,只需在GUI界面上进行一个整流器在位信息刷新操作,监控单元就会重新进行整流器在位信息自动检测,从而实现了一键式维护。
本发明实施例还提供一种主机,如图8所示,包括:初始化单元、注册单元和轮询单元,其中:
所述初始化单元用于:主机上电或复位后,创建空白从机注册表;
所述注册单元用于:接收到从机的注册帧后,将该从机的在位信息设置为在位并保存在从机在位信息表中;同时将该从机添加到从机注册表中;
所述轮询单元用于:根据所述从机注册表周期性轮询已经注册的从机,如果在轮询某一从机指定次数后,未收到该从机的响应,则判断该从机通讯中断。
其中,所述初始化单元还用于,收到刷新从机在位信息指令后,清空所述从机注册表,将所述从机在位信息表中所有从机在位信息设置为不在位。
其中,所述初始化单元还用于,所述主机上电或复位或收到用户的刷新从机在位信息指令后,广播注册请求命令至总线上的所有从机。
其中,所述注册单元还用于,将内存中的所述从机在位信息表保存到掉电不丢失存储介质中;
所述初始化单元还用于,在所述主机上电或复位时,从所述掉电不丢失存储介质中读取从机在位信息表,如果读取到有效的从机在位信息表,则将所读取的从机在位信息表中设置为在位的从机加入到所述从机注册表中;如果读取到无效的从机在位信息表,则将内存中的从机在位信息表中的所有从机的在位信息设置为不在位。
本发明实施例还提供一种从机,所述从机用于,在收到所述注册请求命令,或者,上电时,或者,第二指定时间内未收到所述主机的轮询命令时,发送所述注册帧。
其中,所述从机还用于,发送所述注册帧后,如果第一指定时间内未收到所述主机的注册确认帧,则重发注册帧,直到收到所述主机的注册确认帧。
本发明实施例还提供一种从机在位信息自动检测系统,包括上述主机和从机。
本发明维护一张从机在位信息表和一个从机注册表,从机在位信息表保存在掉电不丢失存储介质中,从机通过回应主机的注册请求帧或主动发送从机注册帧,实现从机在位注册。在主机的轮询过程中,主机只对注册表中的从机进行轮询,如果主机连续多次收不到从机的回应包,则认为从机通讯中断,而不会将该从机的在位信息由“在位”修改为“不在位”,对于没有注册的从机,主机认为该从机不在位,从而区分了从机不在位和通讯中断情况。而现有技术是在主机的轮询过程中,只要主机收不到从机的回应包,则认为从机不在位或通讯中断,并不能区分从机不在位和通讯中断情况。
综上所述,采用本发明可以在不增加任何硬件成本的情况下,通过软件算法就可以很好地解决主从式总线中从机在位信息自动配置问题,大大减少设备开局和工程维护的工作量,提高系统可靠性和易用性,进一步提高用户满意度。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。