文樹林(中核運行管理有限公司,浙江嘉興 314300)
CP600核電機組模擬機接口系統選型和通信程序設計
文樹林
(中核運行管理有限公司,浙江嘉興314300)
接口系統是模擬機仿真服務器和盤臺設備之間進行通信的紐帶。接口系統的選擇和通訊程序的設計關系到整個模擬機系統的性能。研華ADAM-5000/TCP接口系統和與之對應的通訊程序,在中核運行管理有限公司CP600機組模擬機上已經得成功應用。其接口系統的選型和通信程序的功能、流程、技術特點等都對今后核電廠模擬機建造具有參考價值。
接口系統通訊程序數據傳輸
模擬機接口系統是模擬機仿真服務器和模擬機盤臺設備之間進行通信的紐帶。其主要功能是將模擬機盤臺設備的操作信號(比如開關、按鈕動作、控制器調節信號等)及時傳送到模擬機仿真服務器,同時將經過仿真服務器運算處理后的信息發送到盤臺設備進行顯示(比如報警、指示燈的閃爍,指示儀表、記錄儀的顯示等等),即在整個模擬機中起著上通下達的作用。接口系統的選擇和通訊程序的設計關系到整個模擬機系統的性能。
中核運行管理有限公司CP600機組現有兩臺模擬機。因培養操縱員的需要,于2006年決定建第二臺CP600機組的模擬機。第二臺模擬機的建造方案是對第一臺模擬機進行復制和改進。原1#模擬機接口系統采用的美國RTP公司的EIOBC接口系統,由于該接口系統已經停產,所以需要對接口系統進行重新選擇和設計。
核電站的計算機仿真涉及動力系統、控制系統、各大輔助系統等,與一般計算機控制系統相比,其I/O點多、數據通信量特別大,系統仿真涉及靜態和動態、正常態和故障態全過程。所以能否保證仿真機的實時性與可靠性成為選用何種接口設備的重要參考依據。經深入調研、綜合分析及實踐驗證,我們對新的模擬機接口系統有著如下要求:
響應速度快、采集精度高——模擬機在事故工況下需要演繹一些瞬間的物理過程,要求I/O接口系統可獲得大量的動態信息,所以接口系統采樣速度的快慢與精度的高低是模擬機實時性與逼真度的重要保證。
結構緊湊、維修方便——由于模擬機主服務器位于仿真機房,而開關按鈕和儀表設備分散在各功能盤,所以出于接線靈活、維修方便等原因考慮,所有的I/O信號必須通過放置于就地控制盤柜的采集板卡采集。所以,新的接口系統采集模塊體積不能過大,以安裝維修方便為原則。

表1 接口系統設備名稱和功能

圖1 共享內存區盤臺信息的存放形式
設備造價低、維護成本低——在保證設備性能的前提下,以設備造價低為原則。
當時我們通過市場調查,初步選擇了三家公司的接口系統產品:美國RTP公司EIOBC的升級產品,臺灣研華公司ADAM-5000/ TCP接口系統,和亞仿公司的耐博接口系統。模擬機維護人員對這三家產品進行了深入的測試研究和對比,研華ADAM-5000/TCP接口系統有如下優勢:
研華公司是專業生產接口系統的公司,科技實力雄厚,接口系統廣泛應用于各種大型工業和火電廠的仿真產品上,性能能夠滿足核電廠模擬機的要求。
研華接口系統采用分布式結構,硬件還帶有自診斷功能,使用和維修方便。

