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