城市軌道交通標準技術委員會魏曉東
中國電子信息產業集團有限公司第六研究所趙云飛
5.3 接口可靠性
5.3.1 接口可靠性設計
許多信息化集成系統執行重要業務功能,在客戶的經濟活動中起著關鍵作用,常需要7×24小時不間斷運行,對這類系統可靠性要求特別高。但信息化集成系統不僅牽涉設備種類多、結構復雜,接口可靠性脆弱又沒有通用標準、無法充分試驗和鑒定,導致系統整體可靠性難以評價。接口可靠性可通過一系列可靠性方法來獲得和提高,包括預防、診斷、容錯、糾錯等。在本節中,將首先分析接口的失效形式,然后逐一介紹這些接口可靠性方法。
5.3.2 接口失效形式
接口是集成系統的薄弱環節,是由接口的物理形式和工作環境決定的。接口連接處接頭多數被設計為可拆卸,以增加接口靈活性、方便安裝和維護,但同時留下了接頭處斷開、虛接、電特性變化等可能性,成為失效隱患。另外,接口所用的長導線也會意外遭遇外力作用,造成斷開或虛連通;長導線還會受到環境電磁影響,隨時可能產生誤碼、干擾接口通信。接口失效可表現為連通性問題、功能完備性問題、傳輸穩定性問題等。
連通性問題:連通性問題,指無法連通、完全無法傳輸信息。通常是由設備不符合標準、接口驅動程序編寫錯誤,或連接方式錯誤、接口參數設置不正確等原因造成的。由于互聯互通是接口的基本功能,這類問題能在第一時間被發現、關注和解決。
功能完備性問題:功能完備性問題,指部分接口功能喪失,但另一部分功能依然可用的情況。比如雙向通信的時候只剩下一個方向可以傳輸信息,或總線上某單個設備通信失效而其它設備依然通信正常,或僅某類信息停止傳輸而其它信息依然在傳輸等。處理時除了要排查硬件錯誤,還應特別注意接口軟件的設計,看是否存在邏輯邊界處理不當、或協議報文控制字填寫錯誤等情況。
傳輸穩定性問題:傳輸穩定性問題,指傳輸中經常性出現丟包、亂序、錯包情況,導致接口傳輸時通時斷、或時快時慢,接口協議頻繁遇到無會話、錯誤會話、會話遲緩等異常,使接口功能時好時壞。造成傳輸穩定性差的原因,通常主要來自硬件設施不規范、接口電氣特性偏離標準,如接頭連接方式錯誤、線纜過長、設備數量過多、線纜終端處理不當、設備接地不當等。當然,也可能確實是由于工作環境惡劣,電磁、振動等干擾超過了設計基準。
5.3.3 失效預防措施
采用高質量傳輸介質,提供電氣隔離和通信隔離,控制接口軟件缺陷和提高軟件健壯性,提高可靠性。
高質量傳輸介質:采用高質量傳輸介質,能減少電信號的衰減、增強抗干擾能力。在要求傳輸距離長、接口線纜上需連接多套設備時,或現場電磁、溫度環境比較復雜的時候,務必選用高質量的通信線纜,用這部分成本投入能換回接口可靠性的提高,可降低運維難度和工作量。
電氣隔離和通信隔離:隔離,指接口各方在保持互聯互通的同時,確保己方不受其它設備/子系統運行故障的影響。接口隔離措施有電氣隔離和通信隔離。電氣隔離常采用光電隔離,在接口連接處使用光電轉換器件,將接口各方的通信口電氣回路相互隔斷,避免不同電路之間的相互干擾;通信隔離體現在接口通信協議中,各接口方的信息發送和接收各自使用單獨鏈路、執行單向通信,發送者不用關注接收者的狀態,發送者自身的行為不受對方限制或干擾。為可靠傳輸,實現通信隔離的接口協議需具備狀態無關的特性,即接口方的行為完全取決于自身當前的狀態,與歷史狀態和其它方的狀態無關。
在跨不同安全級的接口上,特別是從高級別系統向低級別傳輸信息時,必須提供接口隔離,保護高級別系統和設備免受到低級別連接方的數據崩潰、信息錯誤、功能故障等的影響。
接口軟件健壯性:健壯性是針對接口軟件而言,即接口軟件自身不產生錯誤,在硬件和數據異常情況下也能保持自身不故障。復用已成熟的接口軟件、或基于成熟接口軟件框架來開發接口軟件,或在研發中嚴格過程控制,均可獲得高質量的接口軟件。接口軟件要對各種異常安排好應對措施,準確識別和過濾非法操作。
5.3.4 失效診斷措施
集成系統運行時,一旦出現接口失效,應在第一時間啟動自動處理,并設法通知操作人員,避免問題繼續擴大,使接口盡快恢復正常。這就要求在線時能對接口狀態進行診斷,這種能力被稱為接口自診斷。接口自診斷內容通常包括設備診斷、鏈路診斷、會話診斷、數據診斷。
設備診斷:設備診斷,檢查的是接口對端設備的在線、離線等狀態,即運行期間,接口端設法檢查與自己存在信息交互的其它連接端的在線或離線狀態,并將此狀態匯報給集成系統。設備在線或離線狀態信息是集成系統的一類實時信息,是設備監視功能所必須的,因此這種檢查通常需持續、周期性地快速執行。
設備診斷由接口軟件實現,方法是由數據傳輸的接收方檢查是否有來自指定對端設備通信數據,如果在規定時期內沒有收到數據,就認為該設備離線,否則為在線。為避免誤判,可在連續多次檢查后再作出判斷。判斷在線與判斷離線所需檢查的次數通常不同,常見的判斷邏輯是:連續多次收不到該設備的數據包才判它離線,而隨時收到它的一包數據就可判在線。
在接口協議中對數據傳輸增加的確認應答,也能完成設備診斷,比如電力調度系統的遙控/遙調命令,在通信規約就規定有“選擇-返校-執行”過程,其中的“選擇-返校”就可用作發命令前對信息通道和執行設備狀態的一個診斷。
接口協議中也可以規定設備診斷專用的測試幀,運行期間可定期插入測試幀和應答幀,來執行設備診斷,只有當向某一設備發送測試幀,后又接收到該測試幀的應答幀時,才認為該設備是在線的。
鏈路診斷:鏈路診斷,指在運行環境下對連接的物理或邏輯通路進行通斷狀態的檢查。與設備診斷一樣,鏈路狀態也是集成系統重要的實時信息,需要進行持續、周期性快速診斷。
鏈路診斷通常由數據接收方執行,原理也是檢查是否有通信數據。與設備診斷不同的是,鏈路診斷不關心數據來源,只要能收到正確數據包就判鏈路正常。
會話診斷:會話診斷,是檢查傳輸過程中是否有丟包、亂序等異常。這種異常會導致接口行為與協議規定不一致,引發通信功能紊亂。
該異常影響的是協議,診斷它也是從協議入手。一種方式是在協議的信息格式中設置報文序號、反轉標志、匹配標志等控制字節,控制字節隨數據一同傳輸、并在接收端加以分析解析,識別出異常。也可以在協議中設置反饋校驗(IRQ)機制,反饋校驗也稱為回程校驗,信息接收方把收到的數據包反送給信息源發送端,信息源發送端比較發送數據與回送數據,從而檢出是否發生錯誤。
數據診斷:數據診斷是針對通信過程中的錯誤數據包而言的,即數據包傳輸中發生的誤碼。常用的手段是附加各類校驗碼,如奇偶校驗碼、循環冗余校驗碼等。(1)奇偶校驗碼(Parity)是一種最基本的校驗方法。奇偶校驗碼是簡單地通過附加一個檢驗位來使得碼字中"1"的個數保持為奇數或偶數的編碼方法。(2)循環冗余校驗碼CRC(Cyclic Redundancy Code)是一種在計算機網絡和數據通信中用得最廣泛的檢錯碼。
CRC具有良好的代數結構。采用CRC校驗時,發送方和接收方用同一個生成多項式g(x),并且g(x)的首位和最后一位的系數必須為1。假設待發送的二進制數據多項式表示為t(x),CRC的處理方法是:發送方以g(x)去除t(x),得到余數作為CRC校驗碼。校驗時,以計算的校正結果是否為0為據,判斷數據幀是否出錯。
5.3.5 冗余容錯措施
容錯技術在于用增加額外資源的方法來換取系統的可靠性,這些額外資源,相對于系統為完成其功能所必須的資源而言,稱作冗余資源。
對重要的、失效概率高的接口應設置冗余,使系統具有一定的容錯能力。接口冗余,指設置兩套或多套的接口設備和連接線路,當一處發生故障時,備用部分能立即投入工作、接替原工作部進行信息傳輸。
冗余只用在適合的地方。對通信控制器和通信線路,通常要實施冗余;對智能設備和I/O設備,則多數時不用冗余。
冗余結構形式:在信息化集成系統總體設計中,為便于接口實施和管理,通常會設置一些專用作接口處理的設備,稱為通信控制器或前端處理機。這些接口處理設備可支持多種接口形式,包括以太網、串行點對點、串行總線、現場總線等,可以管理與多套智能設備和子系統的接口。在被集成和互聯的另一端,是大量的智能設備和一定數量的子系統,它們有的是待建的、有的是已建的,單個個體使用的接口形式比較單一,個體能提供的連接端口數量也有限。
根據上述特點,可列出經濟合理的冗余方案原則:通信控制器可以冗余,被接入的設備和互聯的子系統通常不冗余,根據可用端口數和應用需要可以確定鏈路是否冗余。
冗余功能模式:從功能角度看,接口冗余的模式可分為熱備冗余和并行冗余。熱備冗余是同時提供兩套接口設施,為主的那套承擔接口任務,另一套也啟動起來隨時備用,一旦為主的設施失效,系統立即將接口任務切換到備用設施。
除熱備冗余外,集成系統也可能會用到并行冗余。并行冗余是指:兩套接口設施同時工作,無主備之分,同一時刻兩套設施均執行接口任務,將信息從源頭分兩路傳輸至目的地的端口。
在網絡環節,并行冗余有如下優點:(1)雙網工作期間,如果一網瞬間通信失效,不會影響接口通信;(2)如果一網長期失效,則接口網可經由另一網保持通信,其間不需等待故障檢測、診斷時間,以及切換時間;(3)雙網同時工作,仍可具備故障檢測、診斷功能,一旦發生故障可及時將故障網絡切除,同時通知維護人員,由于診斷結果不作為雙網動態切換的依據,從而可避免故障檢測失誤造成錯誤切換,避免雙網工作不穩定造成頻繁互切換,進而提高接口可靠性。
并行冗余不單純是硬件設施冗余,它會帶來信息冗余,即在目標接口端會收到雙份信息,這種冗余信息有時可用作檢錯和糾錯,多數時候接收端要將冗余信息過濾掉,保持信息源單一,避免產生歧義和不一致。過濾冗余信息的方法很簡單,可以像熱備冗余一樣選用其中一路,也可以用信息編號來撿出合用信息。
冗余實現技術:接口冗余技術,是在架構層面上解決接口可靠性問題,所以它不是個局部技術,而是一項全局性技術,會影響到接口的方方面面,甚至會影響到集成系統。要實現冗余,技術涉及到系統集成的計算機、通信、軟件設計、可靠性等多門類技術,是一項高復雜度的工作。實現接口冗余特別需要軟件進行大量事務處理,如:(1)信息同步:數據同步、狀態同步、通信隔離;(2)鏈路訪問沖突:備用靜默、交叉分時、主借備路;(3)數據一致性處理:冗余信息過濾、一致性核查;(4)故障診斷:對端設備故障診斷、鏈路故障診斷、本地設備自診斷、心跳監測;(5)故障隔離:故障標識、故障通報;(6)主備仲裁:整機切換、單鏈路切換、單設備切換、陷阱逃脫原則;(7)系統狀態機:主備“初始化、工作、故障”疊加“身份切換”;(8)主備切換:操作權交接、數據擾動、切換效率。
這部分軟件設計的關鍵是接口故障檢測、主備仲裁和主備切換,主要設計約束是切換效率。
不同系統集成商采用不同的集成平臺,設計目標和各個技術環節采用的手段也不盡相同。以主備仲裁中的“選擇主”為例,有的采用故障點數比較策略,有的采用故障點加權比較策略,還有的采用局部活動局部待機策略,等等,這些策略都能保證單故障情形下接口功能不喪丟,同時還或多或少提供了交叉故障適應能力,進一步提高了系統可用性。
5.4 接口軟件開發
5.4.1 接口軟件結構
接口軟件需求的特性要求接口軟件結構與具體設備無關。開發接口軟件時,應首先搭建一個與設備無關的接口軟件框架,然后再基于此開發接口通信驅動程序。
如果不需要考慮集成系統接口數量眾多的特性,只要求將一兩個外圍設備接入到系統中,那么針對性地開發一項接口軟件,其難度本身并不大;然而,集成系統的主要特點恰恰就是接口設備數量多、類別雜,設備特性、接口形式、接口協議、接口信息多種多樣,系統集成商必須要面對這些難題,如果對此提不出有效解決辦法,就會陷入變更、性能、版本、工作量、人手等多方面問題的困境。
解決該問題的有效方法是將接口軟件分出層次:有的層次處理通用的、共性的問題,有的層次處理專用的、個性化的問題。通過通用層,提供計算機硬件資源和接口配置訪問的管理,提供對接口運行的調度管理,提供接口數據統一處理的機制,包裝接口要面對的多數處理過程,如冗余、數據服務訪問接口等,由此形成平臺化接口的完整框架;在專用層,只需對具體協議進行編碼,形成特定接口驅動,就能輕松接入特殊設備和子系統。
基于上述思路搭建起來的通信控制器接口軟件接口如圖3所示。
圖3 通信控制器接口軟件結構示意
接口軟件共分數據服務層、接口管理層、接口協議層、通用硬件層四個層次。其中,數據服務層為應用系統提供數據服務,接口管理層提供接口調度管理,這兩層是所有接口驅動共用的;通用硬件層提供可復用的硬件驅動,如串口驅動、以太網驅動等,任何接口驅動都可以直接使用這些資源;位于接口協議層的接口驅動才真正實現通信協議,控制報文收發和解析。為進一步提高接口實施的效率和質量,系統集成商逐步積累出一些標準接口的接口驅動,搭建出一個標準接口驅動庫。標準接口驅動與接口框架和接口驅動的關系如圖4所示。
圖4 接口軟件邏輯結構
接口框架加接口驅動的軟件結構具有以下優點:它能綜合平衡接口實施成本和軟件研制技術困難,能提高接口軟件的重用度,并保證集成系統的開放性;它能以一致的方式處理通信接口,能支持接口開發模式的統一,支持工程過程有序開展和工程過程的標準化。
接口驅動程序:接口驅動的功能,是按接口協議規定,使用規定的物理端口與外部設備/子系統進行信息交換。歸結起來有兩項任務:端口通信、協議處理。
(1)端口通信:通常借助平臺提供的通信硬件驅動庫來完成。通信硬件驅動庫中存有可復用的標準通信板卡驅動,如串口驅動、TCP/IP協議棧、現場總線板塊驅動等。為方便接口驅動程序使用,通信硬件驅動的訪問方式一致,僅通過配置就可切換要用的通信硬件。接口驅動基本與硬件形式無關。
按通信硬件與接口驅動之間的數據傳輸特點,通信硬件驅動可分為兩類,串行類型驅動和板卡型驅動。串行類型驅動,指與接口協議層之間以串行數據流進行交互的通信硬件驅動,串行數據流可以是類似RS485/USB等的無邊界數據流,也可以是類似TCP的有邊界數據流。這類驅動通常有統一定義的編程接口和訪問接口。板卡類型驅動,指與接口協議層之間以內存映射、雙口RAM、特殊寄存器等形式進行交互的通信硬件驅動,它通常針對特殊的硬件板卡。使用板卡類型驅動時,需依據專用通信卡的使用要求,執行一些專用的初始化、中斷設置、寄存器讀寫等操作,或調用專用的API函數來獲取采集數據和發送命令。
(2)協議處理:協議處理是接口驅動最主要的任務,以完成最核心的接口傳輸功能。協議處理也是集成系統應對設備差異的主要環節。
對主動傳送型協議,設備有主動上傳數據的能力,這是許多簡單接口常用的工作方式,接口驅動程序無需進行會話調度,只要及時接收和解析數據就可以了。
對請求應答型和混合型協議,從接口驅動發出請求,經硬件通信端口傳遞給另一端的設備和子系統,到設備和子系統響應回來、經通信端口提交給接口驅動程序,這種方式也不太復雜。接口驅動需要調度會話和發出請求,及時接收和解析應答數據,同時還要管理應答的超時狀態。
實際應用中,來自不同廠家的設備和系統性能會有所不同,不論使用主動傳送還是用請求應答,都會有響應快慢的差別。任何設備都可能隨時要傳輸信息,為避免響應性差的設備對總體數據訪問造成影響,接口驅動應為通信協議處理和應用數據服務提供適度隔離。隔離時,可采用基于數據交換區的前后分兩端結構:后端程序負責與接口管理的配合,支持數據訪問服務;前端程序負責按協議與設備通信,根據設備特性調整交互性能。
接口軟件配置(如圖5所示):針對具體接口的需求,實現接口軟件并非完全依賴接口驅動程序。事實上,接口的許多個性化是通過軟件配置實現的。
圖5 接口軟件配置
(1)調整接口的參數和形式:通過配置可以改變接口參數。通常接口的端口號、傳輸速率、校驗方式等需要靈活配置,使工程設計實施中可隨時優化和調整接口方案,以充分利用接口設備的資源。通過配置甚至可以改變接口形式。之所以能做到這一點,是因為接口驅動以一致的方式使用通信硬件驅動,由配置指定具體使用何種通信硬件驅動。由于有這個能力,同一個協議就既能工作在RS232串口上,也能工作在TCP網絡上,極大提高了協議的利用率。(2)調整協議的參數和模式:通過配置可調整協議的參數和工作模式。可以通過配置改變接口框架對驅動程序的調度,如調高或降低該驅動的處理優先級,改變它在冗余主從仲裁中的權重,啟用或終止某類硬件中斷等;通過配置還可以改變接口協議的交互過程,如禁用對某些類型信息的傳輸,拉長或縮短鏈路故障診斷周期,改變模擬量數據和數字量數據采集頻數的比率,等等。通過這些調整,可以改變接口性能,使之與對端設備和子系統獲得最佳配合。(3)信息含義和點表:完整的接口協議包括信息格式、信息含義和交互過程,其中交互過程和信息格式是在接口驅動程序用編碼方式實現的,但信息含義通常不用編碼來實現。比如說要傳輸哪些模擬量點,這些點的量程限制等,接口驅動程序不把這些信息編到程序代碼中。之所以這樣,也是為了將專用性強的具體信息含義從接口驅動程序中剝離出來,增強接口驅動程序的靈活性,以便適用到更多場合中。
5.4.2 信息集成模式
在企業信息集成時,不同應用系統有不同的結構和規范,這對信息集成有非常大影響。為了能夠既解決業務數據異構性問題、實現信息共享和協同,又不增加集成復雜度,并具備進一步擴展能力,最實用的、也是最常用的做法是基于通用數據庫和數據源級別上進行集成。基于通用數據庫和數據源級別上的集成有三種常用模式:數據復制、數據聯邦和基于接口的數據集成,它們分別表達了對多個異構數據源透明、一致訪問的三種實現方法。三種常用的數據集成模式如圖6所示。
圖6 三種常用的數據集成模式
數據聯邦,是指不同應用共同訪問一個全局虛擬數據庫,通過全局虛擬數據庫管理系統為不同應用提供全局信息服務,實現不同應用和數據源之間的信息共享和數據交換。
數據復制,指通過底層應用數據源之間的一致性復制,實現對基于不同數據的各類應用之間的信息共享和互操作。
基于接口的信息集成,指不同應用系統間利用適配器或接口代理,實現相互調用。適配器或接口代理提供應用編程接口,通過這些開放接口可提取業務信息,供應用系統共享和交換。接口調用方式可以采用同步調用方式,也可以采用基于消息中間件的異步方法來實現。
作者簡介:
魏曉東,1967年畢業于天津大學精儀系。1984~1991年任安徽工業大學自動化系副教授。1991年出版《分散型控制系統》( 上海科技文獻出版社) 。2000~2012年任北京和利時系統工程公司副總工、事業部總設計師,北京地鐵13號線、深圳地鐵一期工程、廣州地鐵3號線綜合監控系統工程技術總負責人。2006、2010年出版《城市軌道交通自動化系統與技術》初版與第二版(電子工業出版社);2010年主編國家標準《城市軌道交通綜合監控系統工程設計規范》(GB50636-2010)《城市軌道交通綜合監控系統施工與質量驗收規范》(GB/T50732-2011);2010年主編關于兩化融合的國家標準《工業企業信息化集成系統規范》(GB/T26335-2010)。2013年至今任清華同方數字城市工程中心技術專家,住建部城市軌道交通標注技術網Eu委員會委員,全國自動化系統與集成標準技術委員會委員。
摘自《自動化博覽》2017年9月刊