主从式多机通信系统、主机、从机以及从机ID分配方法与流程

文档序号:12623086阅读:533来源:国知局
主从式多机通信系统、主机、从机以及从机ID分配方法与流程

本发明涉及通信技术领域,更具体地说,涉及主从式多机通信系统、主机、从机以及从机ID分配方法。



背景技术:

主从式多机通信系统是由一台作管理用的上位主计算机(简称主机)和若干台直接参与控制检测的下位从计算机(简称从机)挂接在同一条总线上构成的通信网络,如图1所示。整个通信网络的通信数据发送权限由主机控制,从机只能被动地接收、执行主机发来的命令以及根据主机的要求回传数据。当主机对从机进行点对点通信时,需要事先获悉该从机的ID,实现通信地址匹配,所以在此之前,需要为每个从机分配一个唯一的ID。

常用的从机ID分配方法是使用拨码开关等硬件电路对各从机的ID进行分配,但由于需要额外增加硬件电路,导致硬件成本增加,且从机个数越多硬件电路设计越复杂。



技术实现要素:

有鉴于此,本发明提供了主从式多机通信系统、主机、从机以及从机ID分配方法,以实现在不增加硬件成本的前提下,完成从机ID分配。

一种从机ID分配方法,应用于主从式多机通信系统中的主机,所述方法包括:

生成携带有计数器当前值的广播命令,并发送给所述主从式多机通信系统中的所有从机;其中,所述广播命令用于控制未分配ID的从机参加总线竞争,由竞争到总线的从机将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能;

判断所述主从式多机通信系统中是否还有未分配ID的从机;

若判断得到所述主从式多机通信系统中还有未分配ID的从机,则在接收到竞争到总线的从机回传的数据时,更新所述计数器当前值,生成并向所有从机发出携带有更新后的计数器当前值的所述广播命令;之后,再次判断所述主从式多机通信系统中是否还有未分配ID的从机,直至判断得到所有从机都已分配ID。

其中,所述判断所述主从式多机通信系统中是否还有未分配ID的从机,包括:

判断总线是否处于被占用状态,若是,判定所述主从式多机通信系统中还有未分配ID的从机。

其中,所述计数器为增计数器、减计数器或者其他任何一种能够实现不重复计数的计数器。

其中,当所述计数器为增计数器时,设定所述计数器的计数初值为1;

所述更新所述计数器当前值,包括:将所述计数器当前值累加1。

一种从机ID分配方法,应用于主从式多机通信系统中的从机,所述方法包括:

接收携带有计数器当前值的广播命令;

判断本从机的数据发送功能是否关闭;

若本从机的数据发送功能未关闭,参加总线竞争,在本从机竞争到总线时将所述计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能。

一种用于主从式多机通信系统中的主机,包括处理器;

所述处理器用于生成携带有计数器当前值的广播命令,并发送给所述主从式多机通信系统中的所有从机;其中,所述广播命令用于控制未分配ID的从机参加总线竞争,由竞争到总线的从机将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能;

所述处理器还用于判断所述主从式多机通信系统中是否还有未分配ID的从机,若是,则在接收到竞争到总线的从机回传的数据时,更新所述计数器当前值,生成并向所有从机发出携带有更新后的计数器当前值的所述广播命令,之后再次判断所述主从式多机通信系统中是否还有未分配ID的从机,直至判断得到所有从机都已分配ID。

其中,所述处理器判断所述主从式多机通信系统中是否还有未分配ID的从机所采用的判据,包括:判断总线是否处于被占用状态,若是,判定所述主从式多机通信系统中还有未分配ID的从机。

其中,所述计数器为增计数器或减计数器或者其他任何一种能够实现不重复计数的计数器。

一种用于主从式多机通信系统中的从机,包括处理器;

所述处理器,用于接收携带有计数器当前值的广播命令,判断本从机的数据发送功能是否关闭,若未关闭,则参加总线竞争,在本从机竞争到总线时将所述计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能。

一种主从式多机通信系统,包括:如上述公开的任一种主机,以及若干台如上述公开的从机。

