基于串行总线的传感器注册系统、方法和装置与流程

文档序号:17126217发布日期:2019-03-16 00:28阅读:162来源:国知局
基于串行总线的传感器注册系统、方法和装置与流程

本申请涉及电子技术领域,具体涉及机器人领域,尤其涉及基于串行总线的传感器注册系统和方法。



背景技术:

传感器在机器人的控制中起了非常重要的作用,正因为有了传感器,机器人才具备了类似人类的知觉功能和反应能力。功能越丰富的机器人,其携带的传感器的功能越多,相应的传感器的个数越多。主控通过串行总线与多个传感器进行数据交互。

由于传感器需要在主控设备中进行注册后才能与主控设备进行数据交互,因此需要设计一种基于串行总线的传感器注册方式。



技术实现要素:

本申请的目的在于提出一种基于串行总线的传感器注册系统、方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种基于串行总线的传感器注册系统,所述系统传感器、串行总线、主控,其中:所述传感器,用于根据随机规则生成延时时间,在等待所述延时时间后,通过所述串行总线向所述主控发送注册请求报文;所述主控,用于接收所述传感器发送的所述注册请求报文,解析所述注册请求报文得到所述传感器的设备标识id,从注册表中查询所述id对应的注册号,如果查询不到对应的注册号,则生成一个新的注册号,并将所述id与所述新的注册号的对应关系添加到所述注册表中,将携带所述id对应的注册号和所述id的注册通知报文通过所述串行总线进行广播;所述传感器,还用于接收所述主控广播的注册通知报文,从所述注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。

在一些实施例中,所述传感器判断在预设时间内是否接收到所述主控发送的注册号,如果没有收到所述注册号,则重复执行如下步骤,直至收到所述注册号:根据所述随机规则生成延时时间,在等待所述延时时间后,通过所述串行总线向主控发送注册请求报文。

在一些实施例中,所述传感器通过所述串行总线向所述主控发送注册请求报文,包括:判断所述串行总线的状态,如果该状态为空闲,则占用所述串行总线,将所述串行总线的状态设置为占用,并通过所述串行总线向所述主控发送注册请求报文。

在一些实施例中,所述传感器通过所述串行总线向所述主控发送注册请求报文,还包括:判断所述串行总线的状态,如果该状态为占用,则重复执行如下步骤,直至该状态为空闲:根据所述随机规则生成延时时间,在等待所述延时时间后,判断所述串行总线的状态;占用所述空闲的串行总线,将所述串行总线的状态设置为占用,并通过所述串行总线向所述主控发送注册请求报文。

在一些实施例中,所述系统的传感器包括以下至少一项:颜色传感器、测距传感器、姿态传感器、地磁传感器、红外线雷达、激光传感器、扬声器、麦克风、摄像头、力觉传感器。

在一些实施例中,所述根据所述随机规则生成延时时间,包括:根据所述传感器的id和该传感器内的单片机的id生成一个随机数;将所述随机数除以预设第一数值取余数;将所述余数乘以预设第二数值得到延时时间。

第二方面,本申请提供了一种基于串行总线的传感器注册方法,所述方法包括:根据随机规则生成延时时间,在等待所述延时时间后,判断串行总线的状态,如果该串行总线的状态为占用,则重复执行本步骤,直到串行总线的状态为空闲;占用所述空闲的串行总线,将所述串行总线的状态设置为占用,并通过所述串行总线向主控发送注册请求报文;在预设时间内,判断是否接收到所述主控返回的注册通知报文,如果没有收到,则重复执行上述各个步骤,直到收到所述主控返回的注册通知报文;从所述注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。

在一些实施例中,所述根据随机规则生成延时时间,包括:根据传感器的id和该传感器内的单片机的id生成一个随机数;将所述随机数除以预设第一数值取余数;将所述余数乘以预设第二数值得到延时时间。

第三方面,本申请提供了一种基于串行总线的传感器注册方法,所述方法包括:接收传感器发送的注册请求报文;解析所述注册请求报文得到所述传感器的设备标识id;从注册表中查询所述id对应的注册号,如果查询不到对应的注册号,则生成一个新的注册号,并将所述id与所述新的注册号的对应关系添加到所述注册表中;将携带所述id对应的注册号和所述id的注册通知报文通过所述串行总线进行广播。

