MACSVDCS翻譯型仿真軟件的開(kāi)發(fā)
1虛擬DCS
虛擬DCS將DCS的組態(tài)數(shù)據(jù)直接輸入仿真機(jī)或者轉(zhuǎn)換至仿真機(jī)能夠識(shí)別的格式,使其能夠模擬DCS分散處理單元(DPU)的計(jì)算功能.
翻譯型仿真機(jī)通過(guò)編程實(shí)現(xiàn)DCS到仿真平臺(tái)的自動(dòng)轉(zhuǎn)換,使仿真機(jī)脫離DCS的軟、硬件系統(tǒng),在通用計(jì)算機(jī)環(huán)境下再現(xiàn)DCS的邏輯和畫(huà)面組態(tài),包括邏輯組態(tài)和操作畫(huà)面的轉(zhuǎn)換.
2邏輯組態(tài)的轉(zhuǎn)換
DCOSE仿真支撐平臺(tái)采用MicrosoftVisio作為建模平臺(tái),因此該轉(zhuǎn)換過(guò)程主要將DCS的邏輯組態(tài)移植到Visio上,生成相應(yīng)的虛擬DPU。轉(zhuǎn)換分為功能塊模具的整理、控制算法的實(shí)現(xiàn)、組態(tài)文件的翻譯和虛DPU的加載運(yùn)行4個(gè)部分。
2.1功能塊模具的整理
通常,DCS的邏輯組態(tài)以控制算法模塊為zui小組態(tài)單元,為了在Visio上重現(xiàn)與DCS組態(tài)基本一致的控制邏輯,采用的模塊必須與DCS模塊具有*一致的外部特征,包括端口名稱(chēng)、數(shù)量、各參數(shù)默認(rèn)值等。依據(jù)基本算法模塊說(shuō)明整理、生成固定格式的算法資源XLML文件(圖1),并通過(guò)DCOSE模塊轉(zhuǎn)換工具轉(zhuǎn)為Visio模具。該文件定義了各模塊端口及系數(shù)的名稱(chēng)、類(lèi)型、默認(rèn)值等,并提供端口與仿真平臺(tái)數(shù)據(jù)類(lèi)型的綁定信息,以備控制算法使用。
2.2控制算法的實(shí)現(xiàn)
控制算法的實(shí)現(xiàn)主要通過(guò)對(duì)功能塊說(shuō)明文檔的研究,根據(jù)產(chǎn)生的XML文件,使用MicrosoftVisualC++編寫(xiě)相應(yīng)的代碼,實(shí)現(xiàn)各功能塊的功能,并編譯生成算法動(dòng)態(tài)鏈接庫(kù)DLL文件,供仿真平臺(tái)調(diào)用。
2.3組態(tài)文件的翻譯
MACSVDCS采用CoDeSys環(huán)境進(jìn)行組態(tài),通過(guò)組態(tài)環(huán)境從DPU中導(dǎo)出,成為獨(dú)立文本格式的EXP文件。翻譯程序以EXP文本文件為數(shù)據(jù)源,讀取各功能塊的名稱(chēng)、類(lèi)型、位置、調(diào)用順序、輸人輸出的連接關(guān)系、系數(shù)的默認(rèn)值等信息,并將讀取的信息分類(lèi)后通過(guò)VisioSDK自動(dòng)生成相應(yīng)的Visio文件,從而形成與DCS邏輯組態(tài)*一致的邏輯關(guān)系。在此過(guò)程中,根據(jù)源文件中給出的標(biāo)簽名.將所有模塊所需的數(shù)據(jù)點(diǎn)添加至DCOSE數(shù)據(jù)庫(kù)中,作為仿真運(yùn)行實(shí)時(shí)數(shù)據(jù)庫(kù)的數(shù)據(jù)源。
MACSVDCS允許組合模塊(將幾個(gè)模塊連接成組)構(gòu)成功能更加復(fù)雜的自定義算法模塊,即宏模塊。對(duì)于宏的處理,以往通過(guò)對(duì)宏內(nèi)部的邏輯運(yùn)行機(jī)制的理解,采用手工方法構(gòu)建相應(yīng)的基本模塊來(lái)實(shí)現(xiàn)算法。此種方式一旦宏內(nèi)部的邏輯發(fā)生改變,必須重新封裝相應(yīng)的模塊并更新算法。
在翻譯程序中,實(shí)現(xiàn)了對(duì)宏模塊的自動(dòng)轉(zhuǎn)換,即在翻譯過(guò)程中根據(jù)源文件中宏模塊實(shí)例的信息,將該宏模塊內(nèi)部所有的模塊統(tǒng)一實(shí)例化,并在zui終的調(diào)用序列中將該宏模塊所對(duì)應(yīng)的邏輯替換至其所在的邏輯頁(yè)面,以實(shí)現(xiàn)宏模塊的運(yùn)算功能。
2.4虛擬DPU的加載運(yùn)行
通過(guò)在周期內(nèi)順序調(diào)用一系列算法模塊實(shí)現(xiàn)MACSVDCS的虛擬DPU運(yùn)行(圖2)。使用DCOSE仿真平臺(tái)提供的自動(dòng)化建模輔助工具(Cambench),從轉(zhuǎn)換的VSD文件中提取相關(guān)模塊信息,建立可由DCOSE加載運(yùn)行算法調(diào)用的序列文件(RTE)。該文件按照VSD內(nèi)的模塊順序儲(chǔ)存相應(yīng)的算法調(diào)用入口列表,并依次存儲(chǔ)各算法所調(diào)用的參數(shù)(實(shí)時(shí)數(shù)據(jù)庫(kù)中對(duì)應(yīng)數(shù)據(jù)點(diǎn)的偏移量)列表。RTE文件可在教練員站直接加載并運(yùn)行,DCOSE提供了線(xiàn)程和進(jìn)程2種RTE文件的執(zhí)行模式。采用線(xiàn)程模式運(yùn)行的虛擬DPU將由仿真平臺(tái)實(shí)時(shí)引擎(RTSrv)統(tǒng)一調(diào)配和管理;采用進(jìn)程模式運(yùn)行的虛擬DPU各自擁有獨(dú)立的進(jìn)程,互不干擾。
通常,虛擬DCS運(yùn)行需要在同一個(gè)周期內(nèi)完成所有虛擬DPU算法的執(zhí)行,因此運(yùn)行虛擬DPU的主機(jī)應(yīng)具有主頻為2.8GHz以上的Pentium處理器和容量為2G以上的內(nèi)存。
3邏輯畫(huà)面的轉(zhuǎn)換
為了取得與MACSVDCS—致的操作畫(huà)面,將各種操作畫(huà)面圖形文件轉(zhuǎn)換生成SVG圖形文件,并由擴(kuò)展SVG圖元屬性描述,其部分屬性有visible(通過(guò)變量控制圖元的顯示及隱藏)、dynamic-fill(動(dòng)態(tài)填充,通過(guò)變量控制圖元填充顏色的變化)、dynamic-fill-value(動(dòng)態(tài)填充的1種或多種顏色,由動(dòng)態(tài)填充的函數(shù)值選取顏色)、text-value(動(dòng)態(tài)文本顯示,對(duì)應(yīng)于文字動(dòng)態(tài)特性,將文字轉(zhuǎn)換為實(shí)時(shí)數(shù)據(jù)庫(kù)點(diǎn)值或時(shí)間)、text-value-format(動(dòng)態(tài)文本顯示格式)。
為了定義數(shù)據(jù)源,同時(shí)自定義了variable(變量定義)和婦女ction(函數(shù)定義)2個(gè)關(guān)鍵字。variable通過(guò)name、type、size等屬性描述變量的名稱(chēng)、類(lèi)型和長(zhǎng)度;function通過(guò)expression、type等屬性,描述函數(shù)的表達(dá)式和返回值類(lèi)型等。結(jié)合動(dòng)態(tài)屬性和變量、函數(shù)定義就可以描述圖形的動(dòng)態(tài)屬性。
3.1文件解析
不同DCS生成的圖形文件格式會(huì)有較大的差別,但所包含的有效信息基本致,即包含靜態(tài)圖元及其動(dòng)態(tài)特性。MACSVDCS的文件總體結(jié)構(gòu)由文件頭和多個(gè)圖元信息組成,其中圖元信息包括靜態(tài)、動(dòng)態(tài)、交互和圖元個(gè)性等信息。
靜態(tài)圖元由點(diǎn)、直線(xiàn)、圓、橢圓、多邊形、多折線(xiàn)等基本幾何形狀組成,每種幾何形狀附帶顏色、填充等屬性。圖元?jiǎng)討B(tài)特性分為動(dòng)態(tài)和交互2種特性。動(dòng)態(tài)特性包括顯示隱藏、閃爍、縮放、平移、填充、變色、文字等影響圖元的特性;交互特性為推出窗口、Tip顯示、切換底圖、增減值等影響整個(gè)畫(huà)面的特性。
3.2畫(huà)面文件的翻譯
面向?qū)ο髽?gòu)建文件類(lèi)、圖元類(lèi)、動(dòng)態(tài)類(lèi)、交互類(lèi)4個(gè)對(duì)象。其中,文件類(lèi)定義1個(gè)STL容器,以存儲(chǔ)多個(gè)圖元類(lèi)對(duì)象,與此類(lèi)似每個(gè)圖元對(duì)象均有2個(gè)STL容器分別存儲(chǔ)動(dòng)態(tài)類(lèi)和交互類(lèi)對(duì)象。采用多態(tài)共有繼承的編程方法使各圖元、動(dòng)態(tài)和交互特性分別繼承其父類(lèi)。由于圖元、動(dòng)態(tài)和交互特性的基類(lèi)與其派生類(lèi)的關(guān)系大致相同,因此以圖元類(lèi)為例,給出圖元類(lèi)與派生類(lèi)的泛化關(guān)系(圖3)。
將文件的各圖元信息讀人并分類(lèi)后,根據(jù)SVG形文件格式的特點(diǎn),將信息寫(xiě)成相對(duì)應(yīng)的節(jié)點(diǎn)屬性,矩形圖元的靜態(tài)特性主要有左上點(diǎn)及下點(diǎn)坐標(biāo)、封閉區(qū)域特征等。對(duì)于創(chuàng)建矩形對(duì)象(rect)節(jié)點(diǎn)的左上點(diǎn)坐標(biāo)、寬、髙、填充屬性,寬、高屬性可以直接由坐標(biāo)計(jì)算,填充屬性則根據(jù)封閉區(qū)域特征的填充方式及填充顏色等信息確定。
MACSVDCS畫(huà)面對(duì)圖元zui多可有5個(gè)顏色變化,每種顏色變化均由1個(gè)或多個(gè)條件控制。將每種變化的條件糅合成1個(gè)函數(shù)定義,依據(jù)各個(gè)顏色變I優(yōu)先級(jí)的程序函數(shù)式為:
X1、X2的下標(biāo)值越小優(yōu)先級(jí)越高。當(dāng)X1值非0時(shí),函數(shù)值為1;當(dāng)且僅當(dāng)X1為0,即zui高優(yōu)先級(jí)的件條不滿(mǎn)足吋,再考慮X2的顏色變化。
當(dāng)根據(jù)文本文件解析處理組合圖元中的各個(gè)子圖元的動(dòng)態(tài)特性時(shí),子圖元的動(dòng)態(tài)信息有時(shí)會(huì)統(tǒng)一存儲(chǔ)于組合圖元的圖元共性庫(kù)中。為了減少SVG圖形文件的擴(kuò)充屬性,便于二次開(kāi)發(fā),將組合圖元分解成多個(gè)子圖元,子圖元繼承組合圖元的動(dòng)態(tài)特性。處理含有條件屬性的動(dòng)態(tài)特性時(shí)要增加相應(yīng)的函數(shù)定義方法。為了避免函數(shù)重復(fù)定義,首先定義組合圖元的優(yōu)先級(jí)高于各子圖元的優(yōu)先級(jí),再分別處理組合圖元的動(dòng)態(tài)特性,并將處理后的各動(dòng)態(tài)信息分別存人組合類(lèi)庫(kù),后在圖元基類(lèi)庫(kù)中定義1個(gè)組合類(lèi)指針(僅對(duì)組合圖元內(nèi)的子圖元有效),當(dāng)圖元的組合指針值非零時(shí)復(fù)制指針的動(dòng)態(tài)信息,并將其添加到子圖元的動(dòng)態(tài)庫(kù)今圖元交互特性處理方法同上。
組合圖元的變色特性較為復(fù)雜,組合圖元通過(guò)各個(gè)子圖元的顏色差異產(chǎn)生立體感。根據(jù)紅、綠、藍(lán)3種色彩的分布,提取變色特性的R、G、B3個(gè)顏色變量,對(duì)各子圖元的本色進(jìn)行處理:顏色變量為0時(shí),濾除本色對(duì)應(yīng)的顏色值;顏色變量為255時(shí),對(duì)本色中相應(yīng)的顏色值不做變換;顏色變量為其它值時(shí),與255相除得到比例值后,對(duì)本色中相應(yīng)的顏色值按比例降低。
3.3操作員站的仿真
將MACSVDCS操作畫(huà)面轉(zhuǎn)換為DCOSE:可處理的動(dòng)態(tài)圖形文件。將仿真平臺(tái)操作員站的圖源路徑設(shè)定為轉(zhuǎn)換后的圖形所在目錄,并首張操作畫(huà)面名稱(chēng),即可自動(dòng)實(shí)現(xiàn)操作員站的仿真。由于翻譯過(guò)程必須建立在原始両面資料完備的基礎(chǔ)上,即虛擬DCS翻譯范圍局限于具有原始文件的DCS操作閫面。對(duì)DCS中無(wú)文件支持的滾動(dòng)報(bào)警、事件順序記錄(SOE)等功能采用DCOSE仿真平臺(tái)提供的對(duì)應(yīng)功能。