張智慧,楊 利,劉大鵬
(北京廣利核系統工程有限公司,北京 100094)
數字化控制系統DCS是核電廠的“中樞神經”系統,它對確保核電廠的安全、經濟運行起著至關重要的作用,是構成大型核電站的關鍵技術和裝備之一。
在國內首個實現商用的核電站安全級DCS平臺“和睦系統”中,安全控制顯示系統是重要的組成部分之一,主要用于對安全級設備的監控以及對安全設備進行開關控制。儀控工程師使用圖形組態軟件提供的圖形化建模工具進行圖形組態,工具將圖形組態自動生成圖形代碼,代碼最終被下裝到安全控制顯示裝置中,實現用戶組態畫面的顯示。
如何實現圖形組態軟件運行于國產操作系統,并且其生成的圖形代碼滿足核安全級設備顯示要求,無疑是圖形組態軟件所面臨的巨大挑戰。本文提出了一種基于WEB技術的圖形組態軟件實現方案,不僅可以實現圖形組態運行于國產操作系統的目標,同時還可以將圖形組態畫面通過中間轉換過程轉換成可以在核安全級設備運行的C代碼。由于該代碼是明文的,可以通過對該代碼進行安全級V&V來確保生成的圖形代碼的安全性,滿足核安全級DCS要求。
核安全級圖形組態軟件主要功能是為核安全級控制顯示裝置提供組態畫面以及畫面運行邏輯,并將組態畫面編譯成可在核安全級控制顯示裝置上運行的可執行程序,完成用戶圖形組態顯示的功能。圖形組態軟件主要包括兩部分:圖形組態界面部分(簡稱:圖形組態IDE)和圖形組態轉換部分(簡稱:圖形代碼生成器GCG)。
圖形組態IDE主要提供集成化的圖形組態開發環境,用戶根據需要可以通過拖拽方式在該環境中組態需要的頁面。
圖形代碼生成器GCG通過形式化的方法將經IDE組態生成的圖形組態源文件,轉化成繪制圖形的C代碼并調用編譯器編譯成可在目標機器上運行的圖形組態目標文件。代碼轉換過程采取形式化方法開發,可以最大程度保證生成代碼的安全性。
圖形組態軟件整體上要滿足跨平臺運行的要求,就需要圖形組態IDE和圖形代碼生成器GCG都要既能運行在Windows操作系統中,又要可以運行于國產操作系統中。并且圖形代碼生成器作為直接生成可運行于安全控制顯示裝置中的軟件,必須滿足安全性的要求。后面將詳細描述組態軟件是如何實現跨平臺和滿足核安全級要求的。
隨著Web技術的發展,瀏覽器界面已經成為計算機桌面的基本平臺,將瀏覽器技術運用于組態軟件及將瀏覽器界面作為組態軟件的人機界面,可以解決圖形軟件跨平臺運行的難題。該基于Web技術的圖形組態界面既可以運行于Windows操作系統,也可以運行于國產中標麒麟操作系統,滿足跨平臺和國產化的要求。
基于Web技術的組態軟件架構設計如圖2所示。
在B/S模式下采用傳統的三層體系結構來設計組態軟件,并不能直接實現與被控對象進行數據通信,因此基于Web技術的組態軟件采用五層體系結構進行設計,如圖2所示。它是在一般的三層體系結構的基礎上進行了細化,用來實現組態軟件的目的。各層功能如下:

圖2 圖形組態軟件架構設計Fig.2 Graphic configuration software architecture design
1)展現層
它是組態軟件的用戶接口部分,是用戶與組態軟件交互信息的窗口,即人機交互界面。用戶通過該界面可以進行工程畫面組態以及圖元對象進行修改,編譯。

