袁凱 李俊娥,2 劉開培 陸秋余,2 倪明 羅劍波
電力廣域保護系統的測量數據上傳、執行報文下發以及各個區域之間的信息交換需要可靠與實時的通信保障[1?3],否則可能導致執行單元發生拒動或者誤動,威脅電力系統的安全穩定運行[4?7].目前電網大多采用點對點的信息傳輸方式,這種傳輸方式投資大,不能適應大規模的廣域保護系統應用需求.采用基于TCP/IP 協議的交換網實現互聯電網的廣域信息交換是未來電網保護與控制的必然發展趨勢.
廣域保護與控制系統的通信范圍廣、通信距離長,其通信網絡受到攻擊的可能性大,容易出現擁塞狀態.傳輸控制協議(Transmission control protocol,TCP)通過確認與超時重傳機制為應用程序提供可靠的傳輸服務,但其擁塞控制機制可能導致報文時延增加.用戶數據報協議(User datagram protocol,UDP)沒有擁塞控制機制,無論網絡擁塞與否,都按照源站自身的能力以不變的速率發送報文,且大量的UDP 報文發送到信道上,會進一步抑制TCP 的發送速率,從而具有信道資源搶占能力[8?9].
實時、可靠的通信系統是廣域保護系統的基礎[10?11].傳統的關于電力廣域保護系統通信實時性與可靠性保障方法的研究,主要采用優化網絡拓撲結構、基于多協議標簽交換(Multi-protocol label switching,MPLS)的流量工程[12?13]與路由優化[12,14]、針對不同優先級業務優化隊列調度算法[15]、基于區分服務體系結構模型的服務質量保障[13,15]等方法.如果傳輸層仍然使用TCP 協議,這些方法并不能解決同一數據流路徑上擁塞和出錯重傳帶來的時延問題.
有學者初步提出了基于UDP 傳輸可靠性要求高的工業控制報文.文獻[16]提出了基于UDP 傳輸協議的面向通用對象的變電站事件(Generic object oriented substation event,GOOSE)報文廣域互聯實時通信,但對可靠性保障只給出了應用層報文重傳的機制和增加冗余信道的建議措施,且存在如下不足:所設計的報文重傳時間間隔較大,穩定狀態時的重傳時間間隔為小于60 s,可選20 s,不能保證報文丟失或出錯時的業務實時性,雖然事件發生后縮短了重傳間隔,但多次重傳仍然會超時;冗余信道將極大增加投資成本,且不能避免攻擊引發的報文丟失和出錯問題.文獻[17] 提出基于UDP 協議傳輸局域網廣域測量系統(Wide area measurement system,WAMS)數據和在應用層增加重發機制和實時插值機制來保障UDP 傳輸可靠性的策略,但是,其重傳是基于數據缺失檢查和請求應答機制實現的,和TCP 類似,多次重傳會導致時延超出實時性要求;而實時插值機制針對同步向量測量單元(Phasor measurement unit,PMU)數據特點提出,并不適用于所有的應用.總之,上述文獻均未很好解決使用UDP 傳輸時通信業務的可靠性保障問題.目前為止,未見將糾錯、檢錯和重發機制聯合用于實際通信的研究.
電力廣域保護控制通信體系依照分層分布的設計原則進行構建[18?20].廣域保護系統的業務報文主要包括兩大類:測量數據上傳報文和控制命令下發報文.廣域保護與控制系統的動作時間(測量數據上傳和控制命令下發的動作時延)范圍在100 ms到100 s 之間,具體時延要求與業務類型、電網規模、元件位置有關[21].以失步保護為例,其測量數據上傳和控制命令下發的通信時延之和不能超過370 ms[22?23].
本文針對TCP 不能保障實時性而UDP 不能保障可靠性的問題,提出一種基于UDP 傳輸的應用層糾錯、檢錯和重發機制,以保障電力控制報文的實時性與可靠性,為廣域保護與控制系統走向IP 網絡通信提供參考.
考慮到計算復雜性,在應用層報文中加入的糾錯機制采用線性分組碼.
為保證使用UDP 傳輸時的可靠性,在設計糾錯碼時,應考慮信道的誤碼率,即使用的糾錯算法和在應用層報文中加入的糾錯碼,其糾錯能力應大于信道的誤碼率.
1)分組碼的校驗元長度約束條件
兩個等長字符串對應位置的不同字符的個數,稱為碼元距離,也稱漢明距,記為d.各個碼字間距離的最小值稱為最小碼距,記為d0,是衡量碼組檢錯和糾錯能力的依據.分組碼的糾錯或檢錯能力如下[24]:
為檢測e個錯碼,要求最小碼距為

