一種高可用性的冗余工業(yè)實(shí)時(shí)以太網(wǎng)設(shè)計(jì)
1 引言
基于TCP/IP協(xié)議的工業(yè)以太網(wǎng)以其高通信速率和低應(yīng)用成本被大量應(yīng)用到工業(yè)通信中。以太網(wǎng)協(xié)議和TCP/IP協(xié)議本身未定義冗余通信,因此以提高可靠性為目標(biāo)的以太網(wǎng)冗余通信研究受到了極大關(guān)注。以太網(wǎng)高可用性自動(dòng)化網(wǎng)絡(luò)標(biāo)準(zhǔn)IEC CDV 62439提出了“冗余至網(wǎng)絡(luò)"和“冗余至節(jié)點(diǎn)"兩類以太網(wǎng)冗余方案。前一類方案只提供線路和交換機(jī)冗余,節(jié)點(diǎn)本身沒有冗余通道。比較典型的應(yīng)用有STP、RSTP和MSTP。它們采用物理環(huán)網(wǎng)連接交換機(jī)和網(wǎng)橋。正常工作時(shí)阻斷一個(gè)方向的通道防止“廣播風(fēng)暴”。故障發(fā)生后,通過啟用阻斷通道實(shí)現(xiàn)冗余通信。這類方案實(shí)現(xiàn)成本低,但是存在一定的故障恢復(fù)時(shí)間,且無法解決因節(jié)點(diǎn)網(wǎng)卡故障引起的通信中斷。后一類方案中的節(jié)點(diǎn)和兩個(gè)獨(dú)立的冗余以太網(wǎng)連接,節(jié)點(diǎn)同時(shí)在兩個(gè)網(wǎng)絡(luò)上收發(fā)數(shù)據(jù),因此能消除網(wǎng)絡(luò)的故障恢復(fù)時(shí)間。其典型代表為PRP。PRP節(jié)點(diǎn)上連接冗余以太網(wǎng)的兩個(gè)通道具有相同的MAC地址和IP地址。所有報(bào)文同時(shí)在兩個(gè)網(wǎng)絡(luò)上發(fā)送,接收節(jié)點(diǎn)通過報(bào)文時(shí)間標(biāo)簽篩選冗余報(bào)文。這種方案不可避免地增加了網(wǎng)絡(luò)上報(bào)文的數(shù)量,且不能實(shí)現(xiàn)精確的時(shí)鐘同步。文獻(xiàn)中介紹了一種基于環(huán)網(wǎng)的冗余方案,該方案能同時(shí)實(shí)現(xiàn)節(jié)點(diǎn)的冗余通信和網(wǎng)絡(luò)的精確時(shí)鐘同步。該方案的節(jié)點(diǎn)具有兩個(gè)具有數(shù)據(jù)交換功能的以太網(wǎng)接口。節(jié)電通過菊花鏈的形式串接成一個(gè)環(huán)網(wǎng),故障發(fā)生時(shí)通過調(diào)整路由表實(shí)現(xiàn)冗余通信。采用環(huán)網(wǎng)冗余的ProfiNet把每個(gè)通信周期分成IRT部分和Open部分。在IRT部分節(jié)點(diǎn)向環(huán)網(wǎng)的兩個(gè)方向同時(shí)發(fā)送數(shù)據(jù),實(shí)現(xiàn)了重要報(bào)文零故障恢復(fù)時(shí)間的冗余通信。但是當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)發(fā)生故障時(shí),就會(huì)造成環(huán)網(wǎng)的癱瘓。另有文獻(xiàn)介紹的主干冗余方法則極大地利用了網(wǎng)絡(luò)資源,它采用多條獨(dú)立的以太網(wǎng)連接兩個(gè)節(jié)點(diǎn),數(shù)據(jù)在各個(gè)以太網(wǎng)上分散傳輸。故障發(fā)生后,通過其他通道分擔(dān)故障通道的報(bào)文傳輸實(shí)現(xiàn)冗余通信,此方案無法消除故障恢復(fù)時(shí)間。本文提出了一種新的冗余至節(jié)點(diǎn)的工業(yè)以太網(wǎng)冗余方案,通過在報(bào)文中設(shè)計(jì)報(bào)文時(shí)間標(biāo)簽、節(jié)點(diǎn)間互檢生成并實(shí)時(shí)維護(hù)網(wǎng)絡(luò)狀態(tài)映射表、次要報(bào)文在網(wǎng)絡(luò)狀態(tài)良好時(shí)采用雙網(wǎng)分散傳輸?shù)却胧捎行Ы档土司W(wǎng)絡(luò)的通信負(fù)荷,提高以太網(wǎng)的穩(wěn)定性與可靠性。
2 冗余通信結(jié)構(gòu)設(shè)計(jì)
2.1 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
本方案的冗余通信網(wǎng)絡(luò)采用“冗余至節(jié)點(diǎn)"的雙以太網(wǎng)結(jié)構(gòu)(如圖1)。每個(gè)節(jié)點(diǎn)配備兩個(gè)完全獨(dú)立的網(wǎng)絡(luò)接口(通訊介質(zhì)、網(wǎng)絡(luò)控制器、驅(qū)動(dòng)接口等均冗余配置),構(gòu)成A、B兩個(gè)獨(dú)立以太網(wǎng)通道。每個(gè)接口擁有各自的IP地址,分別與物理上獨(dú)立的以太網(wǎng)A網(wǎng)和B網(wǎng)相連。IP地址的第四個(gè)字節(jié)與節(jié)點(diǎn)號(hào)對(duì)應(yīng)(例如,節(jié)點(diǎn)n的A網(wǎng)和B網(wǎng)的IP地址分別為128.128.3.n,128.128.4.n)。當(dāng)其中一個(gè)網(wǎng)絡(luò)出現(xiàn)故障時(shí),節(jié)點(diǎn)仍可以利用另一個(gè)網(wǎng)絡(luò)進(jìn)行報(bào)文收發(fā),有效提高了系統(tǒng)的可靠性。
圖1 冗余以太網(wǎng)拓?fù)浣Y(jié)構(gòu)
2.2 節(jié)點(diǎn)網(wǎng)絡(luò)層次模型
網(wǎng)絡(luò)中報(bào)文可以在A、B兩個(gè)網(wǎng)絡(luò)冗余傳輸也可以獨(dú)立分散傳輸。但在應(yīng)用層上必須保證所有報(bào)文的端口單一性,因此本文在TCP/IP層和應(yīng)用層之間設(shè)計(jì)了冗余處理層,如圖2所示。
發(fā)送方的冗余處理層負(fù)責(zé)報(bào)文冗余通信方式的選擇,冗余報(bào)文的復(fù)制、報(bào)文時(shí)間標(biāo)簽的添加、傳輸通道的分配,實(shí)現(xiàn)了節(jié)點(diǎn)雙網(wǎng)冗余傳輸和雙網(wǎng)分散傳輸?shù)陌l(fā)送。
接收方的冗余處理層負(fù)責(zé)報(bào)文冗余通信方式的判別、冗余報(bào)文的合并、網(wǎng)絡(luò)故障自診斷,實(shí)現(xiàn)了節(jié)點(diǎn)雙網(wǎng)冗余傳輸和雙網(wǎng)分散傳輸?shù)慕邮铡?/P>
圖2 通信節(jié)點(diǎn)的結(jié)構(gòu)
2.3 通信報(bào)文格式
為區(qū)分冗余報(bào)文、非冗余報(bào)文以及實(shí)現(xiàn)冗余報(bào)文的篩選,本方案把以太網(wǎng)報(bào)文用戶數(shù)據(jù)區(qū)的前2個(gè)字節(jié)定義為報(bào)文時(shí)間標(biāo)簽(如圖3)。報(bào)文時(shí)間標(biāo)簽的最高位為“冗余通信”表示冗余通信傳輸方式。低15位為循環(huán)序列碼,標(biāo)識(shí)相同傳輸模式下發(fā)往同一目標(biāo)節(jié)點(diǎn)的報(bào)文發(fā)送順序。本方案在發(fā)送節(jié)點(diǎn)為每個(gè)目標(biāo)節(jié)點(diǎn)、廣播組、多播組各設(shè)計(jì)了一個(gè)寄存器存放上一次發(fā)送的報(bào)文的循環(huán)序列號(hào)。通過時(shí)間標(biāo)簽相當(dāng)于為兩個(gè)節(jié)點(diǎn)的通信傳輸建立了連接。
圖3 冗余以太網(wǎng)報(bào)文格式
3 冗余通信的實(shí)現(xiàn)
3.1 雙網(wǎng)冗余傳輸處理
利用報(bào)文中的時(shí)間標(biāo)簽,節(jié)點(diǎn)可以實(shí)現(xiàn)零故障恢復(fù)時(shí)間的雙以太網(wǎng)冗余通信,其通信過程分為冗余發(fā)送處理和冗余接收處理。
3.1.1 冗余發(fā)送處理機(jī)制
發(fā)送節(jié)點(diǎn)的冗余處理層根據(jù)報(bào)文的目標(biāo)地址把對(duì)應(yīng)寄存器里的循環(huán)序列碼加1,作為新報(bào)文的循環(huán)序列碼。新報(bào)文同時(shí)在A、B兩個(gè)網(wǎng)絡(luò)上發(fā)送。因此當(dāng)一個(gè)通道出現(xiàn)故障時(shí),發(fā)送節(jié)點(diǎn)仍能通過另一個(gè)通道及時(shí)發(fā)送報(bào)文,實(shí)現(xiàn)了零故障恢復(fù)時(shí)間的冗余發(fā)送。
3.1.2 時(shí)間優(yōu)先法冗余接收處理機(jī)制
雙冗余傳輸模式下,接收方同時(shí)接受A、B兩個(gè)網(wǎng)絡(luò)上的報(bào)文,當(dāng)一個(gè)通道出現(xiàn)故障時(shí),接收方仍能通過另一個(gè)通道及時(shí)接收到報(bào)文,實(shí)現(xiàn)了零故障恢復(fù)時(shí)間的冗余接收。接收節(jié)點(diǎn)通過報(bào)文時(shí)間標(biāo)簽判斷來自A、B兩個(gè)網(wǎng)絡(luò)的報(bào)文是否相同。實(shí)際應(yīng)用中,冗余報(bào)文在A、B兩個(gè)網(wǎng)絡(luò)上的到達(dá)時(shí)間可能存在差別。本方案采用時(shí)間優(yōu)先法處理冗余報(bào)文的接收,即只接收通過校驗(yàn)的優(yōu)先到達(dá)的報(bào)文。
本方案在接收節(jié)點(diǎn)設(shè)計(jì)了一組報(bào)文時(shí)間標(biāo)簽隊(duì)列,每個(gè)隊(duì)列對(duì)應(yīng)一個(gè)發(fā)送節(jié)點(diǎn),用于冗余報(bào)文的篩選(如圖4)。節(jié)點(diǎn)接收到來自節(jié)點(diǎn)n的校驗(yàn)正確的新報(bào)文后,查詢節(jié)點(diǎn)n的隊(duì)列,如果隊(duì)列中已經(jīng)有該報(bào)文的時(shí)間標(biāo)簽存在,節(jié)點(diǎn)丟棄該報(bào)文并刪除隊(duì)列中該報(bào)文的時(shí)間標(biāo)簽。否則節(jié)點(diǎn)在隊(duì)列中存放報(bào)文的時(shí)間標(biāo)簽及其到達(dá)時(shí)間。因此即使從傳輸超前的網(wǎng)絡(luò)中接收的報(bào)文校驗(yàn)失敗,節(jié)點(diǎn)仍有機(jī)會(huì)從傳輸滯后的網(wǎng)絡(luò)中接收數(shù)據(jù)。與PRP的“滑動(dòng)丟包窗口”相比采用此方法處理冗余報(bào)文增加了報(bào)文接收的可靠性。節(jié)點(diǎn)根據(jù)隊(duì)列中存放的報(bào)文到達(dá)時(shí)間周期性地清除隊(duì)列中超時(shí)的報(bào)文的時(shí)間標(biāo)簽,以確保隊(duì)列中的報(bào)文時(shí)間標(biāo)簽在合理接收范圍內(nèi)。
評(píng)論