一种分配串行总线从节点地址的方法、电子装置和系统 【技术领域】
本发明涉及电子技术领域,特别涉及一种分配串行总线从节点地址的方法、电子装置和系统。
背景技术
串行通信在数据交换中具有便捷、简单、有效的特点,与并行通信相比能节省端口线的数量,特别是输入/输出(Input/Output,I/O)口线资源紧张的情况下,更需要采用串行数据交换的方式。目前,串行通信已经被广泛应用于各种领域中实现数据交换,成为产品设计中的常用技术之一。
一点对多点的通信中具有一个主节点以及一个或一个以上的从节点,从节点通过串行总线与主节点建立通信连接。在一点对多点通信方式下,需要对从节点进行地址设定,并保证从节点地址的唯一性,才能使主节点与从节点间的通信正常进行。上述主节点、从节点均为接入串行总线并使用串行通信的电子装置,串行总线通常处于一个设备中;可以理解的是:主节点、从节点以及串行总线都可以是一个设备的组成部分。
从节点地址的分配方式一般通过物理方式来分配,在物理方式分配的方案中,由于一个插框内不同的槽位设备(从节点)与插框具有不同的背板接插件的电气连接关系,背板可以通过设备接插件针脚的不同来为从节点分配地址。具体流程为:设备读取和背板接插件的不同电气连接关系,然后按一定的规则为从节点分配地址,这样就可以使从节点分配到一个唯一的地址。
发明人在实现本发明的过程中发现:现有技术采用依据从节点的物理连接方式分配从节点的地址,所以无法为没有槽位等物理连接的从节点分配从节点的地址。
【发明内容】
本发明实施例提供一种分配串行总线从节点地址的方法、电子装置和系统,使得从节点地址的分配更加灵活。
本发明所提供的分配串行总线从节点地址的方法实施例可以通过以下技术方案实现:
向串行总线上的从节点发送命令,指示所述从节点发送随机数;
接收从节点根据所述命令发送的随机数;
根据所述随机数为所述从节点分配地址。
本发明实施例还提供了一种电子装置,设置在串行总线上,包括:
命令发送单元,用于向串行总线上的从节点发送命令,指示所述从节点发送随机数;
随机数接收单元,用于接收从节点根据所述命令发送的随机数;
地址分配单元,用于根据所述随机数为所述从节点分配地址。
本发明实施例还提供了另一种电子装置,设置在串行总线上,包括:
命令接收单元,用于接收来自主节点的命令,所述命令指示从节点发送随机数;
随机数获取单元,用于接收到所述命令后获取随机数;
随机数发送单元,用于向主节点发送所述随机数。
本发明实施例还提供了一种串行总线系统,包括:
第一电子装置,向串行总线上的第二电子装置发送命令,指示所述第二电子装置发送随机数;接收第二电子装置根据所述命令发送的随机数;根据所述随机数为所述第二电子装置分配地址;
第二电子装置,用于接收来自第一电子装置的命令,所述命令指示第二电子装置发送随机数;接收到所述命令后获取随机数,向第一电子装置发送所述随机数。
通过本发明实施例的技术方案,主节点下发命令以获取从节点上报的随机数,然后根据上报的随机数进行地址分配,不依赖于从节点的物理连接,能够为所有接入串行总线的节点分配地址。
【附图说明】
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法实施例一流程示意图;
图2为本发明方法实施例二流程示意图;
图3为本发明实施例三电子装置结构示意图;
图4为本发明实施例三电子装置结构示意图;
图5为本发明实施例三电子装置结构示意图;
图6为本发明实施例三电子装置结构示意图;
图7为本发明实施例四电子装置结构示意图;
图8为本发明实施例四电子装置结构示意图;
图9为本发明实施例五系统结构示意图。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的串行通信方式可以是晶体管-晶体管逻辑(transistor-transistor logic,TTL)、推荐标准232(Recommended standard 232,RS-232)、推荐标准422(Recommended standard 422,RS-422)、推荐标准485(Recommended standard 485,RS-485)、内部集成回路(Inter-IntegratedCircuit,IIC)、控制器区域网络总线(Controller Area Network Bus,CANBUS)等。
实施例一,如图1所示,本发明实施例提供了一种分配串行总线从节点地址的方法,包括以下步骤:
步骤101:向串行总线上的从节点发送命令,指示上述从节点发送随机数;
发送命令的方式可以为广播,上述向串行总线上的从节点广播命令可以是:按照设定的时间为周期向串行总线上的从节点广播命令;也可以是在主节点上电时和检测到有新的从节点接入串行总线时向串行总线上的从节点广播命令。
步骤102:接收从节点根据上述命令发送地随机数;
上述随机数可以按照设定的延时来发送,采用延时、且各个从节点的延长的时间间隔不同的方式来发送随机数可以降低主节点同时接收到多个随机数的可能,避免同时接收到随机数产生碰撞导致的分配地址失败,从而提高分配地址的成功率。
上述随机数包括:电子标签、或定时器瞬时计数值、或数模转换采样值、或内存数据块循环冗余校验值。当然上述随机数还可以是其它能够唯一标识从节点的值,对此本发明实施例不予限定。从节点在收到上述命令之后按照设定的延时发送随机数,上述延时可以为上述随机数的设定倍数,至于具体采用多少倍,在此不予限定;另外也可以设定其它的延时确定方式,在此也不予限定。另外,为了区分那些随机数是用于分配地址的,随机数前端和后端分别可以为设定的四位二进制数。
步骤103:根据随机数为上述从节点分配地址。
上述实施方式的执行主体可以为串行总线的主节点,通过主节点下发命令以获取从节点上报的随机数,然后根据上报的随机数进行地址分配,不依赖于从节点的物理连接方式,能够为所有接入串行总线的节点分配地址。
进一步地,上述根据随机数为从节点分配地址之前还包括:
若存在两个或两个以上的从节点发送的随机数相同,则再次执行向串行总线上的从节点发送命令,指示从节点发送随机数;然后接收从节点根据上述命令按照设定的延时发送的随机数。
上述实施方式,在从节点上报随机数以后,判断是否存在相同的随机数,这样可以避免从节点被分配到相同的地址,提高了地址分配的稳定性。
进一步地,上述根据随机数为从节点分配地址之后还包括:
若存在两个或两个以上的从节点被分配了相同的地址,则再次执行向串行总线上的从节点发送命令,指示从节点发送随机数;接收从节点根据上述命令按照设定的延时发送的随机数;根据随机数为上报上述随机数的从节点分配地址。
上述实施方式,在地址分配后,判断是否存在多个从节点被分配了相同的地址,排除了多个从节点被分配相同地址的可能性,提高了地址分配的稳定性。
可选地,上述根据随机数为从节点分配地址之后还包括:
在上述串行总线所在的设备下电之前保存接入上述串行总线的从节点的地址;当设备再次上电且本次上电接入串行总线的从节点与前一次上电接入串行总线的从节点相同时,读取上述保存的从节点的地址作为从节点的地址。
上述实施方式,在一次下电前保存从节点的地址,在下一次上电时判断是否与上次的从节点相同,如果是,则可以使用原有的地址,则不需要再次分配地址,减少了分配地址的操作,系统执行速度。
实施例二,本发明实施例还提供了更具体的实施例,对实施例一作进一步的说明,如图2所示,可以包括以下步骤:
步骤201:主节点上电;
步骤202:主节点上电后,向从节点广播命令Cb,该广播命令Cb能够被所有接入串行总线上的从节点接收到;
步骤203:从节点如果上电了则从节点已经接入串行总线,那么从节点能够接收到上述广播命令Cb,然后从节点根据自身的部件条形码电子件(具有唯一性),取出其中差异性的5位形成参数X。如果没有此形码电子件,还可以取中央处理器(Central Processing Unit,CPU)的定时器/计数器的累加器TL的低5位,形成参数X,虽然一个系统同时上电,但是由于每个单板的缓启动、晶体/晶振的差异计数器的TL还是会有差异。这样能够保证每个从节点获取到的随机数都是不一样的,然后向主节点发送获取到的随机数。具体的方法可以为:
从节点收到广播命令后,根据一个从节点的回复时间:T1=10/波特率;
从节点回复之间的时间间隔:T2,这里取T2×2
串口总线上最大可以链接从节点个数:Y,需要在主节点中根据系统本身来设定。
所有从节点回复总时间:Ta=(T1+T2)×Y
计时开始点:主节点停止位结束点,T0,由于这个时间在不同的从节点上,由硬件产生的误差属于nS级别,T2属于uS、mS级别,所有认为此时间误差忽略。如果是CAN总线,有时钟同步信号,取此时间也可以。
X1=X的后三位,
某个从节点开始回复的起始点:TO+X1*T1回复命令Cr,格式表1所示:
表1
B7 B6 B5 B4 B3 B2 B1 B0
|约定的握手位|X|
步骤204:主节点在T0+Ta之后,整理所有接收到的数据,排除为两个或两个以上的从节点分配相同地址的可能。由于存在X相同的可能,特别是取定时器时这种可能性较高,需要解决冲突。因为冲突,冲突的2个或多个从节点被分配到同一个从节点地址,为了确认被分配的地址的唯一性,每完成一轮地址分配后主节点发一条带有从节点地址号的广播命令获取新随机数,与地址号匹配的从节点自动生成多个新随机数并上报给主节点,主节点收到随机数后将收到随机数返回给相应从节点,从节点收到主节点返回的随机数与自已上报的随机数不完全一样(因为冲突,主节点会收到多个同地址号的节点上报,就会碰撞而破坏数据)时解除本机地址绑定,重新处于地址分配状态,等待下一轮地址分配。若从节点不能正常收发到数据,当收发次数超过一定次数后,从节点认为自己没有注册上,需要重新注册,也要切换到等待地址分配状态,主节点同时释放此从节点号。
步骤205:主节点根据上报的X分配给每个从节点一个从节点地址。形成X,X-从节点地址对应的2张表,存储在主节点电可擦除只读存储器(EEPROM)里。还可以通过广播命令下发X-从节点地址对应表。之后,主节点可以与各个从节点分时进行点对点通信,完成自身信息的注册。
上述实施方式,通过主节点下发命令以获取从节点上报的随机数,然后根据上报的随机数进行地址分配,不依赖于从节点的物理连接方式,能够为所有接入串行总线的节点分配地址。
另外,因为存在上电运行后,有增加和更换从节点部件的情形,所以主节点需要有不断增加从节点的能力。具体实现可以:
增加从节点具体方案:每过一段时间,例如1分钟、3分钟,主节点执行一次步骤202,下发一次广播命令Cb,没有注册上的从节点可以上报随机数由主节点为其分配地址。注册上的从节点可以不响应此命令。
删除从节点具体方案:如果主几点与某个从节点一段时间内通信失败,则删除此从节点,释放此从节点号。
上述实施方式,提供了从节点增加和删除的方案,能够为所有接入串行总线的节点分配地址。
另外,在步骤205之后,系统下电还可以使用从节点地址保护的方案:
当整个系统下电后,重复上述地址分配的过程,当主节点收到的所有从节点X参数和主节点存储的X-从节点地址对应表中一致后,直接按照X-从节点地址对应表中的下发从节点号。
上述实施方式,在一次下电前保存从节点的地址,在下一次上电时判断是否与上次的从节点相同,如果是,则可以使用原有的地址,则不需要再次分配地址,减少了分配地址的操作,系统执行速度。
实施例三,如图3所示,本发明实施例还提供了一种电子装置,设置在串行总线上,可以包括:
命令发送单元301,用于向串行总线上的从节点发送命令,指示上述从节点发送随机数;上述发送命令的方式可以为广播。
随机数接收单元302,用于接收从节点根据上述命令发送的随机数;上述随机数可以按照设定的延时来发送。
地址分配单元303,用于根据上述随机数为上述从节点分配地址。
上述实施方式,电子装置通过下发命令以获取从节点上报的随机数,然后根据上报的随机数进行地址分配,不依赖于从节点的物理连接方式,能够为所有接入串行总线的节点分配地址。
如图4所示,上述电子装置,还包括:
判断单元401,判断是否存在两个或两个以上的从节点发送的随机数相同;或者,判断是否存在两个或两个以上的从节点被分配了相同的地址;
指示单元402,用于若存在两个或两个以上的从节点发送的随机数相同,则指示再次执行向串行总线上的从节点发送命令,指示从节点发送随机数;
然后接收从节点根据上述命令发送的随机数。上述随机数可以按照设定的延时发送。
若存在两个或两个以上的从节点被分配了相同的地址,则指示再次执行向串行总线上的从节点发送命令,指示从节点发送随机数;接收从节点根据上述命令发送的随机数;根据随机数为上报上述随机数的从节点分配地址。
如图5所示,上述电子装置,还包括:
存储单元501,在上述串行总线所在的设备下电之前保存接入上述串行总线的从节点的地址;
节点判断单元502,用于判断上述设备再次上电且本次上电接入串行总线的从节点与前一次上电接入串行总线的从节点是否相同;
上述地址分配单元303包括:地址分配子单元503,用于读取上述保存的从节点的地址作为从节点的地址。
上述实施方式,在从节点上报随机数以后,判断是否存在相同的随机数,这样可以避免从节点被分配到相同的地址,提高了地址分配的稳定性。在地址分配后,判断是否存在多个从节点被分配了相同的地址,排除了多个从节点被分配相同地址的可能性,提高了地址分配的稳定性。
如图6所示,上述电子装置,还包括:
周期控制单元601,用于控制上述命令发送单元303按照设定的时间为周期向串行总线上的从节点发送命令。上述发送命令的方式可以为广播。
上述实施方式,通过周期性的发送命令,新接入的从节点可以接收到命令后上报随机数,然后由主节点为其分配地址,不依赖于从节点的物理连接方式,能够为所有接入串行总线的节点分配地址。
实施例四,如图7所示,本发明实施例一种电子装置,设置在串行总线上,可以包括:
命令接收单元701,用于接收主节点发送的命令,上述命令指示从节点发送随机数;上述发送命令的方式可以为广播。
随机数获取单元702,用于接收到上述命令后获取随机数;
随机数发送单元703,用于向主节点发送上述随机数。上述发送随机数的方式可以是按照设定的延时发送。采用延时的方式来发送随机数可以降低第一电子装置同时接收到多个随机数的可能,避免同时接收到随机数产生碰撞导致的分配地址失败,从而提高分配地址的成功率。
上述实施方式,通过主节点下发命令以获取从节点上报的随机数,然后根据上报的随机数进行地址分配,不依赖于从节点的物理连接方式,能够为所有接入串行总线的节点分配地址。
如图8所示,上述节点,上述随机数获取单元703包括:
随机数获取子单元801,用于接收到上述命令之后获取电子标签、定时器瞬时计数值、数模转换采样值、内存数据块循环冗余校验值中的任意一项作为随机数。
上述实施方式,给出了获取随机数的几种实现方式的举例,可以理解的是这些举例并不是获取随机数的穷举,随机数还可以是其它能够唯一标识从节点的值,对此本发明实施例不予限定。
上述实施方式,通过主节点下发命令以获取从节点上报的随机数,然后根据上报的随机数进行地址分配,不依赖于从节点的物理连接方式,能够为所有接入串行总线的节点分配地址。
实施例五,如图9所示,本发明实施例还提供了一种串行总线系统,包括:
第一电子装置901,向串行总线上的第二电子装置902发送命令,指示上述第二电子装置902发送随机数;接收第二电子装置902根据上述命令发送的随机数;根据上述随机数为上述第二电子装置902分配地址;
第二电子装置902,用于接收来自第一电子装置901的命令,上述命令指示第二电子装置902发送随机数;接收到上述命令后获取随机数,向第一电子装置901发送上述随机数。
进一步地,
上述第一电子装置901,还用于在上述串行总线所在的设备下电之前保存接入上述串行总线的第二电子装置902的地址;当再次上电且本次上电接入串行总线的第二电子装置902与前一次上电接入串行总线的第二电子装置902相同时,读取上述保存的第二电子装置902的地址作为第二电子装置902的地址。
可选地,
上述第二电子装置902,用于向第一电子装置901发送上述随机数包括:用于根据按照设定的时延发送上述随机数。
上述系统实施例中,第一电子装置通过下发命令以获取第二电子装置上报的随机数,然后根据上报的随机数进行地址分配,不依赖于第二电子装置的物理连接方式,能够为所有接入串行总线的节点分配地址。
在一次下电前保存第二电子装置的地址,在下一次上电时判断是否与上次的第二电子装置相同,如果是,则可以使用原有的地址,则不需要再次分配地址,减少了分配地址的操作,系统执行速度。
采用延时的方式来发送随机数可以降低第一电子装置同时接收到多个随机数的可能,避免同时接收到随机数产生碰撞导致的分配地址失败,从而提高分配地址的成功率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的一种分配串行总线从节点地址的方法、电子装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。