為糾正t個錯碼,要求最小碼距為

為糾正t個錯碼,同時檢測e個錯碼,要求最小碼距為

當采用線性分組碼時,每一組的校驗元長度r為[24]

2)考慮信道誤碼率的糾錯碼理論長度
假設應用層報文的長度字節數為μ,信道誤碼率為λ,設編碼時將報文分為N組,假定分組后每組報文長度為整數,則每組需要糾正的最大比特位數t為

根據式(2)和式(4),則加入的糾錯碼長度δ為

定義1.分組碼是把信源輸出的信息序列,以k個碼元劃分為一段,通過編碼器為這k個信息元按一定規則產生r個校驗(監督) 元,則輸出碼長為nk+r的一個碼組,表示為 (n,k) .每一碼組的校驗元僅與本組的信息元有關,而與其他組無關[24].
定義2.當碼長為n的分組碼中的r個校驗元是由k個信元的線性組合來表達時,則該分組碼稱為線性分組碼[24].
線性分組碼主要包括漢明碼和BCH(Bose-Chaudhuri-Hocquenghem)碼.漢明碼只能糾正一位錯誤,BCH 碼能夠糾正多位錯誤.BCH 是迄今為止所發現的一種較好的線性糾錯碼類,它的糾錯能力非常強,特別在短和中等碼長下,其糾錯性能幾乎接近理論值.BCH 碼中,當碼長n2m ?1 (m為正整數)時,稱為本原BCH 碼.這一類編碼簡單,計算效率高[24].
定理1[24].對任意正整數m和t,一定存在一個二進制BCH 碼,它以β,β2,···,β2t?1為根,其碼長n2m ?1或是 2m ?1的因子,能糾正t個隨機錯誤,校驗位數目至多為mt個.
1.2.1 本原BCH 碼的編譯碼規則
定義本原BCH 編碼的發送端的碼字矩陣為C n[c n?1,c n?2,c n?3,···,c1,c0],碼字的前k位為信息位,后r位為校驗位(監督位).因此,信息元矩陣Ck[c n?1,c n?2,c n?3,···,c n?k+1,c n?k],校驗元矩陣Cr[c n?k?1,c n?k?2,c n?k?3,···,c1,c0]. 譯碼器收到的碼字矩陣為w[w n?1,w n?2,w n?3,···,w1,w0],信息在傳輸時發生隨機錯誤,假定錯誤矩陣為e[e n?1,e n?2,···,e1,e0],則wC n+e.
1)本原BCH 碼的編碼規則
步驟1.對于 (n,k) 分組碼,其生成多項式g(x)g0+xg1+x2g2+···x n?k?1g n?k?1+x n?k g n?k由xn ?1因式分解得到,即xn ?1g(x)h(x),則生成矩陣G[24]:

步驟2.對于本原BCH 碼,有GHT0 .由此可以得到校驗矩陣H[24]:

步驟3.由本原BCH 碼的性質可知即[24]

由于信息元cn?1~c n?k已知,則加入的校驗元c n?k?1~c0可以通過上述公式得到.即