第四方面,本申请提供了一种基于串行总线的传感器注册装置,所述装置包括:延时生成模块,配置用于根据随机规则生成延时时间;判定串行总线状态模块,配置用于判定串行总线的状态;发送模块,配置用于占用所述空闲的串行总线,将所述串行总线的状态设置为占用,并通过所述串行总线向主控发送注册请求报文;接收模块,配置用于在预设时间内,支持接收所述主控发送的注册通知报文;解析模块,配置用于从所述注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。

本申请提供的基于串行总线的传感器注册系统、方法和装置,通过不同的传感器生成各自的延时时间,等待相应的延时时间,才发送注册请求,减少串行总线堵塞,提高一次注册成功率,注册步骤简练。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的基于串行总线的传感器注册系统的一个实施例的时序图;

图3是根据本申请的基于串行总线的传感器注册系统的一个应用场景的示意图;

图4是根据本申请的基于串行总线的传感器注册方法的一个实施例的流程图;

图5是根据本申请的基于串行总线的传感器注册方法的又一个实施例的流程图;

图6是根据本申请的基于串行总线的传感器注册装置的一个实施例的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的基于串行总线的传感器注册系统、方法和装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括地磁传感器101、红外线雷达102、激光传感器103、串行总线104、主控105。地磁传感器101、红外线雷达102、激光传感器103通过串行总线104与主控105进行通信。各种不同类型的传感器用于采集不同的信息,并将该信息进行处理后,通过串行总线104依次发送给主控105,主控105接收并处理各个传感器发送的信息;主控105可通过串行总线104向各个传感器发送指令和数据。串行总线104上各设备通信时,不区分主从。各个传感器与主控105进行半双工、同步通信时,需要知道彼此的唯一标识用于寻址,在传感器注册成功之后,该唯一标识是注册号。同一个传感器向不同的主控注册时,可能会被分配不同的注册号,同一传感器在不同时刻向同一传感器注册时,主控返回的注册号相同。主控维护传感器与注册号的对应关系,传感器不保存注册号。

串行总线104包含3条信号线,即:时钟线、串行双向数据线、标识总线空闲或占用的状态线。

应该理解,图1中的传感器的数目仅仅是示意性的。根据实现需要,可以具有任意数目、种类的传感器。

图2示出了根据本申请的基于串行总线的传感器注册系统的一个实施例的时序图200。

本实施例的基于串行总线的传感器注册系统包括:传感器、串行总线、主控,通常会配置有一个主控和多个不同类型传感器。其中,串行总线是支持数据双向传输的半双工、同步通信总线,该串行总线包含3条信号线,即:时钟线、串行双向数据线、标识总线空闲或占用的状态线。连接到串行总线上的各个设备,在传输数据时,需要先根据状态线判定总线的状态,或根据状态线、时钟线判定总线的状态,只有在总线空闲时,才支持设备发送数据,并需要改变状态线的电平,串行总线上的其它设备因状态线电平的改变而触发中断,开始接收串行总线上的数据。数据发送后,需要释放串行总线。该串行总线的通信协议定义为:同步码+目地设备注册号+源设备注册号+长度+异或校验+数据。

上电后的传感器根据随机规则生成各自的延时时间,每个传感器在等待相应的延时时间后,期望通过串行总线向主控发送注册请求。因每一个传感器与主控的交互流程都一样,所以在时序图200中只列出一个传感器与主控的交互流程。

在本实施例的一些可选的实施方式中,系统的传感器包括以下至少一项:颜色传感器、测距传感器、姿态传感器、地磁传感器、红外线雷达、激光传感器、扬声器、麦克风、摄像头、力觉传感器。

如图2所示,时序图200包括以下步骤:

在步骤201中,传感器根据随机规则生成延时时间。

在本实施例中,随机规则可以根据该传感器的唯一设备标识id生成随机数,在将该随机数与某些数值做算数和逻辑运算得到该传感的延时时间。任意两个传感器根据该随机规则生成的延时时间可能相同,也可能不相同。

在本实施例的一些可选的实现方式中,根据随机规则生成延时时间,包括:

步骤2011,根据传感器的id和该传感器内的单片机的id生成一个随机数。作为示例,将传感器的id和该传感器内的单片机的id进行异或运算的结果作为随机函数srand()的种子,生成一个随机数。

步骤2012,将随机数除以预设第一数值取余数。作为示例,该预设第一数值是8。

步骤2013,将余数乘以预设第二数值得到延时时间。作为示例,该预设第二数值是20,延时时间单位是毫秒。

