摘要: 國內(nèi)的控制軟件編程編譯工具雖然形式多樣,但普遍存在編譯過程融合兼容性不高、對國產(chǎn)CPU芯片指令集的適配度低等問題,而國產(chǎn)編程編譯軟件則尚未在核工業(yè)領(lǐng)域得到充分驗(yàn)證. 另一方面,為保障我國核工業(yè)的安全,迫切需要發(fā)展國產(chǎn)自主可控的編譯器. 本文對相關(guān)編程編譯軟件的架構(gòu)、編譯過程中間語法結(jié)構(gòu)及國產(chǎn)龍芯芯片的指令集等進(jìn)行了分析,進(jìn)而提出了一種具有用戶接口層、應(yīng)用層、領(lǐng)域?qū)蛹盎A(chǔ)層等4 層跨范式軟件架構(gòu)的編程編譯工具,構(gòu)造了可進(jìn)行核領(lǐng)域編碼規(guī)范檢查的自適應(yīng)中間語法模型,并將其與100 種以上的國產(chǎn)龍芯MIPS芯片指令集進(jìn)行了適配. 最后,本文將該編程編譯工具應(yīng)用于核電DAS 系統(tǒng)進(jìn)行測試驗(yàn)證,結(jié)果表明該工具有較高的編譯效率:工程文件的全編譯時間為毫秒級;模擬量通道信號測量的最大采集精度為0. 326‰,優(yōu)于行業(yè)標(biāo)準(zhǔn)2‰;停堆觸發(fā)響應(yīng)時間的測試結(jié)果不大于70 ms,優(yōu)于核電行業(yè)判定標(biāo)準(zhǔn). 該編程編譯工具實(shí)現(xiàn)了從上層編程軟件到底層硬件芯片的完全自主可控,能夠保障核反應(yīng)堆的安全運(yùn)行.
關(guān)鍵詞: 核工程;編譯器;PLC;國產(chǎn)芯片指令集
中圖分類號: TP314 文獻(xiàn)標(biāo)志碼: A DOI:10. 19907/j. 0490-6756. 240180
1引言
隨著我國工業(yè)化的不斷深入,工業(yè)自動化控制軟件的自主可控問題愈發(fā)凸顯. 在各種工業(yè)控制軟件中,最常用的是PLC,即可編程邏輯控制器.
實(shí)現(xiàn)PLC 自主可控面臨諸多挑戰(zhàn). 在我國的PLC 市場上,外資公司占據(jù)著大約90% 的份額,內(nèi)資公司的市場份額大約僅為10%. 外資公司主要有德國的西門子和倍福,法國的施耐德,日本的三菱和歐姆龍等. 內(nèi)資公司主要有浙江中控、傲拓科技、匯川、和利時、臺達(dá)、信捷等. 在以上內(nèi)資公司中,只有部分推出了全國產(chǎn)化的PLC,如浙江中控、傲拓科技以及和利時等. 雖然國產(chǎn)PLC 在編程軟件、核心芯片和操作系統(tǒng)等方面實(shí)現(xiàn)了自主可控,但其性能與國外PLC 普遍存在較大差距,特別是在編程編譯軟件方面. 此類編程編譯軟件是用戶實(shí)現(xiàn)PLC 邏輯編程功能的基本工具[1].
在工控領(lǐng)域,大部分PLC 產(chǎn)品均遵循IEC61131-3 國際標(biāo)準(zhǔn). 該標(biāo)準(zhǔn)規(guī)定了PLC 軟件中編程語言的語法和語義,并將編程語言分為文本化語言和圖形化語言[2]. 其中,將編程語言轉(zhuǎn)換為機(jī)器碼的編譯器是編程軟件的關(guān)鍵技術(shù)之一.
在國際市場上,目前編譯器技術(shù)雖已非常成熟但存在技術(shù)封鎖. 德國3S 公司研發(fā)的CodeSys可以將不同品牌的PLC 產(chǎn)品進(jìn)行組合配置,統(tǒng)一編程編譯下裝,其編譯器可以適配不同PLC 主控芯片[3]. 德國西門子公司研發(fā)的博途軟件[4]可以對多組織塊系統(tǒng)、多重實(shí)例與函數(shù)塊及多語言混合編程等進(jìn)行統(tǒng)一編譯,適配西門子PLC 所有系列芯片[5].
為了突破國外廠商的技術(shù)封鎖,國內(nèi)廠商主要通過仿制、兼容國外編程編譯工具等方式參與市場競爭. OEM 方式雖然較為簡單,但缺少核心技術(shù). 因自主研發(fā)編譯工具鏈[6,7]需要投入大量人力和物力,目前僅有幾家廠商在推進(jìn),如和利時的AutoThink 基于Windows 平臺自主開發(fā)了編程編譯工具,可以對圖形化硬件組態(tài)和3 種編程語言進(jìn)行編程編譯下裝[8]. 另外,作為NA400 PLC 的編程開發(fā)工具,傲拓科技研發(fā)的NAPro 支持5 種編程語言,可以進(jìn)行軟硬件組態(tài)的編程編譯和調(diào)試[9].為了有效保障我國核工業(yè)領(lǐng)域的安全,全國產(chǎn)化的高性能自主可控核工業(yè)控制編程編譯工具必不可少. 本文分析了國產(chǎn)龍芯處理器的架構(gòu)和指令集,從跨范式編程編譯軟件架構(gòu)設(shè)計(jì)、自適應(yīng)中間語言模型和國產(chǎn)芯片適配及應(yīng)用等維度出發(fā),提出了一種適用于核工業(yè)控制系統(tǒng)的自主可控編程編譯工具. 應(yīng)用于核電DAS 系統(tǒng)的測試驗(yàn)證,結(jié)果表明,該編程編譯工具具有較高編譯效率:工程文件的全編譯時間為毫秒級;測量模擬量通道信號時的最大采集精度為0. 326‰,優(yōu)于行業(yè)標(biāo)準(zhǔn)2‰;測試停堆觸發(fā)響應(yīng)時間的結(jié)果不大于70ms,優(yōu)于核電行業(yè)判定標(biāo)準(zhǔn). 該編程編譯工具實(shí)現(xiàn)了從上層編程軟件到底層硬件芯片的完全自主可控,有望為核反應(yīng)堆的安全運(yùn)行提供保障.
2軟件架構(gòu)
針對核工業(yè)控制軟件的編程語言范式多樣化、類型不統(tǒng)一的實(shí)際需求,本文遵循IEC61131-3標(biāo)準(zhǔn). 為保證核工業(yè)控制系統(tǒng)的可維護(hù)性、擴(kuò)展性和復(fù)用性,同時實(shí)現(xiàn)編程編譯工具對國產(chǎn)芯片處理器的適配,本文提出了如下的4 層跨范式工業(yè)語言編程編譯軟件架構(gòu). 該架構(gòu)主要包括用戶接口層,應(yīng)用層,領(lǐng)域?qū)雍突A(chǔ)層,如圖1 所示.
用戶接口層. 用戶接口層向用戶展示信息以及解釋用戶信息,提供與用戶交互的接口,設(shè)計(jì)有菜單欄、工具欄、編程區(qū)、消息區(qū)和狀態(tài)區(qū).
應(yīng)用層. 應(yīng)用層定義軟件需要完成的所有任務(wù)和功能,對外為用戶接口層提供各種應(yīng)用功能,對內(nèi)調(diào)用領(lǐng)域?qū)油瓿蓸I(yè)務(wù)邏輯,設(shè)計(jì)有項(xiàng)目管理器、跨范式編程語言編輯器、硬件組態(tài)、變量管理器和庫管理器.
領(lǐng)域?qū)? 領(lǐng)域?qū)邮擒浖軜?gòu)的核心,主要負(fù)責(zé)應(yīng)用層功能和編譯鏈接的實(shí)現(xiàn),主要有硬件組態(tài)、變量管理器、庫管理器、跨范式編程語言編輯器、項(xiàng)目管理器、編譯器和鏈接器.
基礎(chǔ)層. 基礎(chǔ)層將領(lǐng)域?qū)拥臄?shù)據(jù)進(jìn)行持久化工作,主要負(fù)責(zé)平臺通信、在線數(shù)據(jù)資源管理和仿真,設(shè)計(jì)有網(wǎng)絡(luò)通信、在線監(jiān)控和仿真等功能.
3自適應(yīng)中間語言模型
編程編譯工具的功能是將編程語言編寫的源程序翻譯成能被控制器識別和運(yùn)行文件[10],其結(jié)構(gòu)主要包括分析部分( 前端)和綜合部分( 后端)[11]. 在傳統(tǒng)編譯中,源程序經(jīng)過前端的詞法分析、語法分析、語義分析等步驟生成一個較為簡單低級或類機(jī)器語言的中間表示形式,此種形式并不滿足核工程控制軟件編譯過程中語言多范式、格式不統(tǒng)一、種類繁多及流程復(fù)雜等需求.
本文建立一種面向核工程一體化控制軟件的自適應(yīng)中間語言模型,該模型可以自適應(yīng)地對多種編程語言編寫的源程序( 如LD、ST、CFC 和SFC 等)進(jìn)行詞法分析、語法分析和語義分析,同時依據(jù)核領(lǐng)域編碼規(guī)范開展靜態(tài)規(guī)范檢查規(guī)則研究,包括命名規(guī)范規(guī)則、類型定義規(guī)則及變量引用規(guī)則等. 特別地,在語法分析部分,該模型可通過分析前端語言尋找前端語法的共同特征,作為中間語言的核心語法,挖掘可互相替代與消除的前端語言元素,進(jìn)而提煉出關(guān)鍵語法,補(bǔ)充到自適應(yīng)中間語言模型中,如圖2 所示,模型的模型元素如圖3所示.
通過以上模型,一條以多范式編程語言實(shí)現(xiàn)的賦值語句,如P2:=P1+50,在本文提出的編程編譯軟件中形成的中間語言模型如圖4 所示.
4 DAS應(yīng)用測試
針對編程編譯工具在核工程領(lǐng)域的應(yīng)用需求,本文將工業(yè)自動化編程軟件中的工程文件編譯產(chǎn)生的中間語言模型與100 種以上的國產(chǎn)龍芯芯片指令集結(jié)合,生成主控模塊能識別運(yùn)行的二進(jìn)制指令文件. 我們將該編程軟件應(yīng)用在核電項(xiàng)目DAS 系統(tǒng)上,對反應(yīng)堆運(yùn)行過程中的流量、功率、溫度及液位等參數(shù)進(jìn)行測量控制,以實(shí)現(xiàn)其自動驅(qū)動和手動復(fù)位功能、顯示報警功能及定期試驗(yàn)等功能,促進(jìn)國產(chǎn)CPU 芯片在核工程領(lǐng)域的規(guī)模化應(yīng)用,確保我國核工程領(lǐng)域的安全.
多樣化驅(qū)動系統(tǒng)(簡稱 DAS 系統(tǒng))的控制流程參見圖5. 一方面,DAS 系統(tǒng)的外部IO 模塊通過0 層傳感器設(shè)備收集核反應(yīng)堆的多種數(shù)據(jù),如堆芯出口鈉溫、功率量程核功率、主容器鈉液位及各回路各環(huán)路流量等,然后用現(xiàn)有模擬數(shù)據(jù)處理算法模塊對這些模擬量進(jìn)行處理,用低通濾波器濾除高頻噪聲信號,再對兩列冗余設(shè)備的堆芯出口鈉溫、功率流量比、主容器鈉液位等參數(shù)做閾值比較,進(jìn)行二取二序列邏輯符合,以預(yù)判反應(yīng)堆風(fēng)險、控制停堆系統(tǒng)實(shí)現(xiàn)停堆操作. 另一方面,利用梯形圖LD、結(jié)構(gòu)性文本 ST、順序功能圖CFC 和連續(xù)功能圖SFC 實(shí)現(xiàn)邏輯控制程序,再經(jīng)過工業(yè)自動化編程編譯工具轉(zhuǎn)化為適用于國產(chǎn)龍芯芯片的二進(jìn)制指令代碼,下裝到國產(chǎn)龍芯CPU 主控模塊中,實(shí)現(xiàn)多樣化驅(qū)動系統(tǒng)的控制業(yè)務(wù).
將編程編譯工具安裝在核電DAS 系統(tǒng)(冗余系統(tǒng),包括A 機(jī)柜和B 機(jī)柜)的工程師站上,使用4種編程語言,通過運(yùn)行具體實(shí)例代碼測試驗(yàn)證編譯工具的編譯能力和系統(tǒng)邏輯功能,表1 是DAS工程參數(shù).
將A 機(jī)柜和B 機(jī)柜的工程文件進(jìn)行全編譯,結(jié)果如圖6 和圖7 所示,其中圖6 是A 機(jī)柜工程的編譯結(jié)果,圖7 是B 機(jī)柜工程的編譯結(jié)果.
從圖6和圖7的編譯結(jié)果可以看出,本文提出的編程編譯工具具有較高編譯效率,兩個機(jī)柜的全編譯時間均為毫秒級. 并且兩個機(jī)柜的工程編譯生成的MIPS 指令文件均可成功下裝到國產(chǎn)龍芯主控模塊中運(yùn)行,實(shí)現(xiàn)數(shù)據(jù)采集、處理、閾值比較、邏輯處理、網(wǎng)絡(luò)通訊及信號輸出等功能.
在測試模擬量通道信號時,我們對4~20 mA范圍內(nèi)的電流信號進(jìn)行選點(diǎn)采集,記錄數(shù)據(jù)采集值,并根據(jù)精度計(jì)算公式計(jì)算出相應(yīng)數(shù)據(jù)精度,結(jié)果如表2 所示. 可以看到,模擬量通道的采集精度最大值為0. 326‰,優(yōu)于行業(yè)標(biāo)準(zhǔn)2‰.
在測試DAS 系統(tǒng)的停堆響應(yīng)時間時,我們在前置條件滿足的情況下改變輸入通道信號值,并記錄停堆驅(qū)動輸出通道的觸發(fā)響應(yīng)時間,結(jié)果如表3 所示. 可以看到,在觸發(fā)自動停堆信號時,DAS系統(tǒng)的緊急停堆響應(yīng)時間均滿足核電廠標(biāo)準(zhǔn).
5結(jié)論
工業(yè)自動化編程軟件編譯工具貫穿核工程控制系統(tǒng)的整個生命周期,具有高可靠性、高穩(wěn)定的特點(diǎn),廣泛應(yīng)用于核電站、核動力裝置和核化工等核工程領(lǐng)域. 本文結(jié)合4層跨范式工業(yè)語言編程編譯軟件架構(gòu)、自適應(yīng)中間語言模型及國產(chǎn)龍芯芯片指令集提出了一種面向核工程一體化控制的編程編譯工具,希望為我國核工程領(lǐng)域的安全做出貢獻(xiàn).