2)本原BCH 碼的譯碼規則
步驟1.根據碼長n和信息元長度k計算校驗矩陣H.
步驟2.計算矩陣w的伴隨矩陣Sw HT.
步驟3.由于Sw HT(C n+e)HTeHT,可以估計錯誤矩陣
步驟4.譯碼器輸出的估計碼字
1.2.2 一種本原BCH 碼分組方法
假設本原BCH 編碼用二進制數實現,通過分析本原BCH 碼的編譯碼過程,可以計算編譯碼的時間,編碼和譯碼的移位運算次數分別為kr和nlog2n[24],當采用硬件進行編譯碼時,一次移位運算的時間非常短,此時編譯碼的時間基本可以忽略不計.
對應用層報文進行分組和糾錯碼長度計算時需要考慮如下問題:
1)本原BCH 碼的性能在碼長小于等于1 023比特時較好,特別在短碼時糾錯性能更好,隨著碼長的增加,糾錯性能變壞.因此,為了有較好的糾錯性能,分組后每組碼長應不超過1 023 比特[24].
2)根據信道的誤碼率和應用層報文長度可以計算信道的誤比特數.因此,為了保障信息在傳輸過程中的可靠性,必須滿足整個編碼的糾錯位數大于或者等于報文在信道傳輸過程中的誤比特數.
3)當原始的數據長度不滿足本原BCH 碼編碼規則時,需要用零補齊.
假設光纖的誤碼率為 1×10?3時,可以確定本原BCH 碼分組規則如表1 所示.
1.2.3 應用舉例
設有數據D,長度為200 字節.
依據表1,應當將數據分成N8 組,每組信息元長度為k200×8/8200位,數據D[d1,d2,···,d8],其中每一組信息元d i為1×200 的矩陣

其中,d ij0 或1.
根據定理1,本原BCH 碼的碼長必須為2m ?1(m為正整數),因此,對于200 比特的信息元,編碼后的碼長應為n255,若期望糾錯能力t1,則校驗元長度rmt8,信息元長度k′247. 因此需要對原始數據d i進行補零,補零的長度為k′′k′?k47,則補零后的數據,每一組信息元為1×247 的矩陣

每一組校驗元矩陣

其中,C rij0 或1.

并將的每一組用零補齊到247 位,得到對應組的譯碼前每組信息矩陣為1×247 的矩陣

按照本原BCH 碼譯碼規則對c i進行譯碼,得到對應組的錯誤圖樣ei,則譯碼后碼字
1.2.4 實驗驗證
為了驗證上述編譯碼規則和分組規則的正確性,進行了編程實現,實驗程序流程如圖1 所示,實驗程序偽代碼見附錄A.對應表1,分別選取應用層報文長度為1、30、59、60、80、115、116、160、231、232、320、462、463、800、1 400 字節作為實驗程序的輸入,實驗結果表明對所有選取的報文長度均能準確地進行BCH 編碼和譯碼,且當信道隨機錯誤小于糾錯碼的糾錯能力時,都可以得到糾正,即能得到正確的原始報文信息.

圖1 糾錯算法實驗程序流程圖Fig.1 Flowchart of the experiment program for error correction algorithm

表1 一種本原BCH 碼分組方法Table 1 A grouping method of original BCH code
為了進一步驗證糾錯碼的糾錯能力,對相同長度的應用層報文加入不同的錯誤圖樣進行了實驗.應用層報文長度取200 個字節、加入1 位錯誤時的實驗結果見附錄B,表明當信道隨機錯誤小于糾錯碼的糾錯能力時,信道誤碼可以得到糾正.應用層報文長度取200 個字節、加入2 位錯誤時的實驗結果見附錄C,表明當信道隨機錯誤大于糾錯碼的糾錯能力時,信道誤碼不能得到糾正.
應用層加入糾錯機制后,對通信業務的端到端時延影響主要有如下兩個方面:1)加入的糾錯碼會增加報文的長度,從而增加報文的發送時延;2)糾錯碼的編碼和譯碼會增加發送端和接收端的處理時延.
1.3.1 加入糾錯碼后增加的通信時延
假設通信報文糾錯碼的字節數為δ,通信網絡的發送速率為M,報文的發送時延為τ,則單個節點增加的報文發送時延為