在步骤202中,传感器等待上述延时时间,通过串行总线向主控发送注册请求报文。

在本实施例中,串行总线只有在空闲的状态下才能支持一个传感器向主控发送注册请求报文。传感器判断串行总线的状态,如果该状态为空闲,则占用串行总线,将串行总线的状态设置为占用,然后通过串行总线向主控发送注册请求报文。

如果串行总线堵塞,即串行总线的状态为占用,则重复执行如下步骤,直至该串行总线的状态为空闲:根据随机规则生成延时时间,在等待该延时时间后,读取并判断该串行总线的状态;当该串行总线的状态为空闲时,停止上述重复循环,占用该空闲的串行总线,将该串行总线的状态设置为占用,并通过该串行总线向主控发送注册请求报文。

主控的注册号不需要注册,是默认注册号,且该默认注册号的数值是被各个传感器预先知道的,传感器发送的注册请求报文中含有该传感器的唯一设备标识id、目地设备注册号为主控的默认注册号。步骤203,主控接收传感器发送的注册请求报文。

在本实施例中,总线的状态由空闲变成占用,会中断主控,促使主控进入接收模式,主控从注册请求报文中解析出目地设备注册号,将该目地设备注册号与主控自身的默认注册号进行比对,发现两注册号相同,则会继续解析注册请求报文。

步骤204,主控解析注册请求报文得到传感器的设备标识id。

在本实施例中,主控解析接收到的注册请求报文得到传感器的设备标识id。

步骤205,从注册表中查询id对应的注册号,如果查询不到对应的注册号,则生成一个新的注册号,并将id与新的注册号的对应关系添加到注册表中。

当主控从注册请求报文中解析出传感器的设备标识id后,先从注册表中查询id对应的注册号,如果没有查询到对应的注册号,则生成新的注册号,将id与新的注册号的对应关系添加到注册表中。

在本实施例,不同类型的传感器的唯一标识id的位数不同,同一类型的传感器,因每个传感器需具有唯一标识id,这导致该标识id的位数特别长,不适合用作串行总线的寻址,主控为每一个传感器分配唯一的位数远远小于传感器的设备标识id的注册号。主控维护传感器的设备标识id与注册号对应关系的注册表,不同的设备标识id对应不同的注册号。断电后,该注册表仍将保存在主控中。

步骤206,主控将携带id对应的注册号和id的注册通知报文通过串行总线进行广播。

在本实施例中,主控判定串行总线的状态,当串行总线处于空闲的状态,则占用该串行总线,通过该串行总线向各个传感器广播注册通知报文,其中,该注册通知报文携带id对应的注册号和id,该注册通知报文的目地设备注册号为默认的广播注册号。

步骤207,传感器还用于接收主控广播的注册通知报文,从注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。

在本实施例中,传感器监听串行总线的状态,当串行总线处于占用的状态时,则立即进入接收模式,接收主控通过串行总线广播的注册通知报文,解析该注册通知报文得到目地设备注册号,发现该目地设备注册号为默认的广播注册号,则继续解析该注册通知报文得到id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。即使用该注册号作为自己的注册号。如果解析出的id与自身的id不同,说明该注册通知报文不是发送给自己的,而是发送给其它传感器的,则丢弃该注册通知报文。

在本申请的上述实施例提供的基于串行总线的传感器注册系统中,传感器与主控利用简洁的且较少次数的交互即完成传感器的注册,根据随机规则生成延时时间,降低多个传感器同时注册而造成的总线堵塞的现象,提高一次注册成功的概率。

在本实施例的一些可选的实现方式中,因连接异常或总线长期堵塞等原因造成传感器虽然将注册请求报文发送成功,但在相当长的一段时间内没有接收到主控返回的注册通知报文。为解决该问题,设置一预设时间,传感器内的计时器在传感器发送注册请求报文后开始计时,如果传感器在该预设时间内没有接收到主控返回的注册通知报文,则重复执行如下步骤,直至收到主控返回的注册通知报文:根据随机规则生成延时时间,在等待上述延时时间后,通过串行总线向主控发送注册请求报文。