圖2 主程序流程
價格相對比較實惠,維護成本較低,研華公司在杭州和上海都設有代理點,購買產品和備品備件比較方便。
最終我們選擇了研華ADAM-5000/TCP接口系統作為2#模擬機的接口系統。
國產接口系統在2號模擬機上成功應用后,1號模擬機在后來的改造過程中也換成了研華ADAM-5000/TCP接口系統。
模擬機接口系統采用研華ADAM-5000/TCP系列產品,接口系統所包含的設備型號和功能見表1。接口系統詳細的配置圖見圖6,系統共由10個UNO-2668及各自連接的若干個ADAM-5000/ TCP組成。數據輸入/輸出模塊安裝在ADAM-5000/TCP底座上,ADAM-5000/TCP通過以太網與UNO-2668進行實時通信,UNO-2668連接到仿真服務器,構成服務器-UNO2668-ADAM-5000/ TCP的三層網絡結構(表1)。
除了硬件的組合之外,還要開發與之相適應的通信軟件,這樣才能使接口系統良好地運行起來。通信軟件的軟件的質量和功能直接關系到規模如此龐大的ADAM-5000/TCP的系統能否穩定運行以及維護是否方便等等。為此,模擬機維護人員對這套接口系統進行了細致深入的研究,在研華技術工程師的支持下,開發了用于模擬機的接口通信軟件,該通信軟件實際運行良好。
按照通信程序的工作過程,接口通信的基本功能可以劃分為兩個方面:第一是建立TCP連接;第二是連接建立好之后進行數據通信。

圖3 與服務器進行通信的線程流程圖

圖4 與ADAM-5000/TCP的通信線程流程
第一步建立連接,包括與服務器建立連接和與各ADAM5000 TCP建立連接。與服務器建立連接只要具備一定socket通信編程方面的知識很快就能順利完成;與ADAM5000TCP建立連接則按照產品供貨商都提供的產品開發說明書的指導,也能很順利地實現。
第二步連接建立后的數據接收和發送即數據傳輸,這是通信程序的關鍵,數據的傳輸又包括兩個方面,UNO與服務器的數據傳輸以及UNO與ADAM5000TCP的數據傳輸。這兩方面的數據傳輸關系到如何保證服務器上的數據準確地對應到盤臺上面的設備上(接口模塊相應的端口上),因此,確定數據傳輸格式是開發接口通信程序之前要解決的首要問題。而要確定數據傳輸格式,則先要理解對模擬機上的數據映射原理。在此我們不妨簡要介紹一下接口模擬機上的數據映射原理。在仿真服務器上開辟有一個共享數據區,該數據區中存放有整個接口系統的所有AI/AO/DI/DO模塊的數據,其數據存放方式見圖1;圖中,iox_ptr地址指針指向共享內存區起始地址,start[DO]、 start[AO]、 start[DI]、 start[AI]為相應信息相對于iox_ptr的偏移量。DO、DI板為16位,在內存中每個模塊(板卡)占用兩個字節;AO、AI每個端口占用兩個字節。
以上是整套模擬機接口系統所有的接口模塊數據在服務器的共享內存中的存放方式,要想獲得某一條鏈路的某種類型的接口模塊數據,則首先要統計出該條鏈路之前所有鏈路上的這種模塊的數量,然后根據這個數量計算出本條鏈路上模塊數據的偏移地址。比如說,我們想獲得第三條鏈路上的所有DO數據(假定為5個DO模塊),則首先要統計出前兩條鏈路的上的DO模塊數(假定為20),那么第三條鏈路的DO數據的開始地址為:iox_ptr + start[DO]+20× 2,從該地址開始的10個字節(5個DO模塊共占10個字節)為第三條鏈路的所有DO模塊數據。AO/DI/AI模塊數據依此類推。由上可見,UNO從服務器上獲取數據以整條鏈路的數據為單位、且同種模塊的類型數據放在一起進行傳輸較為方便。所以仿真服務器和UNO之間的數據通信方式確定為UNO接收到的數據:DO+AO;UNO發送出去的數據為DI+AI。在此要特別說明的是,仿真服務器和UNO上都有相同的整條鏈路的模塊配置信息,所以傳輸的字節數可通過配置信息計算出來。

圖5 通信程序的數據流示意