編碼和譯碼的時延與其編譯碼算法復雜度和編譯碼器的處理器速率等因素有關.假定算法復雜度和處理器確定的情況下,編碼和譯碼的時延分別為T1和T2,編碼和譯碼的總時延T為

1.3.2 實例分析
1)增加的發送時延
為了比較可能增加的最大通信時延,應用層報文的長度取256 字節.依據表1,采用應用層糾錯和UDP 方案時,傳輸層的報文長度為256+16+8=280 Bytes,其中16 字節是增加的糾錯碼長度,8 字節是UDP 報文首部長度;采用TCP 傳輸方案(無應用層糾錯) 時,傳輸層的報文長度大于等于256+20=276 Bytes,其中20 為TCP 報文的固定首部長度.可見,傳輸時延在單個節點最多增加τ=(280?276)×8/M=32/M,M為鏈路的發送速率,取M=100 Mbps 時,τ=32 bits/100 Mbps=0.32 μs. 電力控制報文的轉發跳數不可能多,一個省級調度數據網的報文轉發跳數通常是3~4 跳,以5 跳計算,增加的總發送時延為0.32×5=1.6 μs,仍然非常小,幾乎可以忽略不計.
2)增加的編譯碼時延
應用層糾錯碼的編譯碼只發生在源端和目的端,即通信過程中只增加一次編碼時延和一次譯碼時延.當采用硬件進行編譯碼時,編譯碼的時間基本可以忽略不計.
1.3.3 仿真驗證
1)未增加糾錯機制的報文端到端時延
為了驗證TCP 和UDP 對應用層業務報文實時性的影響,下面以圖2 所示的某省級電力調度數據網為例仿真TCP 和UDP 傳輸方式下的端到端最大時延.假設其由省調雙核心、備調雙備份和10個地調組成,其主網是4 個155/1 000 Mbps 環型鏈的雙歸網絡.

圖2 一個省級電力調度數據網絡結構Fig.2 The structure of a provincial power dispatch data network
以測量數據報文上傳業務為例.綜合各類文獻,取測量數據的應用層報文長度為典型值256 字節,測量數據上傳的頻率為50 Hz,即測量設備以20 ms的間隔持續向控制中心發送測量數據.
設定網絡暢通和擁塞兩種情況,仿真傳輸層分別使用TCP 和UDP 時,統計相應的測量數據報文上傳端到端的最大時延,結果如圖3 和圖4 所示.從圖中可以看出,在網絡正常情況下,TCP 和UDP傳輸方式下的業務時延相差不大,都能夠滿足實時性要求.但在網絡擁塞狀況下,采用TCP 時,隨著仿真時間的增加,時延急劇增加,達到數秒甚至十余秒(第5 分鐘時達到40 s),不能滿足大部分廣域保護業務的實時性需求;而UDP 傳輸方式下,業務最大時延穩定在80 ms 左右,能滿足大部分廣域保護業務的實時性需求.

圖3 網絡暢通時采用TCP 和UDP 的業務最大時延Fig.3 Maximum delays of messages using TCP and UDP when the network is uncongested

