一种串行总线系统及地址分配方法

文档序号:9274456阅读:288来源:国知局
一种串行总线系统及地址分配方法
【技术领域】
[0001]本发明涉及串行总线技术领域,更具体的说,是涉及一种串行总线系统及地址分配方法。
【背景技术】
[0002]串行总线(如RS485、CAN等)是采用一条电缆作总线,将各个节点串接起来进行通信的方式。由于其硬件设计简单、布线方便、成本低廉等优点,在工业控制、楼宇控制、环境监测、电子设备等各种场合中广泛应用。
[0003]串行总线上的各个节点挂接上同一条总线上,一个节点发送的数据包,所有其他节点都能接收到。为了区分数据包的接收方,就必须对总线上的节点进行地址编码,并在数据包中增加接收方的地址信息。
[0004]现有技术中,常用的一种为串行总线上的各节点分配地址的方法,S卩,将所有串行总线上的各个节点逐个级联,然后由第I个节点设置第2个节点的地址,再由第2个节点设置第3个节点的地址,以此类推,直至最后的节点。但是,上述为串行总线上的各节点分配地址的方法存在如下问题:各节点的CPU必须参与下一个节点的地址设置过程,因此当一个节点发生故障后,后续所有节点的地址都将无法正常分配。

【发明内容】

