本發(fā)明涉及通信技術(shù)領(lǐng)域,更具體地說,涉及主從式多機(jī)通信系統(tǒng)、主機(jī)、從機(jī)以及從機(jī)ID分配方法。
背景技術(shù):
主從式多機(jī)通信系統(tǒng)是由一臺(tái)作管理用的上位主計(jì)算機(jī)(簡稱主機(jī))和若干臺(tái)直接參與控制檢測的下位從計(jì)算機(jī)(簡稱從機(jī))掛接在同一條總線上構(gòu)成的通信網(wǎng)絡(luò),如圖1所示。整個(gè)通信網(wǎng)絡(luò)的通信數(shù)據(jù)發(fā)送權(quán)限由主機(jī)控制,從機(jī)只能被動(dòng)地接收、執(zhí)行主機(jī)發(fā)來的命令以及根據(jù)主機(jī)的要求回傳數(shù)據(jù)。當(dāng)主機(jī)對從機(jī)進(jìn)行點(diǎn)對點(diǎn)通信時(shí),需要事先獲悉該從機(jī)的ID,實(shí)現(xiàn)通信地址匹配,所以在此之前,需要為每個(gè)從機(jī)分配一個(gè)唯一的ID。
常用的從機(jī)ID分配方法是使用撥碼開關(guān)等硬件電路對各從機(jī)的ID進(jìn)行分配,但由于需要額外增加硬件電路,導(dǎo)致硬件成本增加,且從機(jī)個(gè)數(shù)越多硬件電路設(shè)計(jì)越復(fù)雜。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了主從式多機(jī)通信系統(tǒng)、主機(jī)、從機(jī)以及從機(jī)ID分配方法,以實(shí)現(xiàn)在不增加硬件成本的前提下,完成從機(jī)ID分配。
一種從機(jī)ID分配方法,應(yīng)用于主從式多機(jī)通信系統(tǒng)中的主機(jī),所述方法包括:
生成攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,并發(fā)送給所述主從式多機(jī)通信系統(tǒng)中的所有從機(jī);其中,所述廣播命令用于控制未分配ID的從機(jī)參加總線競爭,由競爭到總線的從機(jī)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能;
判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī);
若判斷得到所述主從式多機(jī)通信系統(tǒng)中還有未分配ID的從機(jī),則在接收到競爭到總線的從機(jī)回傳的數(shù)據(jù)時(shí),更新所述計(jì)數(shù)器當(dāng)前值,生成并向所有從機(jī)發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令;之后,再次判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī),直至判斷得到所有從機(jī)都已分配ID。
其中,所述判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī),包括:
判斷總線是否處于被占用狀態(tài),若是,判定所述主從式多機(jī)通信系統(tǒng)中還有未分配ID的從機(jī)。
其中,所述計(jì)數(shù)器為增計(jì)數(shù)器、減計(jì)數(shù)器或者其他任何一種能夠?qū)崿F(xiàn)不重復(fù)計(jì)數(shù)的計(jì)數(shù)器。
其中,當(dāng)所述計(jì)數(shù)器為增計(jì)數(shù)器時(shí),設(shè)定所述計(jì)數(shù)器的計(jì)數(shù)初值為1;
所述更新所述計(jì)數(shù)器當(dāng)前值,包括:將所述計(jì)數(shù)器當(dāng)前值累加1。
一種從機(jī)ID分配方法,應(yīng)用于主從式多機(jī)通信系統(tǒng)中的從機(jī),所述方法包括:
接收攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令;
判斷本從機(jī)的數(shù)據(jù)發(fā)送功能是否關(guān)閉;
若本從機(jī)的數(shù)據(jù)發(fā)送功能未關(guān)閉,參加總線競爭,在本從機(jī)競爭到總線時(shí)將所述計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能。
一種用于主從式多機(jī)通信系統(tǒng)中的主機(jī),包括處理器;
所述處理器用于生成攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,并發(fā)送給所述主從式多機(jī)通信系統(tǒng)中的所有從機(jī);其中,所述廣播命令用于控制未分配ID的從機(jī)參加總線競爭,由競爭到總線的從機(jī)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能;
所述處理器還用于判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī),若是,則在接收到競爭到總線的從機(jī)回傳的數(shù)據(jù)時(shí),更新所述計(jì)數(shù)器當(dāng)前值,生成并向所有從機(jī)發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令,之后再次判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī),直至判斷得到所有從機(jī)都已分配ID。
其中,所述處理器判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī)所采用的判據(jù),包括:判斷總線是否處于被占用狀態(tài),若是,判定所述主從式多機(jī)通信系統(tǒng)中還有未分配ID的從機(jī)。
其中,所述計(jì)數(shù)器為增計(jì)數(shù)器或減計(jì)數(shù)器或者其他任何一種能夠?qū)崿F(xiàn)不重復(fù)計(jì)數(shù)的計(jì)數(shù)器。
一種用于主從式多機(jī)通信系統(tǒng)中的從機(jī),包括處理器;
所述處理器,用于接收攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,判斷本從機(jī)的數(shù)據(jù)發(fā)送功能是否關(guān)閉,若未關(guān)閉,則參加總線競爭,在本從機(jī)競爭到總線時(shí)將所述計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能。
一種主從式多機(jī)通信系統(tǒng),包括:如上述公開的任一種主機(jī),以及若干臺(tái)如上述公開的從機(jī)。
從上述的技術(shù)方案可以看出,本發(fā)明基于總線仲裁機(jī)制完成從機(jī)ID分配,具體的:主機(jī)向所有從機(jī)發(fā)送攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,控制未分配ID的從機(jī)參加總線競爭,競爭到總線的從機(jī)會(huì)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并不再參加后續(xù)總線競爭;此后,主機(jī)每次接收到上一次競爭到總線的從機(jī)回傳的數(shù)據(jù)后,都發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令,直至所有從機(jī)都分配到唯一的ID。整個(gè)從機(jī)ID分配過程通過軟件實(shí)現(xiàn),不會(huì)增加硬件成本。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)公開的一種主從式多機(jī)通信系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例公開的一種應(yīng)用于主機(jī)的從機(jī)ID分配方法流程圖;
圖3為本發(fā)明實(shí)施例公開的一種應(yīng)用于從機(jī)的從機(jī)ID分配方法流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參見圖2,本發(fā)明實(shí)施例公開了一種從機(jī)ID分配方法,應(yīng)用于主從式多機(jī)通信系統(tǒng)中的主機(jī),以實(shí)現(xiàn)在不增加硬件成本的前提下,完成從機(jī)ID分配,所述方法包括:
步驟S01:生成并向所有從機(jī)發(fā)出攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令;其中,所述廣播命令用于控制未分配ID的從機(jī)參加總線競爭,由競爭到總線的從機(jī)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能。
步驟S02:判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī);當(dāng)判斷得到所述主從式多機(jī)通信系統(tǒng)中還有未分配ID的從機(jī)時(shí),進(jìn)入步驟S03;否則,本次從機(jī)ID分配進(jìn)程結(jié)束。
步驟S03:判斷是否接收到競爭到總線的從機(jī)回傳的數(shù)據(jù);當(dāng)接收到競爭到總線的從機(jī)回傳的數(shù)據(jù)時(shí),進(jìn)入步驟S04;否則,返回步驟S03。
步驟S04:更新所述計(jì)數(shù)器當(dāng)前值,生成并向所有從機(jī)發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令;之后,返回步驟S02。
為了更清楚的描述本實(shí)施例所述的技術(shù)方案,下面從分析主從式多機(jī)通信系統(tǒng)的總線仲裁機(jī)制入手,對本實(shí)施例所述的技術(shù)方案進(jìn)行詳述。
一條總線上掛接有多臺(tái)計(jì)算機(jī)時(shí),總線仲裁機(jī)制允許總線上的任何一臺(tái)計(jì)算機(jī)都有機(jī)會(huì)占用總線(即取得總線的控制權(quán)并向外發(fā)送數(shù)據(jù)),但同一時(shí)刻只能有一臺(tái)計(jì)算機(jī)競爭到總線的控制權(quán)并向外發(fā)送數(shù)據(jù)(即競爭到總線)。主從式多機(jī)通信系統(tǒng)為保證整個(gè)通信網(wǎng)絡(luò)的數(shù)據(jù)發(fā)送權(quán)限由所述多臺(tái)計(jì)算機(jī)中的主機(jī)控制,賦予主機(jī)的總線優(yōu)先權(quán)高于所有從機(jī),各從機(jī)的總線優(yōu)先權(quán)相等。也就是說,當(dāng)同一時(shí)刻有一臺(tái)主機(jī)和若干臺(tái)從機(jī)參加總線競爭時(shí),必然是主機(jī)競爭到總線;而當(dāng)同一時(shí)刻有若干臺(tái)從機(jī)參加總線競爭、主機(jī)不參加總線競爭時(shí),也總有一臺(tái)從機(jī)將競爭到總線。
基于上述總線仲裁機(jī)制,本實(shí)施例設(shè)置主從式多機(jī)通信系統(tǒng)中的主機(jī)在系統(tǒng)啟動(dòng)后,生成并向所有從機(jī)發(fā)出攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令(在主從式多機(jī)通信系統(tǒng)中,主機(jī)發(fā)給一個(gè)通信網(wǎng)絡(luò)內(nèi)若干或所有從機(jī)的控制命令,稱為廣播命令)。其中,所述計(jì)數(shù)器可以是增計(jì)數(shù)器,也可以是減計(jì)數(shù)器,也可以是其他任何一種能夠?qū)崿F(xiàn)不重復(fù)計(jì)數(shù)的計(jì)數(shù)器,所述計(jì)數(shù)器的計(jì)數(shù)初值可以根據(jù)需要任意設(shè)置,比如說,將所述計(jì)數(shù)器選擇為增計(jì)數(shù)器,并設(shè)定所述增計(jì)數(shù)器的計(jì)數(shù)初值為1。
各從機(jī)接收到主機(jī)首次發(fā)出的廣播命令后,參加總線競爭,競爭到總線的從機(jī)(假設(shè)為A從機(jī))將主機(jī)首次發(fā)出的廣播命令中攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能,關(guān)閉數(shù)據(jù)發(fā)送功能后的從機(jī)不具備繼續(xù)參加總線競爭的能力。
其余從機(jī)繼續(xù)參加總線競爭;與此同時(shí),主機(jī)接收到A從機(jī)回傳的數(shù)據(jù)后,更新所述計(jì)數(shù)器的當(dāng)前值,生成并發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的廣播命令,也參與到總線競爭中來,由于主機(jī)的總線優(yōu)先權(quán)高于所有從機(jī),所以主機(jī)在總線競爭中必然勝出,可以成功地二次發(fā)送廣播命令。
各從機(jī)接收到主機(jī)二次發(fā)出的廣播命令后,除A從機(jī)外的所有從機(jī)參加總線競爭,競爭到總線的從機(jī)(假設(shè)為B從機(jī))將主機(jī)二次發(fā)出的廣播命令中攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能,不再繼續(xù)參加后續(xù)的總線競爭。
除A、B從機(jī)外的所有從機(jī)繼續(xù)參加總線競爭;與此同時(shí),主機(jī)接收到B從機(jī)回傳的數(shù)據(jù)后,更新計(jì)數(shù)器的當(dāng)前值,……,以此循環(huán),直至所有從機(jī)都分配到唯一的ID。
其中,在主機(jī)事先未知從機(jī)總個(gè)數(shù)為多少的情況下,主機(jī)判斷所有從機(jī)是否都分配到唯一的ID的方法,可以是:判斷總線是否處于被占用狀態(tài),若是,判定所述主從式多機(jī)通信系統(tǒng)中還有未分配ID的從機(jī);若否,判定所述主從式多機(jī)通信系統(tǒng)中的所有從機(jī)都已分配ID。具體分析如下:
在總線上掛接的若干或所有計(jì)算機(jī)參加總線競爭以及發(fā)送/接收數(shù)據(jù)期間,總線處于被占用狀態(tài);各計(jì)算機(jī)之間不進(jìn)行總線競爭和數(shù)據(jù)通信期間,總線處于空閑狀態(tài)?;诖?,主機(jī)每一次發(fā)出廣播命令后,若檢測到總線處于被占用狀態(tài),則可斷定系統(tǒng)中還有未分配ID的從機(jī),若檢測到總線處于空閑狀態(tài),則可斷定所有從機(jī)都已分配ID。
對應(yīng)上述判斷方法,當(dāng)所述計(jì)數(shù)器選擇為增計(jì)數(shù)器,并設(shè)定所述增計(jì)數(shù)器的計(jì)數(shù)初值為1時(shí),如果設(shè)定每次更新增計(jì)數(shù)器當(dāng)前值為將增計(jì)數(shù)器當(dāng)前值累加1,則在主機(jī)判斷得到所有從機(jī)都已分配ID后,可以直接計(jì)算得到從機(jī)總個(gè)數(shù)為n-1(n為增計(jì)數(shù)器當(dāng)前值)。
綜上所述,本實(shí)施例基于總線仲裁機(jī)制完成從機(jī)ID分配,具體的:主機(jī)向所有從機(jī)發(fā)送攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,控制未分配ID的從機(jī)參加總線競爭,競爭到總線的從機(jī)會(huì)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并不再參加后續(xù)總線競爭;此后,主機(jī)每次接收到上一次競爭到總線的從機(jī)回傳的數(shù)據(jù)后,都發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令,直至所有從機(jī)都分配到唯一的ID。整個(gè)從機(jī)ID分配過程通過軟件實(shí)現(xiàn),不會(huì)增加硬件成本。
參見圖3,基于同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例還公開了一種從機(jī)ID分配方法,應(yīng)用于主從式多機(jī)通信系統(tǒng)中的從機(jī),所述方法包括:
步驟S01:接收攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令;
步驟S02:判斷本從機(jī)的數(shù)據(jù)發(fā)送功能是否已關(guān)閉;若本從機(jī)的數(shù)據(jù)發(fā)送功能未關(guān)閉,進(jìn)入步驟S03;否則程序結(jié)束;
步驟S03:參加總線競爭,在本從機(jī)競爭到總線時(shí)將所述計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能。
本發(fā)明實(shí)施例還公開了一種用于主從式多機(jī)通信系統(tǒng)中的主機(jī)。該主機(jī)的處理器用于生成攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,并發(fā)送給所述主從式多機(jī)通信系統(tǒng)中的所有從機(jī);其中,所述廣播命令用于控制未分配ID的從機(jī)參加總線競爭,由競爭到總線的從機(jī)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能;
該主機(jī)的處理器還用于判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī),若是,則在接收到競爭到總線的從機(jī)回傳的數(shù)據(jù)時(shí),更新所述計(jì)數(shù)器當(dāng)前值,生成并向所有從機(jī)發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令,之后再次判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī),直至判斷得到所有從機(jī)都已分配ID。
其中,所述處理器判斷所述主從式多機(jī)通信系統(tǒng)中是否還有未分配ID的從機(jī)所采用的判據(jù),包括:判斷總線是否處于被占用狀態(tài),若是,判定所述主從式多機(jī)通信系統(tǒng)中還有未分配ID的從機(jī)。
其中,所述計(jì)數(shù)器可以是增計(jì)數(shù)器,也可以是減計(jì)數(shù)器。
本發(fā)明實(shí)施例還公開了一種用于主從式多機(jī)通信系統(tǒng)中的從機(jī)。該從機(jī)的處理器,用于接收攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,判斷本從機(jī)的數(shù)據(jù)發(fā)送功能是否關(guān)閉,若未關(guān)閉,則參加總線競爭,在本從機(jī)競爭到總線時(shí)將所述計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并關(guān)閉本從機(jī)的數(shù)據(jù)發(fā)送功能。
本發(fā)明實(shí)施例還公開了一種主從式多機(jī)通信系統(tǒng),包括:如上述公開的任一種主機(jī),以及若干臺(tái)如上述公開的從機(jī)。
綜上所述,本發(fā)明基于總線仲裁機(jī)制完成從機(jī)ID分配,具體的:主機(jī)向所有從機(jī)發(fā)送攜帶有計(jì)數(shù)器當(dāng)前值的廣播命令,控制未分配ID的從機(jī)參加總線競爭,競爭到總線的從機(jī)會(huì)將所述廣播命令所攜帶的計(jì)數(shù)器當(dāng)前值保存為本從機(jī)唯一的ID,并不再參加后續(xù)總線競爭;此后,主機(jī)每次接收到上一次競爭到總線的從機(jī)回傳的數(shù)據(jù)后,都發(fā)出攜帶有更新后的計(jì)數(shù)器當(dāng)前值的所述廣播命令,直至所有從機(jī)都分配到唯一的ID。整個(gè)從機(jī)ID分配過程通過軟件實(shí)現(xiàn),不會(huì)增加硬件成本。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的主機(jī)、從機(jī)而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明實(shí)施例的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明實(shí)施例將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。