圖4 網絡擁塞時采用TCP 和UDP 的業務最大時延Fig.4 Maximum delays of messages using TCP and UDP when the network is congested
2)增加糾錯機制后的報文端到端時延
為了驗證采用本文糾錯方案后報文的端到端時延是否滿足電力業務的實時性要求,本文根據上文設計的BCH 編碼算法參數進行了仿真,且為便于比較分析,仍以圖2 所示的某省電力調度數據網絡為例,網絡狀況也分為暢通和擁塞兩種情況.
仿真中,增加糾錯碼后報文長度變化增加的發送時延已通過設定報文大小而包含在仿真結果中,由于編譯碼時間可以忽略,仿真的端到端時延就是采用應用層糾錯和UDP 傳輸方案的總時延.
仿真方法及參數設置與前文類似,不同之處僅僅是UDP 傳輸時因增加了應用層糾錯機制而增加了報文長度.應用層報文的長度仍取256 字節,則TCP 報文的數據區長度為256 字節,UDP 報文的數據區由于加入16 個字節的糾錯碼,其長度為272字節.
網絡暢通時,報文的端到端時延如圖5 所示.網絡暢通時,UDP 傳輸方式下報文端到端時延和TCP 傳輸方案相當,報文時延在1.3 ms 左右,遠遠小于廣域保護測量數據上傳和控制命令下發所要求的時延100 ms.

圖5 網絡暢通時TCP 和UDP 傳輸下報文的端到端最大時延Fig.5 Maximum end-to-end delays in TCP and UDP transmission modes when network is uncongested
為了觀察不同擁塞程度下的通信時延,對帶寬為155 Mbps 的鏈路,分別仿真擁塞流量為156 Mbps、168 Mbps、180 Mbps 以及192 Mbps 時TCP 傳輸方式和UDP 傳輸方式的端到端時延,結果如圖6所示.可見,TCP 傳輸方式下的端到端時延隨著擁塞程度加重越來越大,延時在1~40 s 之間,不滿足廣域保護控制系統的實時性要求;而UDP 傳輸方式下報文的端到端時延跟網絡擁塞程度幾乎無關,其時延穩定在80 ms 左右,遠小于TCP 傳輸方式,仍滿足廣域保護系統中對測量數據報文傳輸時延的要求.

圖6 4 種擁塞流量時TCP 和UDP 報文的端到端最大時延Fig.6 Maximum end-to-end delay of TCP and UDP packets in four types of congestion traffic
UDP 傳輸方式中加入了糾錯碼,能夠確保報文在傳輸過程中具有高可靠性,避免了出錯重傳引起的時延抖動.
UDP 傳輸方式下在應用層報文中加入糾錯碼,只能保障報文在傳輸過程中出現隨機錯誤情況下的可靠傳輸,且其可靠性與糾錯碼的糾錯能力相關,而當錯誤位較多或突發性誤碼率高而超出糾錯碼能力、或整個報文丟失時,報文的可靠性則無法保證.為此本文提出:1)對于報文到達了接收端的情形,為了進一步提高報文的可靠性,在應用層報文中增加檢錯機制;2)為防止報文在傳輸過程中丟失,增加報文的重發機制.
在應用層增加檢錯機制的目的,是判斷接收端經過糾錯算法譯碼后的信息是否為正確的數據.因此,本文將檢錯范圍設計為包括信息元和糾錯碼兩者.
設檢錯編碼算法為f,則在發送端和接收端的檢錯碼編碼和譯碼策略分別如式(9)和式(10).

式中,Cs為發送端檢錯碼,Ck為發送端信息元,C r為發送端糾錯碼.

式中,CR為接收端檢錯碼,為譯碼后的信息元,為譯碼后的糾錯碼.
如果Cs與CR相同,則認為糾錯碼糾正了錯誤,否則認為糾錯失敗.
本文建議采用與TCP 校驗和相同的算法進行檢錯.則檢錯碼的長度為2 字節,幾乎不增加發送時延.同時,由于TCP 校驗和計算簡單,處理時延也可以忽略不計.實際中,在應用層糾錯方案中,由于UDP 校驗和需要禁用,減少了UDP 計算校驗和的時間,從而在應用層增加這種檢錯機制并不會增加時延.
這樣,在報文到達接收端的情況下,其可靠性遠大于TCP 傳輸方案.但是仍不能解決報文丟失情況下的可靠性問題,因此,本文引入下一節討論通過重發機制來解決這一問題.
為了避免報文丟失,可以在廣域保護系統中采用將同一報文連續重復發送多次的策略.
電力通信網絡為專用網絡,相對互聯網來說,其通信量遠遠小于信道的容量,且具有可預見性,因此,重復發送報文雖然增加了通信量,但是可以根據信道容量控制重發次數來避免引起網絡擁塞,還可以在網絡規劃時就考慮到重發報文增加的帶寬需求.
廣域保護與控制系統的動作時延組成如式(11)所示.