继续参考图3,图3是根据本实施例的基于串行总线的传感器注册系统的应用场景的一个示意图。在图3的应用场景中,系统配置有地磁传感器301、红外线雷达302、激光传感器303、串行总线304(如实线所示)、主控305,该系统早已开启,并处于正常工作的状态,此时,用户将扬声器306接入串行总线(如虚线所示,表示新接入),扬声器306上电后,根据随机规则生成延时时间,在等待该延时时间后,通过串行总线304向主控305发送注册请求报文,主控305成功接收并解析注册请求报文得到该扬声器的设备标识id,查询注册表中id对应的注册号,如果查询不到,则为该扬声器分配新的注册号,然后将携带id对应的注册号和id的注册通知报文通过所述串行总线进行广播,传感器接收所述主控广播的注册通知报文,从注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。该系统支持传感器任意时刻接入系统,系统实时为新接入的传感器返回注册号,提升了系统的灵活性,扩展了应用场景。

进一步参考图4,其示出了基于串行总线的传感器注册方法的一个实施例的流程图400,包括以下步骤:

步骤401,根据随机规则生成延时时间,在等待延时时间后,判断串行总线的状态。

在本实施例,串行总线用于支持传感器与主控间的半双工、同步、不区分主从的高速度通信。传感器可根据状态线判定总线的状态,或根据状态线、时钟线判定总线的状态。作为示例,根据状态线的高低电平判定串行总线的状态,低电平表示占用,高电平表示空闲。

在本实施例中,随机规则可以是根据该传感器的唯一设备标识id生成随机数,在将该随机数与某些数值做算数和逻辑运算得到该传感的延时时间。任意两个传感器根据该随机规则生成的延时时间可能相同,也可能不相同,不同时刻同一传感器根据该随机规则生成的延时时间可能相同,也可能不相同。

在本实施例的一些可选的实现方式中,传感器根据随机规则生成延时时间,包括:根据传感器的id和该传感器内的单片机的id生成一个随机数;将随机数除以预设第一数值取余数;将余数乘以预设第二数值得到延时时间,延时时间单位是毫秒。

步骤402,判定串行总线的状态。

在本实施例中,如果该串行总线的状态是占用时,则跳转执行步骤401,如果该串行总线的状态是空闲,则执行步骤403。

步骤403,占用该空闲的串行总线,将该串行总线的状态设置为占用,并通过该串行总线向主控发送注册请求报文。

在本实施中,传感器可通过改变串行总线状态线的电平,将状态线的状态由空闲设置成占用,即占用该串行总线,然后,时钟线产生通信时序,在对应时序,将注册请求报文通过串行双向数据线发送出去,注册请求报文发送出,释放串行总线,即通过改变状态线的电平,将状态由占用设置成空闲。其中,上述注册请求报文中包含传感器的设备标识id。

步骤404,在预设时间内,判断是否接收到主控返回的注册通知报文。

在本实施例中,串行总线为占用会中断主控,促使主控进入接收模式,接收传感器发送的所述注册请求报文,解析该注册请求报文得到传感器的设备标识id,从注册表中查询id对应的注册号,如果查询不到对应的注册号,则生成一个新的注册号,并将id与新的注册号的对应关系添加到所述注册表中,将携带id对应的注册号和id的注册通知报文通过串行总线进行广播。

如果串行总线连接异常或长期堵塞等状况,会造成主控向传感器发送注册通知报文失败或延时,所以传感器需要在预设时间内,判断是否接收到主控发送的注册通知报文。传感器内置计时器可用于计时。作为示例,预设时间设置成500毫秒。

如果在预设时间内没有收到主控返回的注册通知报文,则跳转到步骤401,按逻辑重新执行步骤401到步骤404的各个步骤;如果在预设时间内收到主控返回的注册通知报文,则继续执行步骤405。步骤405,从注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于串行总线的通信中使用该注册号寻址。

在该实施例中,根据随机规则生成随机的延时时间,降低串行总线堵塞的可能,此外,注册请求报文发送成功后,在预设时间内没有收到主控返回的注册通知报文,则需要重新注册,提高了一次注册成功的概率、提速注册过程。同时支持即插即注册。

继续参考图5,其示出了基于串行总线的传感器注册方法的一个实施例的流程图500,包括以下步骤:

步骤501,接收传感器发送的注册请求报文。

在本实施例中,串行总线为占用会中断主控,促使主控进入接收模式,接收传感器发送的注册请求报文。主控从注册请求报文中解析出目地设备注册号,将该目地设备注册号与主控自身的默认注册号进行比对,发现两注册号相同,则会继续解析注册请求报文。

