一種串行總線系統(tǒng)及地址分配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及串行總線技術(shù)領(lǐng)域,更具體的說,是涉及一種串行總線系統(tǒng)及地址分配方法。
【背景技術(shù)】
[0002]串行總線(如RS485、CAN等)是采用一條電纜作總線,將各個(gè)節(jié)點(diǎn)串接起來進(jìn)行通信的方式。由于其硬件設(shè)計(jì)簡單、布線方便、成本低廉等優(yōu)點(diǎn),在工業(yè)控制、樓宇控制、環(huán)境監(jiān)測、電子設(shè)備等各種場合中廣泛應(yīng)用。
[0003]串行總線上的各個(gè)節(jié)點(diǎn)掛接上同一條總線上,一個(gè)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,所有其他節(jié)點(diǎn)都能接收到。為了區(qū)分?jǐn)?shù)據(jù)包的接收方,就必須對(duì)總線上的節(jié)點(diǎn)進(jìn)行地址編碼,并在數(shù)據(jù)包中增加接收方的地址信息。
[0004]現(xiàn)有技術(shù)中,常用的一種為串行總線上的各節(jié)點(diǎn)分配地址的方法,S卩,將所有串行總線上的各個(gè)節(jié)點(diǎn)逐個(gè)級(jí)聯(lián),然后由第I個(gè)節(jié)點(diǎn)設(shè)置第2個(gè)節(jié)點(diǎn)的地址,再由第2個(gè)節(jié)點(diǎn)設(shè)置第3個(gè)節(jié)點(diǎn)的地址,以此類推,直至最后的節(jié)點(diǎn)。但是,上述為串行總線上的各節(jié)點(diǎn)分配地址的方法存在如下問題:各節(jié)點(diǎn)的CPU必須參與下一個(gè)節(jié)點(diǎn)的地址設(shè)置過程,因此當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障后,后續(xù)所有節(jié)點(diǎn)的地址都將無法正常分配。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種串行總線系統(tǒng)及地址分配的方法,以克服現(xiàn)有技術(shù)中為串行總線上的各節(jié)點(diǎn)分配地址的方法由于各節(jié)點(diǎn)的CPU必須參與下一個(gè)節(jié)點(diǎn)的地址設(shè)置過程而導(dǎo)致的當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障后,后續(xù)所有節(jié)點(diǎn)的地址都將無法正常分配的問題。
[0006]為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
[0007]一種串行總線系統(tǒng),包括:
[0008]串接有多個(gè)節(jié)點(diǎn)的串行總線、時(shí)鐘線以及脈沖信號(hào)線;
[0009]相鄰兩個(gè)節(jié)點(diǎn)之間設(shè)置有延時(shí)電路;
[0010]其中,任意兩個(gè)相鄰節(jié)點(diǎn)之間的連接方式具體如下:
[0011]第一節(jié)點(diǎn)的第一端口通過所述脈沖信號(hào)線連接延時(shí)電路的脈沖信號(hào)輸入端,所述延時(shí)電路的輸出端通過所述脈沖信號(hào)線連接第二節(jié)點(diǎn)的第一端口;
[0012]第一節(jié)點(diǎn)的第二端口通過所述時(shí)鐘線連接延時(shí)電路的時(shí)鐘信號(hào)輸入端后,連接第二節(jié)點(diǎn)的第二端口;
[0013]所述延時(shí)電路的時(shí)鐘信號(hào)輸入端發(fā)生上升沿變化的預(yù)設(shè)時(shí)間之后,所述延時(shí)電路的輸出端為延時(shí)電路的脈沖信號(hào)輸入端在時(shí)鐘信號(hào)輸入端發(fā)生上升沿變化的時(shí)刻的狀態(tài);所述延時(shí)電路的時(shí)鐘信號(hào)輸入端未發(fā)生上升沿變化時(shí),所述延時(shí)電路的輸出端的狀態(tài)不改變。
[0014]可選的,所述延時(shí)電路包括:
[0015]D觸發(fā)器和RC電路;
[0016]其中,所述RC電路由電阻(R)和電容(C)組成;
[0017]D觸發(fā)器的第一輸入端(DO)為所述延時(shí)電路的脈沖信號(hào)輸入端;
[0018]D觸發(fā)器的第二輸入端(CLKO)為所述延時(shí)電路的時(shí)鐘信號(hào)輸入端;
[0019]D觸發(fā)器的輸出端(QO)與所述RC電路的電阻一端相連,所述RC電路的電阻的另一端連接所述RC電路的電容的一端后為所述延時(shí)電路的輸出端;所述RC電路的電容的另一端接地。
[0020]可選的,所述延時(shí)電路采用可編程邏輯器件構(gòu)建。
[0021]一種地址分配方法,應(yīng)用于以上所述的串行總線系統(tǒng),所述方法包括:
[0022]為起始節(jié)點(diǎn)分配初始地址Si ;
[0023]起始節(jié)點(diǎn)在脈沖信號(hào)線上發(fā)出一個(gè)脈沖,并在時(shí)鐘線上發(fā)出周期為T的方波,其中所述脈沖的持續(xù)時(shí)間小于所述周期T ;
[0024]當(dāng)前節(jié)點(diǎn)計(jì)算接收到所述脈沖和所述方波的時(shí)間差;所述當(dāng)前節(jié)點(diǎn)為除所述起始節(jié)點(diǎn)之外的其他節(jié)點(diǎn)中的任意一個(gè)節(jié)點(diǎn);
[0025]當(dāng)前節(jié)點(diǎn)根據(jù)所述初始地址Si以及所述時(shí)間差計(jì)算自身地址。
[0026]可選的,所述當(dāng)前節(jié)點(diǎn)計(jì)算接收到所述脈沖和所述方波的時(shí)間差具體包括:
[0027]從所述方波的第一個(gè)上升沿開始計(jì)時(shí),到當(dāng)前節(jié)點(diǎn)接收到的脈沖信號(hào)發(fā)生第一個(gè)上升沿時(shí)結(jié)束,獲取當(dāng)前節(jié)點(diǎn)的計(jì)時(shí)時(shí)間△ T作為所述時(shí)間差。
[0028]可選的,所述根據(jù)所述初始地址Si以及所述時(shí)間差計(jì)算自身地址具體包括:
[0029]根據(jù)公式sn = sl+(AT+T-t)/T計(jì)算當(dāng)前節(jié)點(diǎn)的地址,其中,η為當(dāng)前節(jié)點(diǎn)的順序號(hào),t為延時(shí)電路的延時(shí)時(shí)間,t < T/2。
[0030]可選的,所述初始地址Si為O。
[0031]可選的,所述初始地址Si為I。
[0032]經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明公開了一種串行總線系統(tǒng)和地址分配方法,串行總線上的多個(gè)節(jié)點(diǎn)通過時(shí)鐘線及脈沖信號(hào)線連接,并且,相鄰兩個(gè)節(jié)點(diǎn)之間設(shè)置有延時(shí)電路,起始節(jié)點(diǎn)在時(shí)鐘線及脈沖信號(hào)線上同時(shí)發(fā)送信號(hào),其他節(jié)點(diǎn)根據(jù)接收到的兩個(gè)信號(hào)的時(shí)間差計(jì)算出各自的地址。各節(jié)點(diǎn)的CPU不參與其他節(jié)點(diǎn)的地址分配過程,因此,即使串行總線上的某個(gè)節(jié)點(diǎn)故障或不在線,也不會(huì)影響其他節(jié)點(diǎn)的地址分配。
【附圖說明】
[0033]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0034]圖1為本發(fā)明實(shí)施例公開的一種串行總線系統(tǒng)的結(jié)構(gòu)示意圖;
[0035]圖2為本發(fā)明實(shí)施例公開的一種延時(shí)電路效果圖;
[0036]圖3為本發(fā)明實(shí)施例公開的一種延時(shí)電路的具體結(jié)構(gòu);
[0037]圖4為本發(fā)明實(shí)施例公開的一種地址分配方法流程示意圖;
[0038]圖5為本發(fā)明示例公開的一種串行總線系統(tǒng)的結(jié)構(gòu)示意圖;
[0039]圖6為本發(fā)明示例公開的一種電平變化示意圖;
[0040]圖7為本發(fā)明實(shí)施例公開一種工業(yè)控制系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0041]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0042]本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的術(shù)語在適當(dāng)情況下可以互換,這僅僅是描述本發(fā)明的實(shí)施例中對(duì)相同屬性的對(duì)象在描述時(shí)所采用的區(qū)分方式。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
[0043]由【背景技術(shù)】可知,現(xiàn)有技術(shù)中為串行總線上的各節(jié)點(diǎn)分配地址的方法由于各節(jié)點(diǎn)的CPU必須參與下一個(gè)節(jié)點(diǎn)的地址設(shè)置過程而導(dǎo)致當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障后,后續(xù)所有節(jié)點(diǎn)的地址都將無法正常分配。
[0044]為此,本發(fā)明公開了一種串行總線系統(tǒng)和地址分配方法,串行總線上的多個(gè)節(jié)點(diǎn)通過時(shí)鐘線及脈沖信號(hào)線連接,并且,相鄰兩個(gè)節(jié)點(diǎn)之間設(shè)置有延時(shí)電路,起始節(jié)點(diǎn)在時(shí)鐘線及脈沖信號(hào)線上同時(shí)發(fā)送信號(hào),其他節(jié)點(diǎn)根據(jù)接收到的兩個(gè)信號(hào)的時(shí)間差計(jì)算出各自的地址。各節(jié)點(diǎn)的CPU不參與其他節(jié)點(diǎn)的地址分配過程,因此,即使串行總線上的某個(gè)節(jié)點(diǎn)故障或不在線,也不會(huì)影響其他節(jié)點(diǎn)的地址分配。
[0045]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0046]請參閱附圖1,為本發(fā)明公開的一種串行總線系統(tǒng)的實(shí)施例1的結(jié)構(gòu)示意圖,該系統(tǒng)具體包括:
[0047]串接有多個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)1、節(jié)點(diǎn)2、……、節(jié)點(diǎn)m)的串行總線(LI)、時(shí)鐘線(L2)以及脈沖信號(hào)線(L3);
[0048]相鄰兩個(gè)節(jié)點(diǎn)之間設(shè)置有延時(shí)電路(A);
[0049]其中,任意兩個(gè)相鄰節(jié)點(diǎn)之間的連接方式具體如下:
[0050]第一節(jié)點(diǎn)的第一端口(BI)通過所述脈沖信號(hào)線連接延時(shí)電路的脈沖信號(hào)輸入端,所述延時(shí)電路的輸出端通過所述脈沖信號(hào)線連接第二節(jié)點(diǎn)的第一端口(BI);
[0051]第一節(jié)點(diǎn)的第二端口(B2)通過所述時(shí)鐘線連接延時(shí)電路的時(shí)鐘信號(hào)輸入端后,連接第二節(jié)點(diǎn)的第二端口(B2);
[0052]所述延時(shí)電路的時(shí)鐘信號(hào)輸入端(CLK)發(fā)生上升沿變化的預(yù)設(shè)時(shí)間(即延時(shí)電路的延時(shí)時(shí)間)之后,所述延時(shí)電路的輸出端(Q)為延時(shí)電路的脈沖信號(hào)輸入端(D)在時(shí)鐘信號(hào)輸入端(CLK)發(fā)生上升沿變化的時(shí)刻的狀態(tài);所述延時(shí)電路的時(shí)鐘信號(hào)輸入端(CLK)未發(fā)生上升沿變化時(shí),所述延時(shí)電路的輸出端(Q)的狀態(tài)不改變,具體的可參見圖2所示的延時(shí)電路效果圖。
[0053]本實(shí)施例公開了一種串行總線系統(tǒng),串行總線上的多個(gè)節(jié)點(diǎn)通過時(shí)鐘線及脈沖信號(hào)線連接,并且,相鄰兩個(gè)節(jié)點(diǎn)之間設(shè)置有延時(shí)電路,基于該系統(tǒng),起始節(jié)點(diǎn)在時(shí)鐘線及脈沖信號(hào)線上同時(shí)發(fā)送信號(hào),其他節(jié)點(diǎn)根據(jù)接收到的兩個(gè)信號(hào)的時(shí)間差計(jì)算出各自的地址。各節(jié)點(diǎn)的CPU不參與其他節(jié)點(diǎn)的地址分配過程,因此,即使串行總線上的某個(gè)節(jié)點(diǎn)故障或不在線,也不會(huì)影響其他節(jié)點(diǎn)的地址分配。
[0054]另外,本發(fā)明還公開了一種延時(shí)電路的具體結(jié)構(gòu),具體請參閱附圖3的示意圖。
[0055]所述延時(shí)電路包括:
[0056]D觸發(fā)器和RC電路;
[0057]其中,所述RC電路由電阻(R)和電容(C)組成;
[0058]D觸發(fā)器的第一輸入端(DO)為所述延時(shí)電路的脈沖信號(hào)輸入端⑶;
[0059]D觸發(fā)器的第二輸入端(CLKO)為所述延時(shí)電路的時(shí)鐘信號(hào)輸入端(CLK);
[0060]D觸發(fā)器的輸出端(QO)與所述RC電路的電阻一端相連,所述RC電路的電阻的另一端連接所述RC電路的電容的一端后為所述延時(shí)電路的輸出端(Q);所述RC電路的電容的另一端接地。
[0061]需要說明的是,調(diào)節(jié)電阻阻值、電容容量,可以調(diào)節(jié)延時(shí)電路的延時(shí)時(shí)間。
[0062]進(jìn)一步需要說明的是,所述延時(shí)電路采用可編程邏輯器件,如CPLD(ComplexProgrammable Logic Device,復(fù)雜可編程邏輯器件)、FPGA (Field — Programmable GateArray,現(xiàn)場可編程門陣列)等構(gòu)建。以CPLD為例,具體的,將CPLD的2根輸入管腳分別定義為D和CLK,I根輸出管腳定義為Q。同樣在每2個(gè)節(jié)點(diǎn)之間放置一個(gè)CPLD單元,并用相同的方式將各個(gè)管腳連接起來。然后,對(duì)CPLD進(jìn)行編程,通