式中,TG為廣域保護與控制系統總時延,T s為設備發送時延,T e為發送間隔時延,Tce為測量數據上傳通信時延,Tcr為控制命令下發通信時延,T j為控制命令決策時延.其中通信時延與網絡傳輸協議、網絡狀態和網絡結構有關.
在UDP 傳輸方式下,將報文連續發送N次,不需要等待接收端的確認,報文之間的時間間隔只受發送端處理能力和發送能力的限制.最壞情況下(前N ?1 個報文都丟失、只有最后一個報文到達),報文的端到端時延為第一個報文生成到最后一個報文在接收端譯碼完成的總時延,如圖7 所示,即

圖7 報文連續發送N 次的總時延構成Fig.7 Composition of the total delay when the message is transmitted N copies

式中,TUDP為UDP 傳輸時應用層報文總時延,T a為單個報文的端到端時延(含編譯碼處理時延、發送時延和鏈路傳播時延),T b為幀間間隔,T c為單個報文的發送時延,N為報文的發送次數.
TCP 協議為了保障報文的可靠性,具有超時重傳的機制.假設TCP 報文重傳N ?1 次,相當于報文發送了N次.TCP 報文的時延由超時重傳時間和報文的傳輸時延構成,即

式中,TTCP為TCP 傳輸時應用層報文的總時延,T d為單個報文的端到端時延(含發送時延和鏈路傳播時延),TRTO為超時重傳時間,T c為單個報文的發送時延.
TCP 報文為了實現超時重傳,在每發送完一個分組設置一個超時計時器,超時計時器的數值就是超時重傳時間.TCP 超時重傳時間為加權平均往返時間,是一個動態值,通常會比數據在網絡中傳輸的平均往返時間略長一些,即通常TRTO>2T d,為了簡化計算,取TRTO3T d.由于報文端到端時延T d的值會因網絡狀態和傳輸路徑的不同而改變,是一個不確定值,因此,TCP 超時重傳時間TRTO也是不確定的.
下面以如圖2 所示的通信網絡為例,對報文丟失情況下TCP 重傳和UDP 重發機制對時延的影響進行分析.
1)TCP 傳輸方式下,在網絡暢通時,根據前文的仿真結果,可知式(13)中的Td1.3 ms .應用層報文為256 字節,則TCP 傳輸時物理層的數據總長度為(256+20+20+26)=322 bytes,其中,20 字節是TCP 報文固定首部長度,20 字節是IP分組固定首部長度(為了簡化問題,TCP 和IP 均忽略了選項字段),26 是以太網幀前導、首部和尾部的總長度.選擇100 Mbps 以太網,根據式(7),單個報文的發送時延為T c322×8 bits/100 Mbps25.76 μs.TCP 報文的超時重傳時間TRTO3.9 ms.網絡暢通時,TCP 報文的時延為TTCPT d+(N?1)TRTO+(N?1)T c,當N3時,TTCP9.152 ms,根據式(11),TceT crTTCP,PMU 發送間隔T e20 ms,T GT s+T e+T ce+T cr+T j(T s+38.304+T j)ms,總時延大于38.304 ms,滿足大部分廣域保護控制系統報文的通信時延需求.
網絡擁塞時,T d在1~30 s 之間.遠遠超過大部分廣域保護控制系統報文的最大時延需求.
2)UDP 傳輸方式下,在網絡暢通時,根據前文的仿真結果,可知式(12)中的Ta1.3 ms. 應用層報文為256 字節,則UDP 傳輸時物理層的總長度為(256+16+2+8+20+26)=328 bytes,其中16 字節是增加的糾錯碼長度,2 字節是增加的檢錯碼長度,8 字節是UDP 報文首部長度,20 字節是IP 分組固定首部長度(為了簡化問題,忽略了IP 選項字段),26 是以太網幀前導、首部和尾部的總長度.選擇100 Mbp s 以太網,根據式(7),單個報文的發送時延為T c328×8 bits/100 Mbps26.24 μs.兩幀之間最少要有96 bits 的發送時間間隔,則幀間間隔為Tb96/1006s0.96 μs. 當N=3 時,應用層報文的總時延為TUDP=1.3544 ms,遠遠小于廣域保護系統報文的時延需求.
網絡擁塞時Ta80 ms,假設N=3,則TUDP80.0544 ms,與單個報文的端到端時延幾乎一樣.
綜上,由于TCP 重傳時間遠大于UDP 傳輸方式下的報文重發間隔,且TCP 重傳時間隨著網絡擁塞情況的惡化而急劇增大,使得丟包率相同的情況下,UDP 重發機制的實時性遠高于TCP 重傳機制.
上文提出的糾錯、檢錯與重發機制,在電力廣域保護系統通信中聯合應用的具體方法如算法1 和算法2.
算法1.發送端應用層報文生成與封裝算法
輸入.原始應用層報文μ,μ≤1 400 bytes;
輸出.UDP 報文X;