圖1 圖形組態軟件整體流程Fig.1 Graphic configuration software overall process
2)業務層
主要處理組態軟件的事務邏輯,包括圖形對象、圖層渲染、坐標轉換、腳本編輯器、圖符管理,以及基本的IDE框架以及UI組件庫。
3)應用支持層
主要包括異常處理、通信接口以及框架。主要是通過功能層的數據處理請求,調用相關處理程序以實現對數據庫的查詢、增加和刪除等功能。
4)工具鏈層
主要包括該圖形組態軟件用到的常用工具鏈。
5)語言層
主要包括圖形組態軟件用到的開發語言TypeScript。
組態軟件集成開發環境是基于Web的多窗口集成開發環境。集成環境在實現復雜的多文檔、多窗口、停靠、浮動界面等基礎功能外,還為集成其他功能的插件的開發預留足夠的二次開發接口,以實現插件式集成開發環境。
圖形組態邏輯和集成開發IDE分離的實現方案,如圖3所示。

圖3 組態邏輯和IDE框架分離實現方案Fig.3 Configuration logic and IDE framework separation implementation scheme
如圖3所示,集成開發環境本身作為一套通用容器來管理頁面中各類面板和子窗口并提供對應的API和事件,而組態編輯相關邏輯只作為集成開發環境的一個插件而存在。該架構中集成開發環境的代碼支持以插件的形式擴展其他功能。
該設計可以實現同一套軟件可以運行于Windows操作系統中,也可以運行于國產操作系統中,可以實現軟件的跨平臺運行,完全實現軟件的國產化要求。
圖形代碼生成器GCG總體目標是設計實現一個面向圖形組態軟件的安全代碼生成工具,將圖形組態源語言翻譯成符合安全級標準的目標語言,通過編譯器編譯成可在目標機器上運行的可執行程序。圖形代碼生成器全部采用C語言開發,不依賴Windows系統任何庫函數和API,可以運行于國產操作系統中,可以實現軟件的跨平臺運行,完全實現軟件的國產化要求。
圖形代碼生成器GCG實現從源語言SAML(safety graphic markup language) 到 目 標 語 言(FirmC)的自動代碼生成過程。其中,圖形組態源語言SAML(safety graphic markup language) 為 本 公 司 自 定義的一種圖形描述語言。以下是SAML的語法定義如下所示:Program的定義:

生成的目標語言為FirmC,是參考國際標準(IEC60880-2006)以 及MISRA-C:2004選 取 的 一 種兼容于關鍵嵌入式軟件推薦使用的較大的C語言子集[1]。FirmC中包括C語言中大部分的類型和操作,包括基本類型、指示字運算、函數指針、數組類型、指針類型、函數類型、結構體類型,以及C中除非結構化的goto、dowhile、while和switch之外的控制結構[2]。
代碼生成器整體實現方案如圖4所示,由于圖形組態源語言SAML是與C程序差異太大,直接將其翻譯到C,驗證起來會非常困難。為此引入一系列中間語言,即圖4中依次經過了I層,S層和Q層等幾種中間語言的程序形式。這樣步步簡化,降低語義描述和證明的難度。

