主设备竞争方法、电子设备以及计算机可读存储介质与流程

未命名 08-05 阅读:83 评论:0


1.本技术涉及通信技术领域,尤其涉及一种主设备竞争方法、电子设备以及计算机可读存储介质。


背景技术:

2.在当前的通信方案中,有许多通信方案需要在参与通信的多个设备间选举出主设备,然后才能正常通信。例如,can(controller area network,控制器局域网络)总线是一种能有效支持分布式实时控制的串行通信网络。can总线具有高可靠性、高传输速率、良好的勘误检错能力和低廉的成本优势,逐渐成为应用最广泛的现场总线之一。在当前的can总线通信方案中,接入can总线的设备需要相互通信以确定主设备,再由主设备为各个从设备分配动态地址。这种确定主设备的方式需要设备相互通信,参与竞争的各个设备均需要接收到其他设备发送的信息后,才可以决策出主设备,效率较低。


技术实现要素:

3.基于此,本技术提供一种主设备竞争方法、电子设备以及计算机可读存储介质,能够高效率确定主设备。
4.第一方面,本技术提供一种主设备竞争方法,应用于第一设备,所述方法包括:
5.当所述第一设备处于广播态时,定时发送第一广播帧并开始计时,所述第一广播帧携带所述第一设备的第一设备标识;
6.若在第一预设时长内,未收到携带有所述第一设备标识的第一地址分配帧,且,未收到第二设备广播的第二广播帧或收到的第二广播帧携带的第二设备标识不满足第一条件,则确定所述第一设备为主设备,将所述第一设备的动态地址设置为预设的主设备地址,控制所述第一设备进入连接态;
7.其中,所述第一条件为所述第二设备标识大于所述第一设备标识,或者,所述第一条件为所述第二设备标识小于所述第一设备标识。
8.第二方面,本技术提供一种主设备竞争方装置,应用于第一设备,所述装置包括:
9.广播模块,用于当所述第一设备处于广播态时,定时发送第一广播帧并开始计时,所述第一广播帧携带所述第一设备的第一设备标识;
10.竞选模块,用于若在第一预设时长内,未收到携带有所述第一设备标识的第一地址分配帧,且,未收到第二设备广播的第二广播帧或收到的第二广播帧携带的第二设备标识不满足第一条件,则确定所述第一设备为主设备,将所述第一设备的动态地址设置为预设的主设备地址,控制所述第一设备进入连接态;
11.其中,所述第一条件为所述第二设备标识大于所述第一设备标识,或者,所述第一条件为所述第二设备标识小于所述第一设备标识。
12.第三方面,本技术提供一种电子设备,所述电子设备包括通信电路、处理器和存储器,所述通信电路用于通信,所述存储器用于存储计算机程序;所述处理器用于执行所述计
算机程序并在执行所述计算机程序时,实现如上所述的主设备竞争方法。
13.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的主设备竞争方法。
14.本技术实施例由于将第一设备分为两个状态:广播态和连接态,第一设备处于广播态时定时发送携带自身设备标识的广播帧并开始计时;若在第一预设时长内未收到携带有自身设备标识的第一地址分配帧,说明总线上当前可能还未竞争出主设备,未收到第二设备处于广播态时发送的广播帧,则说明总线上当前可能只有一个第一设备,若在第一预设时长内收到第二设备处于广播态时发送的广播帧且该广播帧携带的第二设备的设备标识和第一设备的设备标识不满足第一条件,则说明总线上当前可能的所有设备中第一设备的设备标识最大或者最小,因此,如果确定总线上当前可能还未竞争出主设备且可能只有一个第一设备或者总线上当前可能存在的所有设备中第一设备的设备标识最大或者最小,则将第一设备确定主设备,将预设的主设备地址作为第一设备的动态地址,控制第一设备进入连接态。
15.相比较于相关技术中设备需要相互通信,参与竞争的各个设备均需要接收到其他设备发送的信息后才可以确定主设备的方式,本技术实施例确定主设备的方式,第一设备通过发送一个广播帧并开始计时,在预设时长内通过未收到针对自身设备的地址分配帧及未收到第二设备的广播帧或收到第二设备的广播帧但第二设备标识不满足第一条件,则确定自身为主设备,并不需要第一设备接收到总线上所有其他设备反馈的信息,只需要发送广播帧并计时,不需要第一设备无限等待其他设备的反馈,因此能够高效快速确定主设备,提高通信效率。
16.例如:设备a在线的时候,总线上还有设备b在线。在某一时刻,总线上新增设备c,按照相关技术中确定主设备的方式,三个设备要相互通信各自接收其他两个设备的信息后才可以确定谁是主设备,这个过程所需要一定的时间,且设备a和设备b需要停止正常的业务通信,在三个设备之间确定出主设备之后,设备a和设备b才能在总线上进行正常的业务通信。也即是说,即使设备a和设备b之间已经决策出主设备,在接入新的设备c时,设备a和设备b都需要停止业务通信,等重新决策出新的主设备后,才可以进行正常的业务通信,对正常的业务通信造成较大的影响。而且,在这种方案中,设备a、设备b和设备c需要进行多轮通信以交互各自的信息,各个设备需要接收到其他所有设备的信息后,才可以决策出新的主设备,效率低下。
17.而在同样的场景中,如果采用本技术实施例提供的方法,在新接入设备c之后,设备c可以通过发送广播帧并计时的方式,无论是否接收到其他设备发送的广播帧或地址分配帧,均可以在小于或等于预设时长的时间内,确定设备c是否为主设备,能够高效快速确定主设备,提高设备之间的通信效率。而且,假设总线上已有主设备和从设备,本方案仅需要由主设备向设备c发送地址分配帧,从设备并不参与主设备竞争,因此,不影响主设备和从设备,以及从设备相互之间的业务通信,保障正常的业务通信的正常进行。
附图说明
18.图1是本技术一实施例提供的主设备竞争方法的流程示意图;
19.图2是本技术另一实施例提供的主设备竞争方法的流程示意图;
20.图3是本技术又一实施例提供的主设备竞争方法的流程示意图;
21.图4是本技术又一实施例提供的主设备竞争方法的流程示意图;
22.图5是本技术又一实施例提供的主设备竞争方法的流程示意图;
23.图6是本技术又一实施例提供的主设备竞争方法的流程示意图;
24.图7是本技术又一实施例提供的主设备竞争方法的流程示意图;
25.图8是本技术又一实施例提供的主设备竞争方法的流程示意图;
26.图9是本技术又一实施例提供的主设备竞争方法的流程示意图;
27.图10是本技术又一实施例提供的主设备竞争方法的流程示意图;
28.图11是本技术一实施例提供的设备的三种状态及其转变的示意图;
29.图12是本技术又一实施例提供的主设备竞争方法的流程示意图;
30.图13是本技术一实施例提供的电子设备的框图。
具体实施方式
31.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
32.还应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
33.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
34.在当前的通信方案中,有许多通信方案需要在参与通信的多个设备间选举出主设备,然后才能正常通信。
35.例如,can总线是一种能有效支持分布式实时控制的串行通信网络。can总线具有高可靠性、高传输速率、良好的勘误检错能力和低廉的成本优势,逐渐成为应用最广泛的现场总线之一。在当前的can总线通信方案中,接入can总线的设备需要相互通信以确定主设备,再由主设备为各个从设备分配动态地址。这种确定主设备的方式需要设备相互通信,参与竞争的各个设备均需要接收到其他设备发送的信息后,才可以决策出主设备,效率较低。
36.本技术实施例由于将第一设备分为两个状态:广播态和连接态,第一设备处于广播态时定时发送携带自身设备标识的广播帧并开始计时;若在第一预设时长内未收到携带有自身设备标识的第一地址分配帧,说明总线上当前可能还未竞争出主设备,未收到第二设备处于广播态时发送的广播帧,则说明总线上当前可能只有一个第一设备,若在第一预设时长内收到第二设备处于广播态时发送的广播帧且该广播帧携带的第二设备的设备标识和第一设备的设备标识不满足第一条件,则说明总线上当前可能的所有设备中第一设备的设备标识最大或者最小,因此如果确定总线上当前可能还未竞争出主设备且可能只有一个第一设备或者总线上当前可能的所有设备中第一设备的设备标识最大或者最小,则将第一设备确定主设备,将预设的主设备地址作为第一设备的动态地址,控制第一设备进入连接态。
37.相比较于相关技术中设备需要相互通信,参与竞争的各个设备均需要接收到其他设备发送的信息后才可以确定主设备的方式,本技术实施例确定主设备的方式,第一设备发送一个广播帧并开始计时,在预设时长内通过未收到针对自身设备的地址分配帧及未收到第二设备的广播帧或收到第二设备的广播帧但第二设备标识不满足第一条件,确定自身为主设备,并不需要第一设备和总线上所有其他设备相互通信,只需要发送广播帧并计时,不需要第一设备无限等待,因此能够高效快速确定主设备,提高通信效率。
38.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
39.参见图1,图1是本技术一实施例提供的主设备竞争方法的流程示意图,该方法应用于第一设备,第一设备可以是can总线上其中一个设备。
40.该方法包括:步骤s101和步骤s102。
41.步骤s101:当第一设备处于广播态时,定时发送第一广播帧并开始计时,第一广播帧携带第一设备的第一设备标识。
42.在步骤s101中,设备处于广播态时不能与其他设备进行业务通信,需要主设备为其分配动态地址,转为连接态后才能与其他设备进行业务通信。设备处于广播态时可以发送广播帧,也可以接收can总线上其他设备的广播帧(说明can总线上当前可能还未确定哪个设备是主设备),也可以在发送广播帧之后接收can总线上主设备发送的地址分配帧(说明can总线上当前已确定出主设备)。广播帧的作用可以用于通知其他设备发送该广播帧的设备目前处于广播态,广播帧携带发送该广播帧的设备的设备标识,设备标识用于唯一标识设备,因此广播帧携带自身设备的设备标识,收到该广播帧的设备能够获知哪个设备处于广播态。
43.当第一设备处于广播态时,定时发送第一广播帧,通过重复发送第一广播帧的方式,能够有助于提高其他设备收到第一广播帧的概率;发送第一广播帧后开始计时,能够有助于在一定时长范围内,快速确定总线上的设备以及设备所处状态,以及,有助于快速确定第一设备是否能够成为主设备。
44.can总线上的设备可能不会同步在线,即使设备在线,有些设备也可能没有与其他设备进行业务通信的需求。在一些实施例中,可以将设备的初始化状态称为空闲态,处于空闲态的设备虽然在can总线上但目前可能没有与其他设备进行业务通信需求,不参与主设备竞争,也可以视为不在线。
45.处于空闲态的设备可以转为处于广播态的设备。通过区分设备的空闲态和广播态,能够将一部分处于空闲态的设备排除在竞争主设备之外,总线上处于广播态的设备越少,竞争出主设备的时间越短,因此通过这种方式可以缩短确定主设备的时间。
46.在另一些实施例中,也可以不设置空闲态,设置广播态和连接态。
47.步骤s102:若在第一预设时长内,未收到携带有第一设备标识的第一地址分配帧,且,未收到第二设备广播的第二广播帧或收到的第二广播帧携带的第二设备标识不满足第一条件,则确定第一设备为主设备,将第一设备的动态地址设置为预设的主设备地址,控制第一设备进入连接态;其中,第一条件为第二设备标识大于第一设备标识,或者,第一条件为第二设备标识小于第一设备标识。
48.在步骤s102中,第一预设时长可以根据需求进行预先设置。第一预设时长越短,可
以更快确定主设备,通信效率会更高。此外,第一预设时长也不可以过短,当第一预设时长过短时,其他设备可能来不及向第一设备发送信息,影响第一设备的决策结果的准确性。因此,在实际的应用场景中,可以根据实际的需求选择合适的第一预设时长,提高通信效率,且保障第一设备的决策结果的准确性。
49.地址分配帧是处于连接态的主设备发送的,主设备在收到广播帧后,如果确定发送广播帧的设备不满足成为主设备的条件,则主设备可以为发送该广播帧的设备分配动态地址,并将该设备的设备标识和为该设备分配的动态地址携带在地址分配帧中返回给该设备。
50.由于第一设备已经发送第一广播帧,在第一预设时长内,如果第一设备未收到携带有第一设备标识的第一地址分配帧,说明当前可能没有确定出主设备,因此第一设备也可以竞争主设备。
51.第一设备竞争主设备时,可能有两种情况:第一种情况是如果在第一预设时长内第一设备未收到第二设备广播的第二广播帧,说明当前can总线上可能只有第一设备处于广播态,那么这种情况下,第一设备可以直接确定自身为主设备;第二种情况是在第一预设时长内第一设备接收到了第二设备广播的第二广播帧,但是第二广播帧携带的第二设备标识不满足第一条件。第一条件可以为第二广播帧携带的第二设备标识不大于第一设备标识,或者,第一条件可以为第二广播帧携带的第二设备标识不小于第一设备标识。如果第二广播帧携带的第二设备标识不满足第一条件,那么第一设备可以直接确定自身为主设备。
52.简单来说不论在哪一种情况下,确定主设备的条件可以是在总线上所有在线的设备中,主设备的设备标识最大或者最小(在当前可能只有第一设备在线的情况下,第一设备的设备标识是最大也是最小,因此第一设备为主设备)。相应的,当选举主设备的原则是选举设备标识最大的设备作为主设备时,上述第一条件可以为第二设备标识大于第一设备标识;当选举主设备的原则是选举设备标识最小的设备作为主设备时,上述第一条件可以为第二设备标识小于第一设备标识。
53.第一设备确定自身为主设备后将第一设备的动态地址设置为预设的主设备地址,并控制第一设备进入连接态。
54.相比较于相关技术中设备需要相互通信,参与竞争的各个设备均需要接收到其他设备发送的信息后才可以确定主设备的方式,本技术实施例确定主设备的方式,第一设备通过发送广播帧并开始计时,在第一预设时长内通过未收到针对自身设备的地址分配帧及未收到第二设备的广播帧或收到第二设备的广播帧但第二设备标识不满足第一条件,则确定自身为主设备,并不需要第一设备接收到总线上所有其他设备反馈的信息,只需要发送广播帧并计时,不需要第一设备无限等待其他设备的反馈,因此能够高效快速确定主设备,提高通信效率。
55.例如:设备a在线的时候,总线上还有设备b在线。在某一时刻,总线上新增设备c,按照相关技术中确定主设备的方式,三个设备要相互通信各自接收其他两个设备的信息后才可以确定谁是主设备,这个过程所需要一定的时间,且设备a和设备b需要停止正常的业务通信,在三个设备之间确定出主设备之后,设备a和设备b才能在总线上进行正常的业务通信。也即是说,即使设备a和设备b之间已经决策出主设备,在接入新的设备c时,设备a和设备b都需要停止业务通信,等重新决策出新的主设备后,才可以进行正常的业务通信,对
正常的业务通信造成较大的影响。而且,在这种方案中,设备a、设备b和设备c需要进行多轮通信以交互各自的信息,各个设备需要接收到其他所有设备的信息后,才可以决策出新的主设备,效率低下。
56.而在同样的场景中,如果采用本技术实施例提供的方法,在新接入设备c之后,设备c可以通过发送广播帧并计时的方式,无论是否接收到其他设备发送的广播帧或地址分配帧,均可以在小于或等于预设时长的时间内,确定设备c是否为主设备,能够高效快速确定主设备,提高设备之间的通信效率。而且,假设总线上已有主设备和从设备,本方案仅需要主设备确定是否向设备c发送地址分配帧,从设备并不参与主设备竞争,因此,不影响主设备和从设备,以及从设备相互之间的业务通信,保障正常的业务通信的正常进行。很显然本技术实施例中重新确定主设备的方式会比相关技术中根据多个设备相互通信后得到的信息重新确定主设备的过程要简单、快速、高效。
57.通过这种方式,本技术实施例根据在线的设备的动态情况能够使得竞争主设备的过程成为一个动态过程,而不必等待所有在线设备同时参与交互,因此能够高效快速确定主设备,提高通信效率。
58.在一些实施例中,该方法还可以包括:步骤s103,如图2所示。
59.步骤s103:在第一设备处于连接态时,定时发送心跳帧,心跳帧携带第一设备的动态地址和第一设备标识;心跳帧用于通知其他设备第一设备处于连接态。
60.在步骤s103中,不管第一设备是主设备还是从设备(第一设备作为从设备定时发送心跳帧图未示出),第一设备处于连接态时,可以进行正常的业务通信,但是其他设备不知道第一设备当前处于连接态,因此第一设备可以定时发送心跳帧,以通知其他设备第一设备处于连接态,心跳帧携带第一设备的动态地址和第一设备标识,其中第一设备的动态地址用于其他设备与第一设备进行通信。
61.在一些实施例中,步骤s102中,在确定第一设备为主设备,将第一设备的动态地址设置为预设的主设备地址,控制第一设备进入连接态之后,还可以包括:步骤s104和步骤s105,如图3所示。
62.步骤s104:在第一设备为主设备时,若接收到第二设备广播的第二广播帧,且第二广播帧携带的第二设备标识不满足第一条件,则为第二设备分配动态地址。
63.在步骤s104中,由于第一设备是在自身为主设备时收到的第二设备的第二广播帧,因此第二设备可能没有参与到之前的第一设备所参与的主设备竞争过程,那么在第二广播帧携带的第二设备标识不满足第一条件的情况下(即在当前包括第一设备、第二设备在内的设备中第二设备标识并不是最大或最小),说明第二设备在当前包括第一设备、第二设备在内的设备中不具备成为主设备的条件,第一设备在当前包括第一设备、第二设备在内的设备中依然是主设备,因此可以为第二设备分配动态地址。
64.步骤s105:向第二设备发送第二地址分配帧,第二地址分配帧携带第二设备的第二设备标识和为第二设备分配的动态地址。
65.第一设备向第二设备分配动态地址后,将第二设备的第二设备标识和为第二设备分配的动态地址携带在第二地址分配帧中,将第二地址分配帧发送给第二设备。
66.在一些实施例中,步骤s101中,在定时发送第一广播帧并开始计时之后,该方法还可以包括:步骤s106,如图4所示。
67.步骤s106:若在第一预设时长内接收到携带有第一设备标识、为第一设备分配的动态地址的第一地址分配帧,则确定第一设备为从设备,将第一地址分配帧携带的动态地址作为第一设备的动态地址,控制第一设备进入连接态。
68.在步骤s106中,如果在第一预设时长内,第一设备收到携带有第一设备标识、为第一设备分配的动态地址的第一地址分配帧,说明在包括第一设备在内的多个设备已经竞争出主设备,主设备是其他设备。
69.因为第一设备是在发出第一广播帧后开始计时的,第一设备收到第一地址分配帧,可以说明主设备收到第一设备的第一广播帧。该主设备根据收到的第一广播帧,为该第一设备分配动态地址,并向第一设备返回携带有第一设备标识、为第一设备分配的动态地址的第一地址分配帧。
70.第一设备收到第一地址分配帧后即可确定自身为从设备,将第一地址分配帧携带的动态地址设置为自己的动态地址,即可进行正常的业务通信,因此第一设备可以进入连接态。通过这种方式,能够使第一设备在第一预设时长内获知自身为从设备并获取到动态地址,进入连接态。
71.在一些实施例中,该方法还可以包括:步骤s107,如图5所示。
72.步骤s107:在第一设备为从设备时,若在第二预设时长内未接收到携带有主设备地址的心跳帧,且接收到的心跳帧所携带的第三设备标识均不满足第二条件,则确定第一设备为主设备,将第一设备的动态地址替换为预设的主设备地址;其中,第二条件为第三设备标识大于第一设备标识,或者,第二条件为第三设备标识小于第一设备标识。
73.如上所述,当总线上存在处于连接态的主设备时,主设备可以定时发送携带有主设备地址的心跳帧。总线上其他处于连接态的从设备可以通过主设备发送的心跳帧,确定主设备在线。
74.但是,当主设备离线,或者退出主设备时,主设备会停止发送相应的心跳帧,总线上的其他从设备无法接收到主设备发送的心跳帧,总线上的其他从设备可以重新竞争主设备。因此,当第一设备为从设备时,如果在第二预设时长内,没有接收到携带有主设备地址的心跳帧,则表示主设备可能离线了。此时,如果第一设备在第二预设时长内接收到的心跳帧所携带的第三设备标识均不满足第二条件,则表示第一设备可能是当前在线的设备中,设备标识最大或最小的设备,所以,第一设备可以确定本设备为主设备,将第一设备的动态地址替换为预设的主设备地址。
75.上述第二条件可以为第三设备标识大于第一设备标识,或者,第二条件为第三设备标识小于第一设备标识。
76.通过这种方式,当经过一定时间的动态竞争,能够在主设备离线或退出主设备时,及时从总线上的从设备中选出新的主设备。此时,作为从设备的第一设备有可能竞争成为主设备。
77.例如:假设确定主设备的原则是选择设备标识最小的设备作为主设备。设备a为从设备,在第二预设时长内未收到主设备d的心跳帧,设备a在第二预设时长内接收到设备e和设备f的心跳帧,且设备e和设备f的心跳帧中的设备标识都比设备a的设备标识大,所以,设备a可以确定自己的设备标识是最小的,设备a可以将本设备确定为主设备,将本设备的动态地址替换为预设的主设备地址。
78.在一些实施例中,该方法还可以包括:步骤s108,如图6和图7。
79.步骤s108:在第一设备为主设备时,若接收到携带有第四设备标识的心跳帧,且第四设备标识满足第三条件时,清除第一设备的动态地址,控制第一设备进入广播态;其中,第三条件为第四设备标识大于第一设备标识,或者,第三条件为第四设备标识小于第一设备标识。
80.在步骤s108中,在决策主设备时,可能因为通信丢包或其他因素,导致部分不满足主设备条件的设备,误将本设备确定为主设备。此时,有可能出现主设备的设备标识不是所有设备标识中最小/最大的设备标识的情况。
81.因此,当第一设备为主设备时,可以检测接收到的心跳帧的设备标识是否满足第三条件。
82.正常情况下,第一设备收到其他从设备发送的心跳帧时,第一设备的设备标识应该大于其他从设备的设备标识,或第一设备的设备标识应该小于其他从设备的设备标识。
83.如果第一设备的设备标识不大于其他从设备的设备标识(即,第一设备标识小于其他从设备标识),或第一设备的设备标识不小于其他从设备的设备标识(即,第一设备标识大于其他从设备标识),说明第一设备已经不满足主设备条件,需要退出主设备身份,因此清除第一设备的动态地址,控制第一设备进入广播态,以便于其他从设备可以重新竞争主设备,或避免总线上存在多个主设备。通过这种方式,当经过一定时间的动态竞争,能够在can总线上竞争出设备标识最小或最大的主设备。
84.例如:设备a为主设备,收到设备e的心跳帧,设备a根据设备a的设备标识a1和设备e的设备标识e1进行比较。假设成为主设备的条件是设备标识最大的设备成为主设备,此时,如果设备a发现设备标识a1并不大于设备标识e1(即,设备标识e1大于设备标识a1,例如:设备标识a1为1,设备标识e1为4),则表示作为主设备的设备a不满足成为主设备的条件,此时作为主设备的设备a与设备e相比较,设备e更符合主设备的条件,因此设备a退出主设备身份,退出连接态进入广播态,清除设备a的动态地址。
85.或者,假设成为主设备的条件是设备标识最小的设备成为主设备,此时,如果设备a发现设备标识a1并不小于设备标识e1(即,设备标识e1小于设备标识a1,设备标识a1为4,设备标识e1为1),则表示作为主设备的设备a不满足成为主设备的条件,此时作为主设备的设备a与设备e相比较,设备e更符合主设备的条件,因此设备a退出主设备身份,退出连接态进入广播态,清除设备a的动态地址。
86.在一些实施例中,该方法还可以包括:步骤s109。如图8和图9所示,由于第一设备在执行步骤s109时,第一设备处于连接态。当第一设备处于连接态时,第一设备可能是主设备,也可能是从设备,所以,该步骤s109可以衔接在步骤s102或步骤s106之后,或者,也可以衔接在其他步骤之后,例如步骤s107,本技术实施例对此不予限制。
87.步骤s109:在第一设备处于连接态时,若接收到满足第四条件的心跳帧,则清除第一设备的动态地址,控制第一设备进入广播态;其中,第四条件为心跳帧携带的动态地址与第一设备的动态地址一致,且心跳帧携带的第五设备标识大于第一设备标识;或者,第四条件为心跳帧携带的动态地址与第一设备的动态地址一致,且心跳帧携带的第五设备标识小于第一设备标识。
88.在步骤s109中,总线上可能因为通信丢包等因素,存在多个主设备,多个主设备使
用相同的主设备地址;总线上也可能因为主设备地址分配错误,导致主设备为多个从设备分配相同的动态地址。
89.在这些多个设备拥有相同的动态地址的情况下,只能有一个处于连接态的设备保留其动态地址,其他的处于连接态的设备需要退出连接态进入广播态,重新从主设备获取动态地址。
90.心跳帧是处于连接态的主设备或者处于连接态的从设备发送的,其作用是用于通知其他设备发送该心跳帧的设备处于连接态。如果处于连接态的第一设备收到的心跳帧携带的动态地址与第一设备的动态地址一致,说明第一设备的动态地址与发送该心跳帧的设备的动态地址发送冲突,因此在第一设备和发送该心跳帧的设备中需要有一个设备退出连接态进入广播态重新获取动态地址。本技术实施例中,退出连接态进入广播态的设备的第四条件是:心跳帧携带的第五设备标识大于第一设备标识;或者,心跳帧携带的第五设备标识小于第一设备标识。通过这种方式,能够解决连接态的设备的动态地址冲突问题。
91.第四条件的实质是在两个或多个设备发生动态地址冲突时,选择设备标识较小的设备退出连接态,重新获取动态地址;或者,选择设备标识较大的设备退出连接态,重新获取动态地址。
92.例如:设备a处于连接态,收到设备f的心跳帧,设备a根据设备a的动态地址和设备f的动态地址,发现设备a的动态地址和设备f的动态地址一致。此时,如果第四条件是设备标识较小的设备退出连接态,且设备标识a并不大于设备标识f(即,设备标识f大于设备标识a,例如设备标识a为1,设备标识f为6),那么此时处于连接态的设备a退出连接态进入广播态,清除设备a的动态地址。
93.在另一些示例中,如果第四条件是设备标识较大的设备退出连接态,且设备标识a并不小于设备标识f(即,设备标识f小于设备标识a,例如设备标识a为6,设备标识f为1),那么此时处于连接态的设备a退出连接态进入广播态,清除设备a的动态地址。
94.在一些实施例中,步骤s101,在定时发送第一广播帧并开始计时之后,还可以包括:步骤s110,如图10所示。
95.步骤s110:若在第一预设时长内,接收到第二设备广播的第二广播帧且第二广播帧携带的第二设备标识满足第一条件,则重新开始计时。
96.在步骤s110中,在第一预设时长内,如果第一设备收到第二设备广播的第二广播帧,第二广播帧携带的第二设备标识满足第一条件,说明在第一预设时长内,与第二设备相比,第一设备是不满足主设备的条件,第一设备是从设备,重新开始计时,可以等待主设备分配动态地址。
97.下面再将上述方法结合在一起,具体完整详细进行说明。
98.在一些实施例中,上述总线可以为can总线。can总线上每个设备可以包括sn码、动态地址(由主设备分配),sn码可以作为设备对应的设备标识。为了区分不同类型的设备,每个设备还可以包括静态地址,同一类型的设备的静态地址相同,当系统内设备都是相同类型的设备时,可以不用静态地址。
99.参见图11,每个设备有三个状态,分别为空闲态、广播态和连接态。
100.空闲态为设备的初始化状态,设备可以从空闲态转为广播态。
101.处于广播态的设备可以定时发送广播帧,可以接收其他设备的广播帧并判断自身
sn码和其他设备sn码的大小,还可以接收主设备发送的地址分配帧,等。处于广播态的设备在发送广播帧后的第一预设时长内确定自己是主设备(没有收到地址分配帧,且未收到其他设备的广播帧或收到的其他设备的广播帧携带的设备标识不满足主设备条件)或者从设备(收到地址分配帧),并进入连接态,等。
102.处于连接态的设备可以定时发送心跳帧,可以接收其他设备的心跳帧,可以与其他设备进行业务通信(即数据的接收和发送),作为主设备可以向其他设备发送地址分配帧,等。处于连接态的设备在自身不满足主设备条件或自身动态地址与其他设备的动态地址冲突且自身sn码不满足从设备条件时,退出连接态进入空闲态,然后从空闲态进入广播态;或者,也可以在退出连接态后,直接进入广播态。
103.参见图12,主设备竞争过程可以包括:
104.s1、设备上电,初始状态为空闲态,并自动转入广播态。
105.s2、设备进入广播态之后,计时清零。
106.s3、设备定时发送广播帧,广播帧中携带本设备的sn码,开始计时,如果接收其他设备的广播帧,进入s4,如果收到主设备的地址分配帧,进入s7。
107.s4、收到其他设备的广播帧,判断广播帧中的sn码与本设备的sn码的大小。如果本设备的sn码大于该广播帧中的sn码(假设确定主设备的条件为:sn码最小的设备为主设备),则返回s2,计时清零。如果本设备的sn码小于该广播帧中的sn码,则进入s5。
108.s5、判断计时时间与第一预设时长(例如5秒)的大小。如果大于5秒,进入s6,如果小于5秒,返回s3。
109.s6、确定本设备为主设备,进入连接态,将本设备的动态地址设置为1(假设预设的主设备地址为1),定时发送心跳帧,心跳帧可以包括本设备的sn码、动态地址,心跳帧还可以包括本设备的静态地址。
110.s7、收到地址分配帧。
111.s8、判断地址分配帧携带的sn码与自身sn码是否一致。如果一致,进入s9,如果不一致,忽略并进入s3。
112.s9、本设备为从设备,进入连接态,将地址分配帧中获取的动态地址作为本设备的动态地址,并定时发送心跳帧,心跳帧可以包括本设备的sn码、动态地址,心跳帧还可以包括本设备的静态地址。
113.在上述主设备竞争过程的基础上,还可以包括如下过程:
114.(1)如果在第一预设时长内,未收到其他设备发送的地址分配帧和广播帧,则进入连接态,将预设的主设备地址(例如主设备地址为1)作为本设备的动态地址;定时发送心跳帧,心跳帧可以包括本设备的sn码、动态地址,心跳帧还可以包括本设备的静态地址。
115.(2)作为主设备的本设备,如果接收到其他设备的广播帧,则获取广播帧中的sn码,为该sn码的设备分配动态地址,根据该sn码和动态地址生成地址分配帧,并发送该地址分配帧。
116.(3)在动态地址发生冲突的应用场景中,作为处于连接态的本设备(不管本设备是主设备还是从设备),如果收到其他设备发送的心跳帧中的动态地址与本设备的动态地址一致,则将本设备的sn码和心跳帧中的sn码进行比对,如果本设备的sn码比较小,则本设备不动作(即sn码小的设备保持原状态,保留自己的动态地址),如果本设备的sn码比较大,则
本设备退出连接态,清除自身的动态地址(即sn码大的设备退出原状态,清除自己的动态地址),进入空闲态,并自动进入广播态。
117.(4)总线上主设备条件原则上为处于连接态的设备里面sn码最小的设备,在sn码最小的处于连接态的设备被拔除的应用场景中,总线上其余从设备根据收到的心跳帧中的sn码判断是否存在比自己sn码小的处于连接态的设备,当超过一定时间时,最终总线上sn码最小的设备竞争成为新主设备。
118.(5)在sn码更小的处于连接态的设备接入总线时,经过主设备竞争过程,原主设备会变成从设备,接入的sn码更小的设备会变成主设备。
119.因此,通过上述方式,可以方便地竞争出主设备,且可以避免多个主设备冲突;支持热插拔设备,设备插入即可自动分配动态地址;主设备的竞争范围局限于主设备和广播态的设备,其他设备可以正常进行业务通信,保障通信效率。
120.参见图13,图13是本技术一实施例提供的电子设备的框图,需要说明的是,本技术实施例的电子设备能够实现上述的方法,相关内容的详细说明,请参见上述方法部分,在此不再赘叙。
121.电子设备10包括通信电路101、处理器102和存储器103,通信电路101用于通信,存储器103用于存储计算机程序;处理器102用于执行计算机程序并在执行计算机程序时,实现如上所述的主设备竞争方法。通信电路101、存储器103通过总线与处理器102连接。
122.其中,处理器102可以是微控制单元、中央处理单元或数字信号处理器,等等。存储器103可以是flash芯片、只读存储器、磁盘、光盘、u盘或者移动硬盘等等。
123.本技术还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上所述的主设备竞争方法。
124.其中,该计算机可读存储介质可以是上述电子设备的内部存储单元,例如硬盘或内存。该计算机可读存储介质也可以是上述电子设备的外部存储设备,例如配备的插接式硬盘、智能存储卡、安全数字卡、闪存卡,等等。
125.应当理解,在本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。
126.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