算法2.接收端報文解封裝與處理算法
輸入.UDP 報文X′;
輸出.原始應用層報文μ′′;

算法1 用于發送端通信程序的編寫,給出了從原始應用層報文到UDP 報文發送過程中的報文生成與封裝方法及步驟:首先利用第1.2 節提出的BCH糾錯編碼規則和分組方法對其進行糾錯編碼,并按照第2.1 節提出的檢錯機制計算校驗和,然后將原始數據、糾錯碼與校驗和一起封裝到UDP 報文數據區,并禁用該UDP 報文的校驗和,最后依照第2.2 節中的重發機制對該UDP 報文進行連續3 次重發.需要說明的是,為了避免出錯報文在傳輸層被丟棄,算法中增加了禁用UDP 自身差錯校驗的機制,即實現時應將UDP 報文首部的“校驗和”字段置為0.
算法2 用于接收端通信程序的編寫,給出了從UDP 報文接收到將原始應用層報文提交給應用程序的報文解封與處理方法及步驟:首先對接收到的UDP 報文解封裝得到未處理的應用層報文,然后按照第1.2 節提出的BCH 糾錯譯碼規則和分組方法對其進行糾錯譯碼,得到原始應用層報文,再按照第2.1 節給出的檢錯算法進行檢錯,檢錯通過則將原始應用層報文提交給應用程序,并且不再處理重復報文,否則丟棄該報文.
在相互通信的兩端,必須同時實現算法1 和算法2.
由于TCP 和UDP 報文在同樣的信道中傳輸,因此假定兩種報文在信道中傳輸發生錯誤的概率為P.報文錯誤類型可以分為隨機的誤碼錯誤和報文丟失錯誤,假設報文在傳輸時誤碼率為PSER,丟包率為PPLR.
TCP 通過校驗和的檢錯機制對誤碼錯誤進行校驗,通過超時重傳來提供出錯和丟失報文的可靠性.假設校驗和不能檢錯的概率為P1,則TCP 報文重發N?1 次的可靠性PTCP為

UDP 傳輸方式下,應用層報文同時具有檢錯和糾錯能力,實現對誤碼錯誤的糾正或校驗,同時通過連續多次重發來為超出糾錯能力的錯誤報文和丟失的報文提供可靠性.假設校驗和不能校驗錯誤的概率為P2,糾錯碼不能糾正錯誤的概率為P3,如果UDP 快速發N次,則使用快速多發機制的UDP協議報文的可靠性PUDP為