圖4 GCG轉換過程圖Fig.4 GCG Conversion process diagram
1)從組態圖形源語言到I層語言的轉換過程
這一層的轉換負責圖形源語言,經過讀取用戶圖形組態文件,對圖形組態文件進行詞法分析、語法分析和一些基本的靜態檢查(拼寫錯誤、遺漏數據等)轉換到I層。
2)從I層到S層的預處理過程
這一層的轉換負責精簡輸入語法,將圖元根據用戶組態的順序進行排序,同時消去語法不需要的,例如實例號、外部交互變量等用戶組態信息。
3)從S層到Q層的轉換過程
這一層的轉換負責將圖形組態語言中編輯框圖元轉換為圖形組態語言基本圖形元素線段或者矩形,并將對應基本圖形元素存儲在抽象語法樹節點中。這一層單獨處理編輯框圖元,目的是為了能簡化后續證明。轉換過程分成兩部分,首先分拆編輯框屬性,然后將屬性轉換到抽象語法樹的基本元素節點。
4)從Q層到R層的轉換過程
這一層的轉換負責將圖形組態語言中高級圖元類型趨勢曲線轉換為圖形組態語言基本圖形點類型或者線段類型表示,并將對應基本圖形元素存儲在抽象語法樹節點中。這一層單獨處理趨勢曲線,目的是為了簡化證明。轉換過程分成兩部分,首先根據時間間隔為顆粒度,將曲線邏輯分解為線段類型或者點類型,然后將分解出的類型存儲到抽象語法樹曲線類型所屬的節點。
5)從R層到T層的轉換過程
這一層的轉換將圖形組態語言中高級圖元窗口類型轉換為圖形組態語言基本圖形線段類型和矩形,并將對應基本圖形元素存儲在抽象語法樹節點中。這一層單獨處理窗口類型,目的是為了簡化后續證明。具體轉換過程步驟:將窗口類型分解為矩形類型和線段類型,同時將窗口的各項屬性轉換為結構類型存儲到抽象語法樹。
6)從T層到輕量級C語言過程
本層是轉換的最后一步,將程序由T層轉換為FirmC,將其中圖元部分轉換為輕量級C語言的函數調用方式,將涉及變量的部分按照賦值運算的分類轉換。
形式化開發主要由下面幾部分構成:詞法分析、語法分析、語義分析、翻譯過程[3],如圖5所示。

圖5 形式化開發框架Fig.5 Formal development framework
1)詞法分析
使用正則表達式(Regular expression)來定義構詞規范,正則表達式是一種形式化的字符串描述方法,用很少的代碼就可以描述需要用到的字符串格式,示例如下:

可以利用開源工具Flex生成SAML語言的詞法分析程序,以識別符合上述詞法規則的SAML程序。
2)語法分析
語法分析是對SAML圖形原文件的第二次重組,SAML圖形原文件是有序的字符串,詞法分析是第一次重組,即將有序的字符串轉換成單詞序列;而語法分析則是在第一次重組的基礎上將單詞序列轉換為對應的語句,并生成抽象語法樹AST,它使用的是上下文無關文法的“巴科斯范式”形式規則。巴科斯范式是一種用形式化符號精確描述程序設計語言的語法的一種形式系統[4]。
語法分析的示例如下:

可以利用開源工具Bison生成SAML語言的語法分析器,以識別符合上述語法規則的SAML程序。
3)語義分析
語義分析的輸入是由語法分析器生成的抽象語法樹AST,通過語法樹構建符號表,然后結合符號表對語法樹進行具體的語義分析,語義分析的過程包括下面幾大方面:
◇域名分析
◇類型分析
◇因果分析
◇初始化分析
整個語法樹采用前序遍歷方式,在使用前序遍歷過程中遍歷到樹中的某些關鍵節點時,對這些關鍵節點的子節點采用后續遍歷方式。語義檢查按照一定的優先級順序,從域名分析到因果分析,再到類型分析,最后是初始化分析。某個節點檢查出錯誤并不影響其兄弟節點和其他節點的檢查。
4)翻譯過程
經過詞法分析、語法分析和語義分析,如果沒有發現相應的錯誤,即可以進行翻譯處理。翻譯處理過程主要包括預處理、拓撲排序、高階消去等步驟,最后生成FirmC形式的程序。
針對圖形組態軟件既要滿足國產化問題,又要滿足生成代碼的可靠性和安全性問題。本文通過對DCS圖形組態軟件進行研究和分析,提出了一種采用Web技術的能生成滿足核安全級設備應用的圖形代碼的組態軟件實現方法,通過該方法既能解決運行于國產操作系統又具備傳統DCS桌面軟件安全性要求,同時可生成滿足核安全級設備應用的圖形顯示代碼,該技術還可應用于航空、航天、高鐵等高安全領域,應用前景非常廣闊。