專利名稱:一種冗余串行總線的實(shí)現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及工業(yè)自動(dòng)化技術(shù)領(lǐng)域,更具體地說,涉及一種冗余串行總線的實(shí)現(xiàn)方法及裝置。
背景技術(shù):
在分布式控制系統(tǒng)(Distributed Control System,DCS)中,控制器通過某條通訊 鏈路和各個(gè)從站進(jìn)行數(shù)據(jù)交換。如果當(dāng)前通訊鏈路發(fā)生故障,比如數(shù)據(jù)受到干擾、接線斷開 等,通訊就會(huì)受到直接影響。短暫的干擾可能會(huì)造成丟包,影響整個(gè)系統(tǒng)的可靠性,長期故 障(例如斷線)可能會(huì)造成整個(gè)系統(tǒng)運(yùn)行不正常,并可能帶來巨大的經(jīng)濟(jì)損失。目前,為了提高分布式控制器系統(tǒng)中控制器和從站模塊之間通訊的可靠性,通常 采用兩條相互獨(dú)立的通訊鏈路,如圖1所示。兩條相互獨(dú)立的通訊鏈路互為熱備份,當(dāng)其中 一條鏈路發(fā)生故障時(shí),可以盡快切換到另一條正常的鏈路上,保持通訊的連續(xù)性?,F(xiàn)有的這種串行通訊冗余的實(shí)現(xiàn)方式可參照?qǐng)D2所示,其中,圖2(a)為從站向系 統(tǒng)控制器發(fā)送數(shù)據(jù)的示意圖,圖2(b)為從站接收系統(tǒng)控制器下發(fā)數(shù)據(jù)的示意圖。如圖2所 示,從站主要包括驅(qū)動(dòng)單元、數(shù)據(jù)選擇單元、切換開關(guān)和處理單元。其中數(shù)據(jù)選擇單元和切 換開關(guān)處于同一邏輯層級(jí),兩者并行運(yùn)行。從站模塊發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)被分配給兩個(gè)獨(dú)立的驅(qū)動(dòng)單元,驅(qū)動(dòng)單元分別將相同 的數(shù)據(jù)發(fā)送到獨(dú)立的鏈路A和鏈路B上;從站模塊接收數(shù)據(jù)時(shí),兩路獨(dú)立的通訊鏈路A和B上的數(shù)據(jù)通過驅(qū)動(dòng)單元被送到 數(shù)據(jù)選擇邏輯,同時(shí)兩路數(shù)據(jù)中的一路被選擇送到處理單元中,數(shù)據(jù)選擇邏輯根據(jù)兩條鏈 路是否故障,選擇一條正常鏈路將數(shù)據(jù)輸入到處理單元中。通過發(fā)明人的研究發(fā)現(xiàn),現(xiàn)有技術(shù)中至少存在以下缺陷處理單元接收數(shù)據(jù)時(shí),選擇哪條鏈路的數(shù)據(jù)由數(shù)據(jù)選擇邏輯決定,數(shù)據(jù)選擇邏輯 根據(jù)鏈路上是否存在故障判斷是否切換到另一條鏈路。數(shù)據(jù)選擇邏輯和數(shù)據(jù)切換開關(guān)處于 同一層級(jí),這樣就會(huì)帶來一個(gè)問題,即當(dāng)數(shù)據(jù)選擇邏輯判斷出當(dāng)前鏈路有問題,需要控制 切換到另一條鏈路上時(shí),另一條鏈路上的正常數(shù)據(jù)已經(jīng)錯(cuò)過了,這樣在鏈路切換的時(shí)候必 然會(huì)造成丟數(shù)據(jù)。丟數(shù)據(jù)打斷了從站模塊和控制器周期性的數(shù)據(jù)交換,引入了不穩(wěn)定因素。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供一種冗余串行總線的實(shí)現(xiàn)方法及裝置,以便實(shí)現(xiàn)無 擾切換,即當(dāng)某條鏈路發(fā)生故障時(shí),切換到另一條鏈路時(shí),保證另一條鏈路上的正常數(shù)據(jù) 不會(huì)丟失。本發(fā)明實(shí)施例提供一種冗余串行總線的實(shí)現(xiàn)方法,所述方法包括通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩存主鏈路及備份鏈路傳 輸?shù)臄?shù)據(jù),在進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng)前鏈路的傳輸狀態(tài);判斷所述當(dāng)前鏈路是否發(fā)生故障,如果是,則切換至未發(fā)生故障的備份鏈路接收數(shù)據(jù)。優(yōu)選的,所述方法還包括如果判斷所述當(dāng)前鏈路未發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù),并向外界輸出故
障告知信息。優(yōu)選的,所述方法還包括如果判斷所有鏈路均發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù)。優(yōu)選的,所述判斷所述當(dāng)前鏈路是否發(fā)生故障,包括根據(jù)傳輸?shù)臄?shù)據(jù)中攜帶的校驗(yàn)位指示信息判斷所述當(dāng)前鏈路是否發(fā)生故障,如果 所述校驗(yàn)位指示信息為預(yù)置信息時(shí),則確定所述當(dāng)前鏈路未發(fā)生故障;如果否,則確定所述 當(dāng)前鏈路發(fā)生故障。優(yōu)選的,所述方法還包括判斷數(shù)據(jù)的接收者是否是本地從站,如果是,則將所述數(shù)據(jù)緩存;如果否,則將所 述數(shù)據(jù)丟棄。一種冗余串行總線的實(shí)現(xiàn)裝置,所述裝置包括接收緩存模塊,用于通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩存 主鏈路及備份鏈路傳輸?shù)臄?shù)據(jù);監(jiān)測(cè)模塊,用于在所述接收緩存模塊進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng) 前鏈路的傳輸狀態(tài);故障判斷模塊,用于判斷所述當(dāng)前鏈路是否發(fā)生故障;切換模塊,用于如果所述故障判斷模塊確定所述當(dāng)前鏈路發(fā)生故障,則切換至未 發(fā)生故障的備份鏈路接收數(shù)據(jù)。優(yōu)選的,所述故障判斷模塊還用于如果所述故障判斷模塊確定所述當(dāng)前鏈路未發(fā)生故障,則保持當(dāng)前鏈路接收數(shù) 據(jù)。優(yōu)選的,所述故障判斷模塊還用于如果所有鏈路均發(fā)生故障,則保持當(dāng)前鏈路接 收數(shù)據(jù),并向外界輸出故障告知信息。優(yōu)選的,所述數(shù)據(jù)中攜帶的校驗(yàn)位指示信息,則所述故障判斷模塊根據(jù)所述校驗(yàn) 位指示信息判斷所述當(dāng)前鏈路是否發(fā)生故障,如果所述校驗(yàn)位指示信息為預(yù)置信息時(shí),則 確定所述當(dāng)前鏈路未發(fā)生故障;如果否,則確定所述當(dāng)前鏈路發(fā)生故障。優(yōu)選的,所述裝置還包括接收判斷模塊,用于判斷數(shù)據(jù)的接收者是否是本地從站,如果是,則將所述數(shù)據(jù)緩 存;如果否,則將所述數(shù)據(jù)丟棄。同現(xiàn)有技術(shù)相比,本發(fā)明提供的技術(shù)方案通過主鏈路及備份鏈路中的一條鏈路接 收數(shù)據(jù)的同時(shí),實(shí)時(shí)進(jìn)行主鏈路及備份鏈路上傳輸?shù)臄?shù)據(jù)的緩存,并實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的 當(dāng)前鏈路的傳輸狀態(tài);一旦當(dāng)前鏈路發(fā)生故障,便自動(dòng)切換至其他未發(fā)生故障的鏈路繼續(xù) 接收數(shù)據(jù)。這樣,由于切換后的鏈路中實(shí)時(shí)存儲(chǔ)著正在傳輸?shù)臄?shù)據(jù),可以保證鏈路切換后不 會(huì)發(fā)生數(shù)據(jù)包丟失的缺陷,使得數(shù)據(jù)傳輸更加可靠、穩(wěn)定。
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí) 施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。圖1為現(xiàn)有技術(shù)中分布式控制器系統(tǒng)的通訊鏈路示意圖;圖2(a)、(b)為現(xiàn)有技術(shù)中串行通訊冗余的實(shí)現(xiàn)方式示意圖;圖3為本發(fā)明實(shí)施例提供的一種冗余串行總線的實(shí)現(xiàn)方法示意圖;圖4為本發(fā)明實(shí)施例提供的分布式控制系統(tǒng)中的從站模塊示意圖;圖5為本發(fā)明實(shí)施例提供的分布式控制系統(tǒng)中的從站模塊發(fā)送數(shù)據(jù)的示意圖;圖6為兩條鏈路在數(shù)據(jù)輸出時(shí)的時(shí)間差值示意圖;圖7為圖6中兩條鏈路的冗余切換邏輯示意圖;圖8為本發(fā)明實(shí)施例提供的冗余串行總線的實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。通過對(duì)現(xiàn)有技術(shù)中串行通訊冗余的實(shí)現(xiàn)方式分析后,可以得出數(shù)據(jù)選擇邏輯和 數(shù)據(jù)切換開關(guān)處于同一邏輯層級(jí)決定了這種方法對(duì)鏈路切換不夠及時(shí),當(dāng)鏈路故障被診斷 出來的時(shí)候,距離處理單元接收錯(cuò)誤數(shù)據(jù)已經(jīng)有一段時(shí)間了,雖然通過故障信息可以得知 是哪條鏈路出了故障,但是即使進(jìn)行了鏈路切換,也無法避免丟包的數(shù)據(jù)??梢?,如果能夠 在故障發(fā)生時(shí)立即得到故障信息,同時(shí)進(jìn)行無擾切換在本領(lǐng)域技術(shù)人員亟需解決的問題。為了避免在鏈路切換時(shí)導(dǎo)致的數(shù)據(jù)丟包,本發(fā)明提供了一種無擾的冗余串行總線 的實(shí)現(xiàn)方法。下面首先對(duì)本發(fā)明提供的冗余串行總線的實(shí)現(xiàn)方法進(jìn)行說明,參照?qǐng)D3所示, 為該方法的具體實(shí)現(xiàn)流程,可以包括以下步驟步驟301、通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩存主鏈路及備 份鏈路傳輸?shù)臄?shù)據(jù),在進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng)前鏈路的傳輸狀態(tài);步驟302、判斷所述當(dāng)前鏈路是否發(fā)生故障,如果是,則切換至未發(fā)生故障的備份 鏈路接收數(shù)據(jù)。同現(xiàn)有技術(shù)相比,本發(fā)明提供的技術(shù)方案通過主鏈路及備份鏈路中的一條鏈路接 收數(shù)據(jù)的同時(shí),實(shí)時(shí)進(jìn)行主鏈路及備份鏈路上傳輸?shù)臄?shù)據(jù)的緩存,并實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的 當(dāng)前鏈路的傳輸狀態(tài);一旦當(dāng)前鏈路發(fā)生故障,便自動(dòng)切換至其他未發(fā)生故障的鏈路繼續(xù) 接收數(shù)據(jù)。這樣,由于切換后的鏈路中實(shí)時(shí)存儲(chǔ)著正在傳輸?shù)臄?shù)據(jù),可以保證鏈路切換后不 會(huì)發(fā)生數(shù)據(jù)包丟失的缺陷,使得數(shù)據(jù)傳輸更加可靠、穩(wěn)定。本發(fā)明技術(shù)方案在具體實(shí)施時(shí),當(dāng)開始接收數(shù)據(jù)時(shí),會(huì)默認(rèn)從一條鏈路中接收數(shù) 據(jù),這時(shí),如果判斷所述當(dāng)前鏈路未發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù)。此外,如果判斷所有鏈路均發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù),并向外界輸出故障告知信息,等待鏈路故障恢復(fù)。本發(fā)明實(shí)施例提供了一種快速檢驗(yàn)鏈路是否發(fā)生故障的優(yōu)選實(shí)施方式,具體實(shí)現(xiàn) 為根據(jù)傳輸?shù)臄?shù)據(jù)中攜帶的校驗(yàn)位指示信息判斷所述當(dāng)前鏈路是否發(fā)生故障,如果所述 校驗(yàn)位指示信息為預(yù)置信息時(shí),則確定所述當(dāng)前鏈路未發(fā)生故障;如果否,則確定所述當(dāng)前 鏈路發(fā)生故障。校驗(yàn)位的判斷是和校驗(yàn)類型密切相關(guān)的,比如采用奇偶校驗(yàn)中的偶校驗(yàn),需要傳 輸?shù)淖止?jié)為11000001,正常傳輸狀態(tài)時(shí),校驗(yàn)位應(yīng)該為0。如果數(shù)據(jù)在傳輸過程中受到鏈路 故障干擾,實(shí)際傳輸?shù)臄?shù)據(jù)變?yōu)榱?11100001,此時(shí),校驗(yàn)位為1。接收方根據(jù)接收到的數(shù)據(jù) 計(jì)算出校驗(yàn)位應(yīng)該為0,而實(shí)際接收到的校驗(yàn)位是1,從而可以判斷數(shù)據(jù)錯(cuò)誤。為了便于對(duì)本發(fā)明進(jìn)一步的理解,下面結(jié)合本發(fā)明的具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行 詳細(xì)描述。仍以分布式控制系統(tǒng)為例,對(duì)本發(fā)明提供的冗余串行總線的實(shí)現(xiàn)方法進(jìn)行說明。需要說明的是,為了描述方便,該實(shí)施例中以兩條傳輸鏈路為例進(jìn)行說明。如圖4 所示,分布式控制系統(tǒng)中的從站模塊主要包括驅(qū)動(dòng)單元、冗余切換邏輯和處理單元。其中, 驅(qū)動(dòng)單元用于實(shí)現(xiàn)信號(hào)標(biāo)準(zhǔn)的轉(zhuǎn)換并增加驅(qū)動(dòng)能力,比如冗余切換邏輯輸出的是CMOS電 平信號(hào)而鏈路上傳輸?shù)氖荝S485信號(hào),那么驅(qū)動(dòng)單元的作用就是一方面將CMOS電平轉(zhuǎn)換為 差分485信號(hào),另一方面增加鏈路的帶負(fù)載能力,以實(shí)現(xiàn)總線上掛接盡可能多的從站模塊。 本發(fā)明的冗余串行總線的實(shí)現(xiàn)方法主要涉及冗余切換邏輯。需要說明的是,本發(fā)明實(shí)施例中,從站模塊發(fā)送數(shù)據(jù)時(shí),如圖5所示,處理單元通 過總線接口將數(shù)據(jù)寫入冗余切換邏輯中,冗余切換邏輯首先緩存當(dāng)前的發(fā)送數(shù)據(jù),然后進(jìn) 行并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)的模式切換,并將切換之后的串行數(shù)據(jù)同時(shí)發(fā)送給兩個(gè)獨(dú)立的 驅(qū)動(dòng)單元,每個(gè)驅(qū)動(dòng)單元對(duì)應(yīng)一個(gè)通訊鏈路,例如圖5中的鏈路A和鏈路B。采用本發(fā)明提供的冗余串行總線的實(shí)現(xiàn)方法,從站模塊接收數(shù)據(jù)時(shí),冗余切換邏 輯先對(duì)驅(qū)動(dòng)單元分別輸出的兩條鏈路A、B上的數(shù)據(jù)包進(jìn)行同步。這是由于,兩條鏈路上數(shù) 據(jù)的傳輸起始時(shí)間可能不同,兩條通訊鏈路輸出傳輸時(shí)間不一定完全一致,兩條鏈路在數(shù) 據(jù)輸出時(shí)的時(shí)間差值如圖6中的tdelay表示。以數(shù)據(jù)傳輸時(shí)的最小單位為字節(jié)的情形為例, 由于數(shù)據(jù)傳輸時(shí)的最小單位為字節(jié),因此,tdelay允許的最大值為1個(gè)字節(jié)數(shù)據(jù)傳輸?shù)臅r(shí)間, 如果在這個(gè)時(shí)間內(nèi)另一條鏈路上仍然沒有數(shù)據(jù)到達(dá),則認(rèn)為對(duì)兩條鏈路同步失敗;否則,認(rèn) 為兩條鏈路上都有數(shù)據(jù)可供選擇,同步成功??梢姡?dāng)兩條鏈路在數(shù)據(jù)輸出時(shí)的時(shí)間差值小 于數(shù)據(jù)傳輸時(shí)的最小單位的傳輸時(shí)間時(shí),則兩條鏈路同步成功。需要說明的是,如果數(shù)據(jù)流先到達(dá)的鏈路就是當(dāng)前選擇的鏈路,則判斷當(dāng)前鏈路 中接收到的每個(gè)字節(jié)的校驗(yàn)位是否正確,如果正確,則保持接收本鏈路數(shù)據(jù)不變;如果不正 確,則判斷另一鏈路上校驗(yàn)位是否正確,如果另一條鏈路上校驗(yàn)位正常,則切換到另一條鏈 路接收數(shù)據(jù);如果另一條鏈路上校驗(yàn)位也錯(cuò)誤,則說明當(dāng)前兩條鏈路都故障,保持當(dāng)前接收 鏈路不變,,并向外界輸出故障告知信息等待故障恢復(fù)。如果數(shù)據(jù)流先到達(dá)的鏈路不是當(dāng)前選擇的鏈路,則需要同步兩條鏈路的數(shù)據(jù),如 果在接收1個(gè)字節(jié)的時(shí)間間隔內(nèi)同步成功,則保持當(dāng)前選擇的鏈路接收數(shù)據(jù),如果在接收1 個(gè)字節(jié)的時(shí)間間隔內(nèi)同步失敗,則切換到另一條鏈路接收數(shù)據(jù)。同時(shí)根據(jù)每個(gè)字節(jié)的校驗(yàn) 位進(jìn)行切換鏈路的邏輯判斷。需要指出的是,本發(fā)明實(shí)施例中的所謂同步是指檢測(cè)兩條鏈路接收到同一字節(jié)的時(shí)間間隔是否在規(guī)定時(shí)間間隔內(nèi),如果是,則認(rèn)為兩條鏈路同步成功。 根據(jù)時(shí)間應(yīng)用場(chǎng)景,本領(lǐng)域技術(shù)人員能夠計(jì)算出同步時(shí)間的具體值。兩條鏈路上傳輸?shù)臄?shù)據(jù)完成同步之后,繼續(xù)分別對(duì)每條鏈路上的傳輸數(shù)據(jù)進(jìn)行串 行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)的模式切換。模式切換之后,冗余切換邏輯對(duì)每條鏈路上的數(shù)據(jù)進(jìn)行實(shí)時(shí)緩存。在進(jìn)行數(shù)據(jù)緩 存的同時(shí),每接收一個(gè)字節(jié)進(jìn)行相應(yīng)校驗(yàn)位的對(duì)比,根據(jù)當(dāng)前校驗(yàn)位的指示信息和預(yù)置校 驗(yàn)位的指示信息之間的對(duì)比,判斷相應(yīng)鏈路是否發(fā)生故障如果兩條鏈路的校驗(yàn)位指示信 息均正確,則保持當(dāng)前選擇的鏈路不變;如果兩條鏈路中一條鏈路的校驗(yàn)位指示信息正確, 而另一條鏈路的校驗(yàn)位指示信息錯(cuò)誤或無數(shù)據(jù),則選擇正確的鏈路接收數(shù)據(jù);如果兩條鏈 路的校驗(yàn)位指示信息均錯(cuò)誤,則同樣保持當(dāng)前選擇鏈路不變,等待故障的恢復(fù)?!疤幚韱卧?通過總線接口讀取“冗余切換邏輯”中接收到的數(shù)據(jù)。同現(xiàn)有技術(shù)方案相比,冗余切換邏輯 內(nèi)部緩存了兩條鏈路的數(shù)據(jù),當(dāng)檢測(cè)到當(dāng)前接收數(shù)據(jù)鏈路故障時(shí),可以立即切換到另一條 鏈路并啟用另一條鏈路上實(shí)時(shí)緩存的數(shù)據(jù),從而切換過程數(shù)據(jù)不會(huì)受到任何影響。 上述冗余切換邏輯可以通過圖7進(jìn)行進(jìn)一步明示。如圖7所示,鏈路A和鏈路B的 串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)后按照字節(jié)暫存到緩存區(qū),在緩存的同時(shí)已經(jīng)根據(jù)校驗(yàn)位指示信 息判斷出了兩個(gè)鏈路接收到的這個(gè)字節(jié)數(shù)據(jù)是否正確。如果發(fā)現(xiàn)鏈路A的數(shù)據(jù)是錯(cuò)誤的, 則控制切換到鏈路B的緩存區(qū)讀數(shù)據(jù),鏈路B緩存區(qū)中保留有實(shí)時(shí)傳輸?shù)臄?shù)據(jù),所以鏈路切 換之后不會(huì)導(dǎo)致數(shù)據(jù)丟失。該過程中,仍以數(shù)據(jù)傳輸時(shí)的最小單位為字節(jié)的情形為例,該過 程中,需要滿足tdelay不超過1個(gè)字節(jié)的傳輸時(shí)間,如果tdelay太長,超過了 1個(gè)字節(jié)的傳輸 時(shí)間,則傳輸較快鏈路上的下一個(gè)字節(jié)數(shù)據(jù)已經(jīng)到了,會(huì)覆蓋之前的數(shù)據(jù),導(dǎo)致較慢鏈路和 較快鏈路緩存中存儲(chǔ)的數(shù)據(jù)不是同一個(gè)字節(jié),因此,不能保證兩條鏈路的數(shù)據(jù)同步。當(dāng)然,本發(fā)明實(shí)施例中的鏈路切換方案也適用于以下鏈路故障情形以傳輸鏈路 為兩條為例,為了表述方便,將兩條鏈路以第一鏈路和第二鏈路進(jìn)行區(qū)分。數(shù)據(jù)沿第一鏈路 和第二鏈路兩條鏈路進(jìn)行傳輸,當(dāng)?shù)谝绘溌肥紫冉邮盏綌?shù)據(jù),而第二鏈路在同步時(shí)間內(nèi)沒 有收到數(shù)據(jù),這時(shí),也認(rèn)為在同步時(shí)間內(nèi)沒有收到數(shù)據(jù)的第二鏈路發(fā)生故障。如果默認(rèn)的是 采用第二鏈路進(jìn)行數(shù)據(jù)接收,則需要進(jìn)行鏈路切換,改由第一鏈路進(jìn)行數(shù)據(jù)接收。在本發(fā)明的另一個(gè)優(yōu)選實(shí)施方案中,可以通過接收到的正常數(shù)據(jù)中攜帶的目的地 址字節(jié),獲得當(dāng)前數(shù)據(jù)的接收者是否為當(dāng)前從站。對(duì)于不屬于當(dāng)前從站的數(shù)據(jù)可以直接拋 棄,以節(jié)省緩存空間;對(duì)于屬于當(dāng)前從站的數(shù)據(jù)可以暫存到緩存區(qū)內(nèi),等待對(duì)該數(shù)據(jù)的讀取 及后續(xù)處理??梢?,本發(fā)明提供的冗余串行總線的實(shí)現(xiàn)方法,能夠?qū)崟r(shí)檢測(cè)兩條鏈路的傳輸狀 態(tài),因此,對(duì)于鏈路故障診斷的實(shí)時(shí)性更強(qiáng)。本發(fā)明的通用性很強(qiáng),與通訊協(xié)議相關(guān)性很弱, 無論協(xié)議如何只要字節(jié)傳輸包含校驗(yàn)位即可采用此冗余方案。相應(yīng)上述冗余串行總線的實(shí)現(xiàn)方法,本發(fā)明還提供了一種冗余串行總線的實(shí)現(xiàn)裝 置,如圖8所示,所述裝置可以包括接收緩存模塊801,用于通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩 存主鏈路及備份鏈路傳輸?shù)臄?shù)據(jù);監(jiān)測(cè)模塊802,用于在所述接收緩存模塊801進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù) 據(jù)的當(dāng)前鏈路的傳輸狀態(tài);
故障判斷模塊803,用于判斷所述當(dāng)前鏈路是否發(fā)生故障;切換模塊804,用于如果所述故障判斷模塊803確定所述當(dāng)前鏈路發(fā)生故障,則切 換至未發(fā)生故障的備份鏈路接收數(shù)據(jù)。本發(fā)明提供的冗余串行總線的實(shí)現(xiàn)裝置通過主鏈路及備份鏈路中的一條鏈路接 收數(shù)據(jù)的同時(shí),通過接收緩存模塊實(shí)時(shí)進(jìn)行主鏈路及備份鏈路上傳輸?shù)臄?shù)據(jù)的緩存,并實(shí) 時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng)前鏈路的傳輸狀態(tài);一旦當(dāng)前鏈路發(fā)生故障,便自動(dòng)切換至其他未發(fā) 生故障的鏈路繼續(xù)接收數(shù)據(jù)。這樣,由于切換后的鏈路中實(shí)時(shí)存儲(chǔ)著正在傳輸?shù)臄?shù)據(jù),可以 保證鏈路切換后不會(huì)發(fā)生數(shù)據(jù)包丟失的缺陷,使得數(shù)據(jù)傳輸更加可靠、穩(wěn)定。優(yōu)選的,所述故障判斷模塊還用于如果所述故障判斷模塊確定所述當(dāng)前鏈路未發(fā)生故障,則保持當(dāng)前鏈路接收數(shù) 據(jù),并向外界輸出故障告知信息。優(yōu)選的,所述故障判斷模塊還用于如果所有鏈路均發(fā)生故障,則保持當(dāng)前鏈路接 收數(shù)據(jù)。優(yōu)選的,所述數(shù)據(jù)中攜帶的校驗(yàn)位指示信息,則所述故障判斷模塊根據(jù)所述校驗(yàn) 位指示信息判斷所述當(dāng)前鏈路是否發(fā)生故障,如果所述校驗(yàn)位指示信息為預(yù)置信息時(shí),則 確定所述當(dāng)前鏈路未發(fā)生故障;如果否,則確定所述當(dāng)前鏈路發(fā)生故障。在本發(fā)明另一個(gè)優(yōu)選實(shí)施例中,所述裝置還包括接收判斷模塊,用于判斷數(shù)據(jù)的接收者是否是本地從站,如果是,則將所述數(shù)據(jù)緩 存;如果否,則將所述數(shù)據(jù)丟棄。對(duì)于裝置實(shí)施例而言,由于其基本相應(yīng)于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān) 之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所 述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可 以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。 可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普 通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì) 中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為 磁碟、光盤、只讀存儲(chǔ)記憶體(Read-OnlyMemory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory, RAM)等。對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的 一般原理可以在不脫離本發(fā)明實(shí)施例的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此, 本發(fā)明實(shí)施例將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和 新穎特點(diǎn)相一致的最寬的范圍。
權(quán)利要求
一種冗余串行總線的實(shí)現(xiàn)方法,其特征在于,所述方法包括通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩存主鏈路及備份鏈路傳輸?shù)臄?shù)據(jù),在進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng)前鏈路的傳輸狀態(tài);判斷所述當(dāng)前鏈路是否發(fā)生故障,如果是,則切換至未發(fā)生故障的備份鏈路接收數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的冗余串行總線的實(shí)現(xiàn)方法,其特征在于,所述方法還包括如果判斷所述當(dāng)前鏈路未發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的冗余串行總線的實(shí)現(xiàn)方法,其特征在于,所述方法還包括如果判斷所有鏈路均發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù),并向外界輸出故障告知信息.
4.根據(jù)權(quán)利要求1所述的冗余串行總線的實(shí)現(xiàn)方法,其特征在于,所述判斷所述當(dāng)前 鏈路是否發(fā)生故障,包括根據(jù)傳輸?shù)臄?shù)據(jù)中攜帶的校驗(yàn)位指示信息判斷所述當(dāng)前鏈路是否發(fā)生故障,如果所述 校驗(yàn)位指示信息為預(yù)置信息時(shí),則確定所述當(dāng)前鏈路未發(fā)生故障;如果否,則確定所述當(dāng)前 鏈路發(fā)生故障。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的冗余串行總線的實(shí)現(xiàn)方法,其特征在于,所述方 法還包括判斷數(shù)據(jù)的接收者是否是本地從站,如果是,則將所述數(shù)據(jù)緩存;如果否,則將所述數(shù) 據(jù)丟棄。
6.一種冗余串行總線的實(shí)現(xiàn)裝置,其特征在于,所述裝置包括接收緩存模塊,用于通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩存主鏈 路及備份鏈路傳輸?shù)臄?shù)據(jù);監(jiān)測(cè)模塊,用于在所述接收緩存模塊進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng)前鏈 路的傳輸狀態(tài);故障判斷模塊,用于判斷所述當(dāng)前鏈路是否發(fā)生故障;切換模塊,用于如果所述故障判斷模塊確定所述當(dāng)前鏈路發(fā)生故障,則切換至未發(fā)生 故障的備份鏈路接收數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的冗余串行總線的實(shí)現(xiàn)裝置,其特征在于,所述故障判斷模塊 還用于如果所述故障判斷模塊確定所述當(dāng)前鏈路未發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的冗余串行總線的實(shí)現(xiàn)裝置,其特征在于,所述故障判斷模塊 還用于如果所有鏈路均發(fā)生故障,則保持當(dāng)前鏈路接收數(shù)據(jù),并向外界輸出故障告知信息。
9.根據(jù)權(quán)利要求6所述的冗余串行總線的實(shí)現(xiàn)裝置,其特征在于,所述數(shù)據(jù)中攜帶的 校驗(yàn)位指示信息,則所述故障判斷模塊根據(jù)所述校驗(yàn)位指示信息判斷所述當(dāng)前鏈路是否發(fā) 生故障,如果所述校驗(yàn)位指示信息為預(yù)置信息時(shí),則確定所述當(dāng)前鏈路未發(fā)生故障;如果 否,則確定所述當(dāng)前鏈路發(fā)生故障。
10.根據(jù)權(quán)利要求6-9中任一項(xiàng)所述的冗余串行總線的實(shí)現(xiàn)裝置,其特征在于,所述裝 置還包括接收判斷模塊,用于判斷數(shù)據(jù)的接收者是否是本地從站,如果是,則將所述數(shù)據(jù)緩存; 如果否,則將所述數(shù)據(jù)丟棄。
全文摘要
本發(fā)明公開了一種冗余串行總線的實(shí)現(xiàn)方法和裝置,其中,所述方法包括通過主鏈路及備份鏈路中的一條鏈路接收數(shù)據(jù),并實(shí)時(shí)緩存主鏈路及備份鏈路傳輸?shù)臄?shù)據(jù),在進(jìn)行數(shù)據(jù)緩存同時(shí),實(shí)時(shí)監(jiān)測(cè)接收數(shù)據(jù)的當(dāng)前鏈路的傳輸狀態(tài);判斷所述當(dāng)前鏈路是否發(fā)生故障,如果是,則切換至未發(fā)生故障的備份鏈路接收數(shù)據(jù)。本發(fā)明實(shí)施方案能夠?qū)崿F(xiàn)無擾切換,即當(dāng)某條鏈路發(fā)生故障時(shí),切換到另一條鏈路時(shí),保證另一條鏈路上的正常數(shù)據(jù)不會(huì)丟失。
文檔編號(hào)H04L1/22GK101807986SQ201010153090
公開日2010年8月18日 申請(qǐng)日期2010年4月20日 優(yōu)先權(quán)日2010年4月20日
發(fā)明者史洪源, 溫宜明, 王常力, 虞日躍 申請(qǐng)人:杭州和利時(shí)自動(dòng)化有限公司