本發(fā)明涉及通信技術領域,尤其涉及一種無主從通信方法及裝置。
背景技術:
現(xiàn)有的主從通信方法,如基于RS-485的通信方法中,在一個通信網(wǎng)絡中需指定一個主機,通信時序由該主機控制,主機采用查詢方式接收發(fā)送數(shù)據(jù),從機采用中斷方式接收發(fā)送數(shù)據(jù)。這種通信方法的缺點是,當主機有故障不能發(fā)送數(shù)據(jù)時,整個通信網(wǎng)絡會陷于癱瘓狀態(tài)。
解決上述問題可以采用無主從的通信方法?,F(xiàn)有的無主從通信方法中,例如基于CAN(Controller Area Network,控制器局域網(wǎng)絡)的通信方法。其中,在同一個通信網(wǎng)絡中的各節(jié)點不分主機、從機,每一個節(jié)點可視需要隨時發(fā)送數(shù)據(jù),不需要發(fā)送數(shù)據(jù)時不發(fā)送,使總線的通信利用率較高,且任一節(jié)點故障不會影響其他節(jié)點通信,從而提高了總線的可靠性。然而,這種無主從的通信方法成本較高,需要使用帶CAN功能的單片機或者專用的CAN通信芯片。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明提供一種無主從通信方法及裝置,在提高通信可靠性的同時,無需使用專用芯片來實現(xiàn)無主從功能,從而降低了成本。
根據(jù)本發(fā)明的第一方面,提供一種用于包括多個節(jié)點的通信網(wǎng)絡的無主從通信方法,包括:隨機數(shù)生成步驟,使所述通信網(wǎng)絡中的各節(jié)點生成隨機數(shù);時間計算步驟,根據(jù)所述隨機數(shù)計算一第一預定時間;以及主機確定步驟,根據(jù)在所述第一預定時間內(nèi)是否檢測到總線上有數(shù)據(jù)來確定主機。
進一步地,如果在所述第一預定時間檢測到總線上存在數(shù)據(jù)并收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該其他任一節(jié)點作為主機。
進一步地,如果某一節(jié)點在所述第一預定時間內(nèi)未檢測到總線上存在數(shù)據(jù),則將該節(jié)點作為主機主動發(fā)送數(shù)據(jù)。
進一步地,所述多個節(jié)點均產(chǎn)生隨機數(shù),且各節(jié)點所產(chǎn)生的隨機數(shù)各不相同;以及根據(jù)不同的隨機數(shù)計算出各節(jié)點的所述第一預定時間也不相同。
進一步地,所述通信網(wǎng)絡中的各所述節(jié)點上電后均處于通信接收狀態(tài),若在該第一預定時間內(nèi)正確地接收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該任一節(jié)點作為主機,并后續(xù)所述通信網(wǎng)絡的各節(jié)點進入正常的通信狀態(tài)。
進一步地,若某一節(jié)點在所述第一預定時間內(nèi)未檢測到主線上有數(shù)據(jù),則在該第一預定時間到達后該節(jié)點主動發(fā)送數(shù)據(jù),成為該通信網(wǎng)絡中的主機,從而所述通信網(wǎng)絡的其他各節(jié)點進入正常的通信狀態(tài)。
進一步地,所述的方法還包括:故障判斷步驟,在所述正常通信狀態(tài)中,若從機在一第二預定時間內(nèi)未收到來自主機的數(shù)據(jù),則判斷所述主機出現(xiàn)故障。
進一步地,所述的方法還包括:返回步驟,在判斷主機故障后返回信號,從而返回所述主機確定步驟,重新確定主機。
根據(jù)本發(fā)明的第二方面,提供一種用于包括多個節(jié)點的通信網(wǎng)絡的無主從通信裝置,包括:隨機數(shù)計算模塊、時間計算模塊以及主機確定模塊;所述隨機數(shù)生成模塊,使所述通信網(wǎng)絡中的各節(jié)點生成隨機數(shù);
時間計算模塊,根據(jù)所述隨機數(shù)計算一第一預定時間;以及主機確定模塊,根據(jù)在所述第一預定時間內(nèi)是否檢測到總線上有數(shù)據(jù)來確定主機。
進一步地,如果在所述第一預定時間檢測到總線上存在數(shù)據(jù)并收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該其他任一節(jié)點確定為主機。
進一步地,如果某一節(jié)點在所述第一預定時間內(nèi)未檢測到總線上存在數(shù)據(jù),則將該節(jié)點作為主機主動發(fā)送數(shù)據(jù)。
進一步地,所述多個節(jié)點均產(chǎn)生隨機數(shù),且各節(jié)點所產(chǎn)生的隨機數(shù)各不相同;以及根據(jù)不同的隨機數(shù)計算出各節(jié)點的所述第一預定時間也不相同。
進一步地,所述通信網(wǎng)絡中的各所述節(jié)點上電后均處于通信接收狀態(tài),若在該第一預定時間內(nèi)正確地接收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該任一節(jié)點作為主機,并后續(xù)所述通信網(wǎng)絡的各節(jié)點進入正常的通信狀態(tài)。
進一步地,若某一節(jié)點在所述第一預定時間內(nèi)未檢測到主線上有數(shù)據(jù),則在該第一預定時間到達后該節(jié)點主動發(fā)送數(shù)據(jù),成為該通信網(wǎng)絡中的主機,從而所述通信網(wǎng)絡的其他各節(jié)點進入正常的通信狀態(tài)。
進一步地,所述的裝置還包括:故障判斷模塊,用于在所述正常通信狀態(tài)中,若從機在一第二預定時間內(nèi)未收到來自主機的數(shù)據(jù),判斷所述主機出現(xiàn)故障。
進一步地,所述的裝置還包括:返回模塊,在判斷主機故障后返回信號,從而使主機確定模塊重新確定主機。
根據(jù)本發(fā)明的上述方案,通過根據(jù)在所述預定時間內(nèi)是否檢測到總線上是否存在數(shù)據(jù),即存在有某節(jié)點發(fā)出的數(shù)據(jù),來確定主機,實現(xiàn)了無主從通信的同時,消除了主從通信方案中主機故障導致的整個網(wǎng)絡故障,提高了通信的可靠性,并且無需采用專用芯片,降低了成本。
附圖說明
通過以下參照附圖對本發(fā)明實施例的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)點將更為清楚,在附圖中:
圖1示出了根據(jù)本發(fā)明具體實施方式提供的無主從通信方法的流程圖之一。
圖2示出了根據(jù)本發(fā)明具體實施方式提供的無主從通信裝置的結構框圖。
圖3示出了根據(jù)本發(fā)明具體實施方式提供的無主從通信方法的流程圖之二。
具體實施方式
以下基于實施例對本發(fā)明進行描述,但是本發(fā)明并不僅僅限于這些實施例。在下文對本發(fā)明的細節(jié)描述中,詳盡描述了一些特定的細節(jié)部分。對本領域技術人員來說沒有這些細節(jié)部分的描述也可以完全理解本發(fā)明。為了避免混淆本發(fā)明的實質,公知的方法、過程、流程、元件并沒有詳細敘述。
此外,本領域普通技術人員應當理解,在此提供的附圖都是為了說明的目的,并且附圖不一定是按比例繪制的。
除非上下文明確要求,否則整個說明書和權利要求書中的“包括”、“包含”等類似詞語應當解釋為包含的含義而不是排他或窮舉的含義;也就是說,是“包括但不限于”的含義。
以下首先結合圖1說明根據(jù)本發(fā)明的一種用于包括多個節(jié)點的通信網(wǎng)絡的無主從通信方法。圖1示出了根據(jù)本發(fā)明一優(yōu)選實施例的無主從通信方法的流程圖。如圖1所示,所述通信方法包括:隨機數(shù)生成步驟S1、時間計算步驟S2以及主機確定步驟S3。所述隨機數(shù)生成步驟S1,使所述通信網(wǎng)絡中的各節(jié)點生成隨機數(shù)。時間計算步驟S2,根據(jù)所述隨機數(shù)計算一第一預定時間。以及主機確定步驟S3,根據(jù)在所述第一預定時間內(nèi)是否檢測到總線上有數(shù)據(jù)來確定主機。其中,根據(jù)隨機數(shù)計算第一預定時間的具體方法不限,例如可直接將隨機數(shù)作為第一預定時間的秒數(shù),即當隨機數(shù)為N時,第一預定時間為N秒,再例如,將隨機數(shù)乘以一個系數(shù)a作為第一預定時間的秒數(shù),即當隨機數(shù)為N時,第一預定時間為aN秒。具體地,如果在所述第一預定時間檢測到總線上存在數(shù)據(jù)并收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該其他任一節(jié)點作為主機。進一步地,如果某一節(jié)點在所述第一預定時間內(nèi)未檢測到總線上存在數(shù)據(jù),則該節(jié)點作為主機主動發(fā)送數(shù)據(jù)。
如上,本發(fā)明的上述方案中,通過根據(jù)在所述預定時間內(nèi)是否檢測到總線上存在數(shù)據(jù),即存在有某節(jié)點發(fā)出的數(shù)據(jù),來確定主機,實現(xiàn)了無主從通信的同時,消除了主從通信方案中主機故障導致的整個網(wǎng)絡故障,提高了通信的可靠性,并且無需采用專用芯片,降低了成本。
在本發(fā)明的上述方法中,所述多個節(jié)點均產(chǎn)生隨機數(shù),且各節(jié)點所產(chǎn)生的隨機數(shù)各不相同。從而根據(jù)這些不同隨機數(shù)計算出各節(jié)點的所述預定時間也各不相同。由于通常是所述預定時間最小的節(jié)點首先結束所述預定時間的計時,故通常是該節(jié)點先主動發(fā)送數(shù)據(jù)。并且,一旦發(fā)出數(shù)據(jù),其他節(jié)點就不再發(fā)了,從而不會造成總線數(shù)據(jù)的沖突,也能比較容易的確定所述主機。
其中,所述通信網(wǎng)絡中的各所述節(jié)點上電后均處于通信接收狀態(tài),從而各個節(jié)點如果在所述第一預定時間內(nèi)檢測到主線上有數(shù)據(jù),則繼續(xù)處于所述接收狀態(tài),而不主動發(fā)送數(shù)據(jù)。并且,如果期間正確地接收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該任一節(jié)點作為主機。繼而,后續(xù)在收到該作為主機的任一節(jié)點點明時,回復數(shù)據(jù),從而所述通信網(wǎng)絡的各節(jié)點進入正常的通信狀態(tài)。本文中所述的“點明”的含義為,上位機輪流點明下位機,被點名的下位機回復數(shù)據(jù),從而建立上位機與下位機的通訊,而未被點明的下位機也會收到上位機點明其他下位機的數(shù)據(jù),但是不能回復數(shù)據(jù),以免總線上數(shù)據(jù)沖突。
進一步地,如果某一節(jié)點在所述第一預定時間內(nèi)未檢測到主線上有數(shù)據(jù),則在該預定時間后該節(jié)點主動發(fā)送數(shù)據(jù),從而成為該通信網(wǎng)絡中的主機。并且,后續(xù)順序點明作為從機的其他各節(jié)點,從而所述通信網(wǎng)絡的各節(jié)點進入正常的通信狀態(tài)。
進一步地,所述方法還包括故障判斷步驟S4,在所述正常通信狀態(tài)中,若從機在一第二預定時間內(nèi)未收到來自主機的數(shù)據(jù),則判斷所述主機出現(xiàn)故障。以及進一步地,所述方法還包括返回步驟S5,在判斷主機故障后返回信號,使得返回所述主機確定步驟S3,重新確定主機。其中,第二預定時間為預設的可判定是否為通訊異常的時間,可根據(jù)具體需求進行設定,例如,第二預定時間為20至40秒,進一步優(yōu)選為30秒,即當從機在30秒內(nèi)未接收到來自主機的數(shù)據(jù)時判定主機出現(xiàn)故障。
下面結合圖2說明根據(jù)本發(fā)明的一種用于包括多個節(jié)點的通信網(wǎng)絡的無主從通信裝置。圖2示出了根據(jù)本發(fā)明一優(yōu)選實施例的無主從通信裝置的結構框圖。如圖2所示,所述裝置包括:隨機數(shù)生成模塊1、時間計算模塊2以及主機確定模塊3。所述隨機數(shù)生成模塊1,使所述通信網(wǎng)絡中的各節(jié)點生成隨機數(shù)。時間計算模塊2,根據(jù)所述隨機數(shù)計算一第一預定時間。以及主機確定模塊3,根據(jù)在所述第一預定時間內(nèi)是否檢測到總線上有數(shù)據(jù)來確定主機。其中,根據(jù)隨機數(shù)計算第一預定時間的具體方法不限,例如可直接將隨機數(shù)作為第一預定時間的秒數(shù),即當隨機數(shù)為N時,第一預定時間為N秒,再例如,將隨機數(shù)乘以一個系數(shù)a作為第一預定時間的秒數(shù),即當隨機數(shù)為N時,第一預定時間為aN秒。具體地,如果在所述第一預定時間檢測到總線上存在數(shù)據(jù)并收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該其他任一節(jié)點作為主機。進一步地,如果某一節(jié)點在所述第一預定時間內(nèi)未檢測到總線上存在數(shù)據(jù),則該節(jié)點作為主機主動發(fā)送數(shù)據(jù)。
如上,本發(fā)明的上述方案中,通過根據(jù)在所述預定時間內(nèi)是否檢測到總線上存在數(shù)據(jù),即存在有某節(jié)點發(fā)出的數(shù)據(jù),來確定主機,實現(xiàn)了無主從通信的同時,消除了主從通信方案中主機故障導致的整個網(wǎng)絡故障,提高了通信的可靠性,并且無需采用專用芯片,降低了成本。
在本發(fā)明的上述裝置中,所述多個節(jié)點均產(chǎn)生隨機數(shù),且使各節(jié)點所產(chǎn)生的隨機數(shù)各不相同。從而根據(jù)這些不同隨機數(shù)計算出各節(jié)點的所述預定時間也各不相同。由于通常是所述預定時間最小的節(jié)點首先結束所述預定時間的計時,故通常是該節(jié)點先主動發(fā)送數(shù)據(jù)。并且,一旦發(fā)出數(shù)據(jù),其他節(jié)點就不再發(fā)了,從而不會造成總線數(shù)據(jù)的沖突,也能比較容易的確定所述主機。
其中,所述通信網(wǎng)絡中的各所述節(jié)點上電后均處于通信接收狀態(tài),從而各個節(jié)點如果在所述第一預定時間內(nèi)檢測到主線上有數(shù)據(jù),則繼續(xù)處于所述接收狀態(tài),而不主動發(fā)送數(shù)據(jù)。并且,如果期間正確地接收到其他任一節(jié)點發(fā)送的數(shù)據(jù),則將該任一節(jié)點作為主機。繼而,后續(xù)在收到該作為主機的任一節(jié)點點明時,回復數(shù)據(jù),從而所述通信網(wǎng)絡的各節(jié)點進入正常的通信狀態(tài)。
進一步地,如果某一節(jié)點在所述第一預定時間內(nèi)未檢測到主線上有數(shù)據(jù),則在該預定時間后該節(jié)點主動發(fā)送數(shù)據(jù),從而成為該通信網(wǎng)絡中的主機。并且,后續(xù)順序點明作為從機的其他各節(jié)點,從而所述通信網(wǎng)絡的各節(jié)點進入正常的通信狀態(tài)。
進一步地,所述裝置還包括故障判斷模塊4,用于在所述正常通信狀態(tài)中,若從機在一第二預定時間內(nèi)未收到來自主機的數(shù)據(jù),則判斷所述主機出現(xiàn)故障。以及進一步地,所述裝置還包括返回模塊5,在判斷主機故障后返回信號,使得主機確定模塊3重新確定主機。其中,第二預定時間為預設的可判定是否為通訊異常的時間,可根據(jù)具體需求進行設定,例如,第二預定時間為20至40秒,進一步優(yōu)選為30秒,即當從機在30秒內(nèi)未接收到來自主機的數(shù)據(jù)時判定主機出現(xiàn)故障。
以下結合圖3說明根據(jù)本發(fā)明所述的無主從通信方法的一優(yōu)選的具體實施例。如圖3所示,設各所述節(jié)點產(chǎn)生的隨機數(shù)為N,計算出的所述第一預定時間為t。設所述通信網(wǎng)絡中有n個節(jié)點,即節(jié)點1到節(jié)點n。在上電時,各所述節(jié)點均產(chǎn)生一個隨機數(shù)N,節(jié)點1到節(jié)點n所對應的隨機數(shù)分別為N1到Nn,各隨機數(shù)大小均不相同。接下來,各節(jié)點根據(jù)其所產(chǎn)生的隨機數(shù)算出一第一預定時間t。節(jié)點1到節(jié)點n對應的該第一預定時間分別為t1到tn,且各時間大小均不相同。
各節(jié)點上電后均處于接收狀態(tài)。若在t時間(第一預定時間),例如對于節(jié)點i來說,在ti時間內(nèi)檢測到總線上有數(shù)據(jù),則不主動發(fā)數(shù)據(jù),繼續(xù)處于接收狀態(tài)。若接收到正確的其他任一節(jié)點的數(shù)據(jù),則把該其他任一節(jié)點作為主機。并且,后續(xù)收到該主機點明從機,則回復數(shù)據(jù),從而各節(jié)點進入正常通信狀態(tài)。
另一方面,若在t時間(第一預定時間),例如對于節(jié)點i來說,在ti時間內(nèi)未檢測到通訊總線上有數(shù)據(jù),則t時間到后主動發(fā)送數(shù)據(jù),從而成為主機。后續(xù)順序點明各從機,各節(jié)點繼而進入正常通信狀態(tài)。
在進入正常通信狀態(tài)后,若從機連續(xù)一段時間(第二預定時間)未收到主機數(shù)據(jù),則判斷與主機出現(xiàn)通信故障。為避免主機故障影響整個通信網(wǎng)絡,各節(jié)點通信故障后延時t時間主動發(fā)送數(shù)據(jù),按上面步驟重新尋找主機。
以上對本發(fā)明的用于通信網(wǎng)絡的無主從通信方法及裝置進行了描述。根據(jù)本發(fā)明的上述方案,通過根據(jù)在所述預定時間內(nèi)是否檢測到總線上是否存在數(shù)據(jù),即存在有某節(jié)點發(fā)出的數(shù)據(jù),來確定主機,實現(xiàn)了無主從通信的同時,消除了主從通信方案中主機故障導致的整個網(wǎng)絡故障,提高了通信的可靠性,并且無需采用專用芯片,降低了成本。并且由于通常是所述預定時間最小的節(jié)點先主動發(fā)送數(shù)據(jù),一旦發(fā)出數(shù)據(jù),其他節(jié)點就不再發(fā)了,從而不會造成總線數(shù)據(jù)的沖突,也能比較容易的確定所述主機。
以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領域技術人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。