[0005]有鉴于此,本发明提供了一种串行总线系统及地址分配的方法,以克服现有技术中为串行总线上的各节点分配地址的方法由于各节点的CPU必须参与下一个节点的地址设置过程而导致的当一个节点发生故障后,后续所有节点的地址都将无法正常分配的问题。
[0006]为实现上述目的,本发明提供如下技术方案:
[0007]一种串行总线系统,包括:
[0008]串接有多个节点的串行总线、时钟线以及脉冲信号线;
[0009]相邻两个节点之间设置有延时电路;
[0010]其中,任意两个相邻节点之间的连接方式具体如下:
[0011]第一节点的第一端口通过所述脉冲信号线连接延时电路的脉冲信号输入端,所述延时电路的输出端通过所述脉冲信号线连接第二节点的第一端口;
[0012]第一节点的第二端口通过所述时钟线连接延时电路的时钟信号输入端后,连接第二节点的第二端口;
[0013]所述延时电路的时钟信号输入端发生上升沿变化的预设时间之后,所述延时电路的输出端为延时电路的脉冲信号输入端在时钟信号输入端发生上升沿变化的时刻的状态;所述延时电路的时钟信号输入端未发生上升沿变化时,所述延时电路的输出端的状态不改变。
[0014]可选的,所述延时电路包括:
[0015]D触发器和RC电路;
[0016]其中,所述RC电路由电阻(R)和电容(C)组成;
[0017]D触发器的第一输入端(DO)为所述延时电路的脉冲信号输入端;
[0018]D触发器的第二输入端(CLKO)为所述延时电路的时钟信号输入端;
[0019]D触发器的输出端(QO)与所述RC电路的电阻一端相连,所述RC电路的电阻的另一端连接所述RC电路的电容的一端后为所述延时电路的输出端;所述RC电路的电容的另一端接地。
[0020]可选的,所述延时电路采用可编程逻辑器件构建。
[0021]一种地址分配方法,应用于以上所述的串行总线系统,所述方法包括:
[0022]为起始节点分配初始地址Si ;
[0023]起始节点在脉冲信号线上发出一个脉冲,并在时钟线上发出周期为T的方波,其中所述脉冲的持续时间小于所述周期T ;
[0024]当前节点计算接收到所述脉冲和所述方波的时间差;所述当前节点为除所述起始节点之外的其他节点中的任意一个节点;
[0025]当前节点根据所述初始地址Si以及所述时间差计算自身地址。
[0026]可选的,所述当前节点计算接收到所述脉冲和所述方波的时间差具体包括:
[0027]从所述方波的第一个上升沿开始计时,到当前节点接收到的脉冲信号发生第一个上升沿时结束,获取当前节点的计时时间△ T作为所述时间差。
[0028]可选的,所述根据所述初始地址Si以及所述时间差计算自身地址具体包括:
[0029]根据公式sn = sl+(AT+T-t)/T计算当前节点的地址,其中,η为当前节点的顺序号,t为延时电路的延时时间,t < T/2。
[0030]可选的,所述初始地址Si为O。
[0031]可选的,所述初始地址Si为I。
[0032]经由上述的技术方案可知,与现有技术相比,本发明公开了一种串行总线系统和地址分配方法,串行总线上的多个节点通过时钟线及脉冲信号线连接,并且,相邻两个节点之间设置有延时电路,起始节点在时钟线及脉冲信号线上同时发送信号,其他节点根据接收到的两个信号的时间差计算出各自的地址。各节点的CPU不参与其他节点的地址分配过程,因此,即使串行总线上的某个节点故障或不在线,也不会影响其他节点的地址分配。
【附图说明】
[0033]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034]图1为本发明实施例公开的一种串行总线系统的结构示意图;
[0035]图2为本发明实施例公开的一种延时电路效果图;
[0036]图3为本发明实施例公开的一种延时电路的具体结构;
[0037]图4为本发明实施例公开的一种地址分配方法流程示意图;
[0038]图5为本发明示例公开的一种串行总线系统的结构示意图;
[0039]图6为本发明示例公开的一种电平变化示意图;
[0040]图7为本发明实施例公开一种工业控制系统结构示意图。
【具体实施方式】
[0041]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0042]本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
[0043]由【背景技术】可知,现有技术中为串行总线上的各节点分配地址的方法由于各节点的CPU必须参与下一个节点的地址设置过程而导致当一个节点发生故障后,后续所有节点的地址都将无法正常分配。
[0044]为此,本发明公开了一种串行总线系统和地址分配方法,串行总线上的多个节点通过时钟线及脉冲信号线连接,并且,相邻两个节点之间设置有延时电路,起始节点在时钟线及脉冲信号线上同时发送信号,其他节点根据接收到的两个信号的时间差计算出各自的地址。各节点的CPU不参与其他节点的地址分配过程,因此,即使串行总线上的某个节点故障或不在线,也不会影响其他节点的地址分配。
[0045]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0046]请参阅附图1,为本发明公开的一种串行总线系统的实施例1的结构示意图,该系统具体包括:
[0047]串接有多个节点(节点1、节点2、……、节点m)的串行总线(LI)、时钟线(L2)以及脉冲信号线(L3);
[0048]相邻两个节点之间设置有延时电路(A);
[0049]其中,任意两个相邻节点之间的连接方式具体如下:
[0050]第一节点的第一端口(BI)通过所述脉冲信号线连接延时电路的脉冲信号输入端,所述延时电路的输出端通过所述脉冲信号线连接第二节点的第一端口(BI);
[0051]第一节点的第二端口(B2)通过所述时钟线连接延时电路的时钟信号输入端后,连接第二节点的第二端口(B2);
[0052]所述延时电路的时钟信号输入端(CLK)发生上升沿变化的预设时间(即延时电路的延时时间)之后,所述延时电路的输出端(Q)为延时电路的脉冲信号输入端(D)在时钟信号输入端(CLK)发生上升沿变化的时刻的状态;所述延时电路的时钟信号输入端(CLK)未发生上升沿变化时,所述延时电路的输出端(Q)的状态不改变,具体的可参见图2所示的延时电路效果图。
[0053]本实施例公开了一种串行总线系统,串行总线上的多个节点通过时钟线及脉冲信号线连接,并且,相邻两个节点之间设置有延时电路,基于该系统,起始节点在时钟线及脉冲信号线上同时发送信号,其他节点根据接收到的两个信号的时间差计算出各自的地址。各节点的CPU不参与其他节点的地址分配过程,因此,即使串行总线上的某个节点故障或不在线,也不会影响其他节点的地址分配。
[0054]另外,本发明还公开了一种延时电路的具体结构,具体请参阅附图3的示意图。
[0055]所述延时电路包括:
[0056]D触发器和RC电路;
[0057]其中,所述RC电路由电阻(R)和电容(C)组成;
[0058]D触发器的第一输入端(DO)为所述延时电路的脉冲信号输入端⑶;
[0059]D触发器的第二输入端(CLKO)为所述延时电路的时钟信号输入端(CLK);
[0060]D触发器的输出端(QO)与所述RC电路的电阻一端相连,所述RC电路的电阻的另一端连接所述RC电路的电容的一端后为所述延时电路的输出端(Q);所述RC电路的电容的另一端接地。
[0061]需要说明的是,调节电阻阻值、电容容量,可以调节延时电路的延时时间。
[0062]进一步需要说明的是,所述延时电路采用可编程逻辑器件,如CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑器件)、FPGA (Field — Programmable GateArray,现场可编程门阵列)等构建。以CPLD为例,具体的,将CPLD的2根输入管脚分别定义为D和CLK,I根输出管脚定义为Q。同样在每2个节点之间放置一个CPLD单元,并用相同的方式将各个管脚连接起来。然后,对CPLD进行编程,通
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1