技术特征:
1.一种主设备竞争方法,应用于第一设备,其特征在于,所述方法包括:当所述第一设备处于广播态时,定时发送第一广播帧并开始计时,所述第一广播帧携带所述第一设备的第一设备标识;若在第一预设时长内,未收到携带有所述第一设备标识的第一地址分配帧,且,未收到第二设备广播的第二广播帧或收到的第二广播帧携带的第二设备标识不满足第一条件,则确定所述第一设备为主设备,将所述第一设备的动态地址设置为预设的主设备地址,控制所述第一设备进入连接态;其中,所述第一条件为所述第二设备标识大于所述第一设备标识,或者,所述第一条件为所述第二设备标识小于所述第一设备标识。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述第一设备处于连接态时,定时发送心跳帧,所述心跳帧携带所述第一设备的动态地址和所述第一设备标识;所述心跳帧用于通知其他设备所述第一设备处于连接态。3.根据权利要求1所述的方法,其特征在于,在所述确定所述第一设备为主设备,将所述第一设备的动态地址设置为预设的主设备地址,控制所述第一设备进入连接态之后,还包括:在所述第一设备为所述主设备时,若接收到第二设备广播的第二广播帧,且所述第二广播帧携带的第二设备标识不满足所述第一条件,则为所述第二设备分配动态地址;向所述第二设备发送第二地址分配帧,所述第二地址分配帧携带所述第二设备的第二设备标识和为所述第二设备分配的动态地址。4.根据权利要求1所述的方法,其特征在于,在所述定时发送第一广播帧并开始计时之后,还包括:若在所述第一预设时长内接收到携带有所述第一设备标识、为所述第一设备分配的动态地址的第一地址分配帧,则确定所述第一设备为从设备,将所述第一地址分配帧携带的动态地址作为所述第一设备的动态地址,控制所述第一设备进入连接态。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述第一设备为从设备时,若在第二预设时长内未接收到携带有所述主设备地址的心跳帧,且接收到的心跳帧所携带的第三设备标识均不满足第二条件,则确定所述第一设备为主设备,将所述第一设备的动态地址替换为预设的主设备地址;其中,所述第二条件为所述第三设备标识大于所述第一设备标识,或者,所述第二条件为所述第三设备标识小于所述第一设备标识。6.根据权利要求1或4所述的方法,其特征在于,所述方法还包括:在所述第一设备为主设备时,若接收到携带有第四设备标识的心跳帧,且所述第四设备标识满足第三条件时,清除所述第一设备的动态地址,控制所述第一设备进入广播态;其中,所述第三条件为所述第四设备标识大于所述第一设备标识,或者,所述第三条件为所述第四设备标识小于所述第一设备标识。7.根据权利要求1或4所述的方法,其特征在于,所述方法还包括:在所述第一设备处于连接态时,若接收到满足第四条件的心跳帧,则清除所述第一设备的动态地址,控制所述第一设备进入广播态;其中,所述第四条件为所述心跳帧携带的动态地址与所述第一设备的动态地址一致,
且所述心跳帧携带的第五设备标识大于所述第一设备标识;或者,所述第四条件为所述心跳帧携带的动态地址与所述第一设备的动态地址一致,且所述心跳帧携带的第五设备标识小于所述第一设备标识。8.根据权利要求1所述的方法,其特征在于,在所述定时发送第一广播帧并开始计时之后,还包括:若在第一预设时长内,接收到第二设备广播的第二广播帧且所述第二广播帧携带的第二设备标识满足所述第一条件,则重新开始计时。9.一种电子设备,其特征在于,所述电子设备包括通信电路、处理器和存储器,所述通信电路用于通信,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如权利要求1-8任一项所述的主设备竞争方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的主设备竞争方法。

技术总结
本申请提供一种主设备竞争方法、电子设备以及计算机可读存储介质,该方法包括:当第一设备处于广播态时,定时发送第一广播帧并开始计时,第一广播帧携带第一设备的第一设备标识;若在第一预设时长内,未收到携带有第一设备标识的第一地址分配帧,且未收到第二设备广播的第二广播帧或收到的第二广播帧携带的第二设备标识不满足第一条件,则确定第一设备为主设备,将第一设备的动态地址设置为预设的主设备地址,控制第一设备进入连接态;第一条件为第二设备标识大于第一设备标识,或者第一条件为第二设备标识小于第一设备标识。通过这种方式,能够高效率确定主设备。能够高效率确定主设备。能够高效率确定主设备。


技术研发人员:陈俊同 陈玉光 郑锐畅 陈熙 王雷
受保护的技术使用者:深圳市正浩创新科技股份有限公司
技术研发日:2023.03.30
技术公布日:2023/8/4
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