步骤502,解析注册请求报文得到传感器的设备标识id。

在本实施例中,主控继续解析接收到的注册请求报文得到传感器的设备标识id。

步骤503,从注册表中查询id对应的注册号,如果查询不到对应的注册号,则生成一个新的注册号,并将id与新的注册号的对应关系添加到注册表中。

在本实施例,不同类型的传感器的唯一标识id的位数不同,同一类型的传感器,因每个传感器需具有唯一标识id,这导致该标识id的位数特别长,不适合用作串行总线的寻址,主控为每一个传感器分配唯一的位数远远小于传感器的设备标识id的注册号。主控维护传感器的设备标识id与注册号对应关系的注册表,不同的设备标识id对应不同的注册号。断电后,该注册表仍将保存在主控中。

当主控从注册请求报文中解析出传感器的设备标识id后,先从注册表中查询id对应的注册号,如果没有查询到对应的注册号,则生成新的注册号,将id与新的注册号的对应关系添加到注册表中。

步骤504,将携带id对应的注册号和id的注册通知报文通过串行总线进行广播。

在本实施例中,主控先将从注册表中查询到的注册号或生成的新的注册号与传感器的设备标识id组成注册通知报文,该注册通知报文的目地设备注册号为默认的广播注册号,源设备注册号为主控的默认注册号。主控判定串行总线的状态,当串行总线处于空闲时,则占用该串行总线,将该注册通知报文通过该串行传输给串行总线上的其它各个设备。

在本实施例中,主控维护传感器的设备标识id与注册号对应关系的注册表,不同设备标识id对应不同的注册号,支持即插即注册。

继续参考图6,其示出了根据本申请的基于串行总线的传感器注册装置的一个实施例的结构示意图600。该装置具体可应用于各种类型的传感器中。

如图6所示,本实施例所述的基于串行总线的传感器注册装置600包括:延时生成模块601、判定串行总线状态模块602、发送模块603、接收模块604、解析模块605。其中,延时生成模块601配置用于根据随机规则生成延时时间;判定串行总线状态模块602配置用于判定串行总线的状态;发送模块603配置用于占用空闲的串行总线,将串行总线的状态设置为占用,并通过串行总线向主控发送注册请求报文;接收模块604配置用于在预设时间内,支持接收到主控发送的注册号,解析模块605,配置用于从注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。

在本实施例中,延时生成模块601根据传感器的唯一设备标识id生成随机数,在将该随机数与某些数值做算数和逻辑运算得延时时间。不同时刻根据随机规则生成的延时时间可能相同,也可能不相同。

在本实施例中,判定串行总线状态模块602读取串行总线的状态线上的电平,根据预先的定义,即根据状态线判定总线的状态,或根据状态线、时钟线判定总线的状态,判定状态线的状态是空闲还是占用。当串行总线的状态为空闲时,则跳转到发送模块603;当串行总线的状态是占用,说明其它装置在使用串行总线,则需要跳转到延时生成模块601,延时一段时间后,再判断串行总线的状态。

在本实施例中,发送模块603通过改变串行总线状态线的电平,将状态线的状态由空闲设置成占用,即占用该串行总线,然后,时钟线产生通信时序,在对应时序,将注册请求报文通过串行双向数据线发送出去,注册请求报文发送出,释放串行总线,即通过改变状态线的电平,将状态由占用设置成空闲。

在本实施例中,串行总线由空闲变成占用,会触接收模块604接收主控返回的注册通知报文。从发送模块602发送注册请求报文开始计时,如果没有接收到主控返回的注册通知报文,则实时判断计时时间是否超过预设时间,如果没有超过预设时间,则继续等待接收主控返回的注册通知报文,同时不断累加计时,如果超过预设时间,说明注册失败,需要跳转到延时生成模块601,重新注册。

在本实施例中,如果接收模块604在预设时间内,接收到主控返回的注册通知报文,则解析模块605从注册通知报文中解析id和注册号,并将解析出的id与自身的id进行比对,如果两个id相同,则在接下的基于所述串行总线的通信中使用该注册号寻址。

在该实施例中,延时生成模块601根据随机规则生成随机的延时时间,降低串行总线堵塞的可能,此外,发送模块603发送注册请求报文成功后,在在预设时间内,如果接收模块604没有收到主控返回的注册通知报文,则需要重新注册,提高了注册成功的概率、提速注册过程。同时支持即插即注册。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1