由于P1P2,P3遠小于1,因此PUDP>PTCP.
綜上所述,UDP 報文中加入檢錯和糾錯機制并采用快速重發多次的機制時,其可靠性遠大于TCP 報文的可靠性.
文獻[16?17]提出了基于UDP 協議的通信可靠性方案,本文方案與這兩個UDP 傳輸方案的對比如表2 所示.可見,與已有方案相比,本文提出的方案在確保電力廣域保護系統通信業務實時性的同時具有更高的可靠性.

表2 本文方案與其他方案的對比Table 2 Comparison of the proposed scheme with others
目前沒有發現傳輸層使用UDP 并將糾錯機制加入應用層的相關研究,也未發現聯合使用糾錯、檢錯和重發機制的方案.
當電力廣域保護系統的通信網絡擁塞時,報文采用TCP 傳輸協議的時延會急劇增加,而已有UDP 傳輸方案不能保證報文的可靠性,因此,本文提出了一種新的廣域保護系統通信實時性與可靠性保障方案,該方案在傳輸層采用UDP 協議來保障報文的實時性,通過聯合采用應用層糾錯與檢錯機制、和報文快速重發機制來保證報文的可靠性.針對電力廣域保護通信業務特點,本文選擇本原BCH碼作為糾錯編譯碼算法,并設計了分組方法;給出了檢錯和重發的建議方案;設計了UDP 傳輸下的檢錯、糾錯與重發機制的聯合應用算法.理論分析和仿真結果表明,本文方案在網絡擁塞時仍能保障絕大多數電力廣域保護業務的實時性,且可靠性高于TCP 傳輸方案及其他UDP 傳輸方案.在實際應用中,可以進一步聯合傳統實時性與可靠性保障方法,優化網絡和業務系統結構,最終實現對所有業務的實時性和可靠性保障.
本文設計的糾錯譯碼算法只是一種實現方法,在應用中,也可以按照實際信道的誤碼率、算法的復雜性和通信設備的計算能力權衡考慮來設計適用的糾錯算法.本文工作也可為其他工業控制系統參考.
附錄A 實驗偽代碼


附錄B 加入1 位錯誤時的實驗結果
數據區的長度為k=200 byte
輸入信息序列為y=DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74
填充零后的輸入信息序列為M=DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74 00 00 00 00 00 00
編碼后的信息序列C=8F 41 5D AF 1E 20 47 97 FE E8 A4 C8 D6 75 F2 0C 19 1E A2 96 84 54 99 D2 47 00 00 00 00 00 00 B5
錯誤圖樣序列E=00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
譯碼序列為C'=8F 41 5D AF 1E 20 47 97 FE E8 A4 C8 D6 75 F2 0C 19 1E A2 96 84 54 99 D2 47 00 00 00 00 00 00 B5
填充零后信息恢復序列M'=DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74 00 00 00 00 00 00
信息恢復序列y'=DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74
附錄C 加入2 位錯誤時的實驗結果
數據區的長度為k=200 byte
輸入信息序列為y=38 6A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 66 A9 FF 8F 2C C1
填充零后的輸入信息序列為M=38 6A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 66 A9 FF 8F 2C C1 00 00 00 00 00 00
編碼后的信息序列C=38 6A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 66 A9 FF 8F 2C C1 00 00 00 00 00 00 FF
錯誤圖樣序列E=00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 04 00 00 00 00 10 00 00 00 00 00 00 00 00
譯碼序列為C'=38 4A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 E6 AB FF 8F 2C C1 00 00 00 00 00 00 BF
填充零后信息恢復序列M'=38 4A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 E6 AB FF 8F 2C C1 00 00 00 00 00 00
信息恢復序列y'=38 4A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 E6 AB FF 8F 2C C1