从上述的技术方案可以看出,本发明基于总线仲裁机制完成从机ID分配,具体的:主机向所有从机发送携带有计数器当前值的广播命令,控制未分配ID的从机参加总线竞争,竞争到总线的从机会将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并不再参加后续总线竞争;此后,主机每次接收到上一次竞争到总线的从机回传的数据后,都发出携带有更新后的计数器当前值的所述广播命令,直至所有从机都分配到唯一的ID。整个从机ID分配过程通过软件实现,不会增加硬件成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术公开的一种主从式多机通信系统结构示意图;

图2为本发明实施例公开的一种应用于主机的从机ID分配方法流程图;

图3为本发明实施例公开的一种应用于从机的从机ID分配方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图2,本发明实施例公开了一种从机ID分配方法,应用于主从式多机通信系统中的主机,以实现在不增加硬件成本的前提下,完成从机ID分配,所述方法包括:

步骤S01:生成并向所有从机发出携带有计数器当前值的广播命令;其中,所述广播命令用于控制未分配ID的从机参加总线竞争,由竞争到总线的从机将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能。

步骤S02:判断所述主从式多机通信系统中是否还有未分配ID的从机;当判断得到所述主从式多机通信系统中还有未分配ID的从机时,进入步骤S03;否则,本次从机ID分配进程结束。

步骤S03:判断是否接收到竞争到总线的从机回传的数据;当接收到竞争到总线的从机回传的数据时,进入步骤S04;否则,返回步骤S03。

步骤S04:更新所述计数器当前值,生成并向所有从机发出携带有更新后的计数器当前值的所述广播命令;之后,返回步骤S02。

为了更清楚的描述本实施例所述的技术方案,下面从分析主从式多机通信系统的总线仲裁机制入手,对本实施例所述的技术方案进行详述。

一条总线上挂接有多台计算机时,总线仲裁机制允许总线上的任何一台计算机都有机会占用总线(即取得总线的控制权并向外发送数据),但同一时刻只能有一台计算机竞争到总线的控制权并向外发送数据(即竞争到总线)。主从式多机通信系统为保证整个通信网络的数据发送权限由所述多台计算机中的主机控制,赋予主机的总线优先权高于所有从机,各从机的总线优先权相等。也就是说,当同一时刻有一台主机和若干台从机参加总线竞争时,必然是主机竞争到总线;而当同一时刻有若干台从机参加总线竞争、主机不参加总线竞争时,也总有一台从机将竞争到总线。

基于上述总线仲裁机制,本实施例设置主从式多机通信系统中的主机在系统启动后,生成并向所有从机发出携带有计数器当前值的广播命令(在主从式多机通信系统中,主机发给一个通信网络内若干或所有从机的控制命令,称为广播命令)。其中,所述计数器可以是增计数器,也可以是减计数器,也可以是其他任何一种能够实现不重复计数的计数器,所述计数器的计数初值可以根据需要任意设置,比如说,将所述计数器选择为增计数器,并设定所述增计数器的计数初值为1。

各从机接收到主机首次发出的广播命令后,参加总线竞争,竞争到总线的从机(假设为A从机)将主机首次发出的广播命令中携带的计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能,关闭数据发送功能后的从机不具备继续参加总线竞争的能力。

其余从机继续参加总线竞争;与此同时,主机接收到A从机回传的数据后,更新所述计数器的当前值,生成并发出携带有更新后的计数器当前值的广播命令,也参与到总线竞争中来,由于主机的总线优先权高于所有从机,所以主机在总线竞争中必然胜出,可以成功地二次发送广播命令。

各从机接收到主机二次发出的广播命令后,除A从机外的所有从机参加总线竞争,竞争到总线的从机(假设为B从机)将主机二次发出的广播命令中携带的计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能,不再继续参加后续的总线竞争。

除A、B从机外的所有从机继续参加总线竞争;与此同时,主机接收到B从机回传的数据后,更新计数器的当前值,……,以此循环,直至所有从机都分配到唯一的ID。