圖6 接口系統配置圖
以整條鏈路為單位接收到數據后,還要對數據進行分解,對應到相應的ADAM5000TCP上。程序中的處理方法為UNO從仿真服務器上接收到DO/AO數據后,存放在指定的內存區,然后,各個ADAM5000TCP對應的通信線程計算各自模塊的偏移地址,從內存區的特定位置讀取所需數據進行發送,這個過程只需細心防止偏移地址計算錯誤,在此不再贅述。DI/AI的過程則剛好相反,從各個ADAM5000TCP上采集到數據后,計算好偏移量之后存放到指定內存區,最后整條鏈路的數據一起發送到仿真服務器。
6.1程序基本流程
程序的流程分三部分,主程序流程、與服務器進行通信的線程流程、與ADAM-5000/TCP進行通信的線程流程。
主程序流程見圖2,主程序的主要功能包括:
(1)根據配置信息完成程序所必須的數據初始化;
(2)進行內存分配,建立公共數據區;
(3)創建并啟動與服務器進行通信的線程;
(4)創建并啟動與ADAM-5000/TCP進行通信的線程。
與服務器進行通信的線程流程見圖3,該線程的主要功能是建立與服務器的連接并與服務器進行實時數據交換,從服務器獲取本鏈路內的輸出數據并寫入公共數據區,同時從公共數據區讀取本鏈路內采集到的輸入數據并發送到服務器。
與ADAM-5000/TCP進行通信的線程流程見圖4,這類線程的個數為UNO2668實際連接的ADAM-5000/TCP個數,即每個ADAM-5000/TCP都對應一個線程進行通信。該線程的主要功能是建立與ADAM-5000/TCP的連接,從公共數據區讀取和寫入數據,向ADAM-5000/TCP發送命令字和輸出數據同時接收ADAM-5000/TCP的響應數據。
程序的數據流見圖5。與服務器進行通信的線程將輸出數據寫入共享數據區的輸出部分供各個ADAM-5000/TCP通信線程讀取。輸入數據則相反。
6.2程序主要技術說明
對于每一個ADAM-5000/TCP通信都對應一個線程,各ADAM-5000/TCP通信線程以及與服務器的通信線程邏輯上都是并行運行的,盡可能地利用了CPU的能力,運行效率高。
在與ADAM-5000/TCP的通信線程內采用命令字方式編程而不是調用動態鏈接庫的方式,提高了程序的執行速度,因為如果采用調用動態鏈接庫方式則程序運行時存在函數調用的開銷。
每個ADAM-5000/TCP上安裝的卡件類型和數目都各不相同,在最初構建程序結構時,對每個ADAM-5000/TCP根據其上安裝的卡件類型和數量編寫特定的發送和接收的指令,這樣編程每個線程內的程序代碼都不同,編程工作量很大,而且后期的維護工作也很困難。針對該問題,筆者經過深入研究,找到一種解決辦法,該方法通過讀取配置信息來自動判斷各5000TCP底座上的采集卡件類型和數量以及卡件的安裝位置,各ADAM-5000/TCP的通信線程根據獲取的信息來發送和接收數據,這樣程序實現了高度的自動化,而且所有的通信線程的程序代碼是完全一樣的,這樣即大大減少了開發工作量,同時以后的維護工作也變得相對簡單,當底座上所安裝的卡件類型或數量、位置等發生變更時只需更改相應的配置信息即可。
通信程序要求各ADAM5000TCP底座上的板卡必須按照AI、AO、DI、DO模塊的順序排列,而且要求連續排列(卡與卡之間不能有空槽,最后一塊卡后可以有空槽),這樣設計一方面簡化了程序的開發,另一方面規范了硬件安裝,便于維護。
為保證實時性,在通信程序中進行了數據發送和接收的時間測試,測試結果表明硬件性能能滿足要求。
研華ADAM-5000/TCP接口系統和通訊程序已成功應用在中核運行管理有限公司CP600機組的兩臺模擬機上。對今后核電廠模擬機建造具有參考價值。