其中,在主机事先未知从机总个数为多少的情况下,主机判断所有从机是否都分配到唯一的ID的方法,可以是:判断总线是否处于被占用状态,若是,判定所述主从式多机通信系统中还有未分配ID的从机;若否,判定所述主从式多机通信系统中的所有从机都已分配ID。具体分析如下:

在总线上挂接的若干或所有计算机参加总线竞争以及发送/接收数据期间,总线处于被占用状态;各计算机之间不进行总线竞争和数据通信期间,总线处于空闲状态。基于此,主机每一次发出广播命令后,若检测到总线处于被占用状态,则可断定系统中还有未分配ID的从机,若检测到总线处于空闲状态,则可断定所有从机都已分配ID。

对应上述判断方法,当所述计数器选择为增计数器,并设定所述增计数器的计数初值为1时,如果设定每次更新增计数器当前值为将增计数器当前值累加1,则在主机判断得到所有从机都已分配ID后,可以直接计算得到从机总个数为n-1(n为增计数器当前值)。

综上所述,本实施例基于总线仲裁机制完成从机ID分配,具体的:主机向所有从机发送携带有计数器当前值的广播命令,控制未分配ID的从机参加总线竞争,竞争到总线的从机会将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并不再参加后续总线竞争;此后,主机每次接收到上一次竞争到总线的从机回传的数据后,都发出携带有更新后的计数器当前值的所述广播命令,直至所有从机都分配到唯一的ID。整个从机ID分配过程通过软件实现,不会增加硬件成本。

参见图3,基于同样的发明构思,本发明实施例还公开了一种从机ID分配方法,应用于主从式多机通信系统中的从机,所述方法包括:

步骤S01:接收携带有计数器当前值的广播命令;

步骤S02:判断本从机的数据发送功能是否已关闭;若本从机的数据发送功能未关闭,进入步骤S03;否则程序结束;

步骤S03:参加总线竞争,在本从机竞争到总线时将所述计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能。

本发明实施例还公开了一种用于主从式多机通信系统中的主机。该主机的处理器用于生成携带有计数器当前值的广播命令,并发送给所述主从式多机通信系统中的所有从机;其中,所述广播命令用于控制未分配ID的从机参加总线竞争,由竞争到总线的从机将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能;

该主机的处理器还用于判断所述主从式多机通信系统中是否还有未分配ID的从机,若是,则在接收到竞争到总线的从机回传的数据时,更新所述计数器当前值,生成并向所有从机发出携带有更新后的计数器当前值的所述广播命令,之后再次判断所述主从式多机通信系统中是否还有未分配ID的从机,直至判断得到所有从机都已分配ID。

其中,所述处理器判断所述主从式多机通信系统中是否还有未分配ID的从机所采用的判据,包括:判断总线是否处于被占用状态,若是,判定所述主从式多机通信系统中还有未分配ID的从机。

其中,所述计数器可以是增计数器,也可以是减计数器。

本发明实施例还公开了一种用于主从式多机通信系统中的从机。该从机的处理器,用于接收携带有计数器当前值的广播命令,判断本从机的数据发送功能是否关闭,若未关闭,则参加总线竞争,在本从机竞争到总线时将所述计数器当前值保存为本从机唯一的ID,并关闭本从机的数据发送功能。

本发明实施例还公开了一种主从式多机通信系统,包括:如上述公开的任一种主机,以及若干台如上述公开的从机。

综上所述,本发明基于总线仲裁机制完成从机ID分配,具体的:主机向所有从机发送携带有计数器当前值的广播命令,控制未分配ID的从机参加总线竞争,竞争到总线的从机会将所述广播命令所携带的计数器当前值保存为本从机唯一的ID,并不再参加后续总线竞争;此后,主机每次接收到上一次竞争到总线的从机回传的数据后,都发出携带有更新后的计数器当前值的所述广播命令,直至所有从机都分配到唯一的ID。整个从机ID分配过程通过软件实现,不会增加硬件成本。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的主机、从机而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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