張 旭,姚 璋,袁友汶,黃 鵬
(中國核動力研究設計院 核反應堆系統設計技術重點實驗室,成都 610213)
隨著電氣設計行業的發展,計算機軟件在現代電氣產品的設計制造過程中的作用越來越大。計算機輔助設計(Computer Aided Design,CAD)軟件最早應用于機械設計,后逐漸用于電氣設計,取代了電氣手工繪圖。使用計算機軟件輔助設計可提高設計效率,減少重復工作,使得設計更加規范,便于優化設計和設計成果的重復使用。同時,該應用也大幅減輕設計人員的工作負荷,減少人因差錯的數量。傳統的CAD 軟件通過繪制簡單圖形來完成電氣原理設計,未賦予電氣設備電氣屬性,后期在進行圖樣修改、設備命名、線號編制及物料統計時會帶給設計人員大量繁瑣的工作。隨著制造能力的發展和產品設計復雜程度的提高,計算機輔助工程(Computer Aided Engineering,CAE)逐漸取代了傳統的CAD 設計。CAE 軟件可以更好地滿足自動化設計的整體需求,輔助工程項目的整體實施,提供高效的電氣設計與管理。
Eplan 軟件作為較早被引入國內的專業CAE 軟件,在專業設計平臺的標準化工作上體現很好的效果,涵蓋了大量標準的符號庫、部件庫和圖框等,作為基于數據庫的專業電氣設計軟件,對設計數據進行了統一化管理[1]。但是,面對不同使用者在設計過程中的特殊需求,Eplan 在功能上無法給予完全適合的響應,此時可對Eplan 進行二次開發,增加相應合適的功能。輔助設計工具的開發可以極大地便利設計人員,提高設計效率和質量。本文以幾種不同功能需求為例,分別針對自動畫圖、中斷點批量編輯、邏輯仿真交互、快速增加云狀圖標識和標簽標識表自動生成功能,有效地解決了大量重復性、機械性的作業,借助計算機來規避設計人員可能由于疏忽造成的錯誤。
基于DCS 電氣設計人員日常設計過程中的反饋,自動畫圖、中斷點批量編輯、邏輯仿真交互、快速增加云狀圖標識和標簽標識表自動生成等功能,存在較為強烈的開發需求。
對于一些冗余性較強的系統,其電氣圖紙中存在大量重復、相似的線路內容。傳統的畫圖方法可以由設計人員在以其他類似已完成項目的圖紙基礎上進行修改,或手動插入頁宏后進行修改,但這樣工作量較大,設計人員更希望能夠通過自動化的方式,實現格式固定的圖紙的生成。應用二次開發的方式,可以更加高效地進行使用頁宏,實現自動畫圖、快速畫圖的目的[2]。
Eplan 軟件中自帶有表格式編輯的功能,能夠有效地提高設計效率。表格式編輯是Eplan 中針對批量元件的屬性進行修改時提供的快速編輯的功能,使用時可同時選取多個元件,如端子、連接點等在屬性列表中進行修改。表格式編輯與Excel 軟件同時使用,可充分利用Excel 軟件對于表格數據強大的處理能力,將處理好的數據直接粘貼回Eplan 中,實現快速填充。
Eplan 通過中斷點在同一頁面或不同頁面內實現信號的連續,在電氣設計中的應用十分普遍。某些頁面會通過大量中斷點的使用,來避免電氣線路的錯綜交叉。但Eplan對于中斷點沒有提供表格式批量編輯的功能,當涉及到大量中斷點修改時,設計人員的工作會尤為繁瑣,因此設計人員對中斷點進行批量表格式編輯存在迫切的開發需求。
電氣設計圖紙中包括大量硬件元器件搭接的硬邏輯子模塊。Eplan 軟件本身不具備仿真運算功能,這為驗證硬邏輯電路搭接是否正確帶來了困難。對于復雜的硬邏輯功能,設計人員難以在設計過程中及時進行驗證。輔助工具可以提供此方面的功能,通過與其他仿真軟件的耦合來實現快速邏輯仿真的需求。
按照工程設計要求,在進行電氣設計圖紙升版或變更時需要對修改部分用“云狀圖”進行標識。設計人員反映在進行云圖標識時工作量較大,需要根據修改部分選取合適的區域,增加方框后再修改屬性為云狀圖。若能夠開發快速云圖編輯工具高效地對待標識區域進行標記,可有效地減輕設計人員負擔。
在DCS 電氣設計的布置圖中,主要完成機柜及其內部設備的布置,同時完成設備的標簽信息匯總。標簽信息主要對機柜內部需要貼標的機箱、模塊等設備的標簽內容進行詳細說明,用于確認機柜中各設備標簽詳細信息。標簽列表通常包含了標簽信息和設備描述,所有標簽按標簽編碼順序從上到下、從左到右依次排列。傳統的做法由設計人員根據安裝板上布置的設備,按順序手動填寫標簽信息,其步驟較為繁瑣。如能通過輔助工具讀取設備信息后,自動生成標簽匯總表,可以有效提高設計效率。
本文以上述需求為例,開發了一套電氣輔助設計工具集,覆蓋了上述功能需求,體現了Eplan 二次開發技術在電氣設計中的應用。
宏是經常反復使用的部分電路或典型電路方案,是模塊化設計的基礎數據。在設計過程中,可以將經常使用的電路保存為宏,在未來使用時直接插入宏文件。Eplan 中的宏包括符號宏、窗口宏和頁宏,符號宏通常為一個設備,窗口宏可以是一個簡單的電路或一個單線或多線設備,頁宏則包括了一頁或多頁的圖紙。宏的使用將設計模式由傳統的圖形化設計改進為模塊化設計,有效避免了繁重的重復性工作,節約了設計時間。
自動畫圖通過調用頁宏的方式實現,其步驟如圖1 所示,包括:
1)讀取輸入信息,分析得到圖紙的頁數和選用的頁宏種類。
2)調用頁宏,將輸入信息填入頁宏中的對應元件。
3)刪除多余元件,添加缺少的元件。
4)逐頁實現圖紙的繪制。
其中,采用C#語言編寫的插入頁宏的代碼如下:
Insert i = new Insert();

圖1 自動畫圖工具實現流程Fig.1 Implementation process of automatic drawing tool
i.PageMacro(@"C:UsersPublicEPLAN 宏fan.emp",page, pj, true) ;
自動畫圖工具可實現在Eplan 環境下,根據提供的輸入信息自動調用不同類型的頁宏,生成的圖表滿足項目及規范要求,且支持批量處理功能。
本文實現了一種中斷點批量編輯的工具,對同頁面的中斷點進行批量表格式編輯,該工具的開發流程如圖2 所示。
該功能的入口方式采用右鍵點擊菜單的入口方式,借助Form 控件為框架制作人機界面對話框,供用戶操作,如圖3、圖4 所示。
實現流程及主要功能代碼如下:
1)獲取選擇元件集合代碼
SelectionSetss = new SelectionSet();
StorableObject[] SelectedFuns = ss.Selection;
2)篩選中斷點代碼
if (SelectedFuns[i].GetType().Name == "InterruptionPoint"){……}
結合用戶實際使用的情況,用戶要填入Form 上的表格控件中的內容多是由MS Excel 軟件中復制而來的,如果在Form 控件上直接進行Ctrl+V 操作,會被Eplan 軟件誤認為用戶想要復制圖紙的內容,而不是來自Excel 的內容。考慮到Eplan 軟件的上述特性,故不能采用Ctrl+V 的方式粘貼,因而設置“粘貼”按鈕實現粘貼功能。
選擇待粘貼區域的左上角或選擇完整的粘貼區域,再點擊“粘貼”按鈕,此時剪切板上的內容會粘貼到Form 上的表格控件上。用戶點擊“確認”按鈕后,遍歷表格控件的每行,獲取用戶輸入的中斷點信息,并回填Eplan 圖紙中。隨后清空中斷點信息,結束本次操作。

圖2 中斷點批量編輯工具實現流程Fig.2 Breakpoint batch editing tool implementation process

圖3 中斷點批量編輯功能入口Fig.3 Function entry for batch editing of breakpoints
Form 的三列中,“原標識符”不可修改,用于為用戶直觀地對應每個元件。新標識符默認填充原標識符相同的信息,可以修改。連接點描述信息對應中斷點的連接點描述屬性,該屬性也是常用的填充屬性之一。新標識符和連接點描述信息在點擊確認后,會填入Eplan。
借助Simulink 等仿真軟件或自研的仿真邏輯運算程序,可實現邏輯仿真交互功能。為了實現和仿真軟件的對接,應對Eplan 二次開發兩種功能,即導出硬邏輯信息的功能和與仿真程序數據交互的功能。
2.3.1 導出硬邏輯信息的功能
導出信息包括元部件信息、連接線信息,見表1、表2。
2.3.2 與仿真程序交互數據功能
利用進程間通信技術,實現兩個軟件的數據交互。如圖5 所示,采用共享內存的方法,二者共同維護共享內存的數據,實現輸入數據的賦值和輸出數據的讀取。

圖4 中斷點批量編輯界面Fig.4 Batch editing interface of breakpoints

圖5 仿真程序數據交互示意圖Fig.5 Simulation program data interaction diagram
圖6為Eplan 中通過繼電器搭接的邏輯“與”電路,與仿真程序交互后,可在圖中K1、K2 和300UM 元件旁直接看到邏輯運算結果。
本文實現了一種快捷工具可以對圖紙中修改部分進行云狀圖標識,流程圖如圖7 所示。
實現流程及部分代碼如下:
1)獲取選中元件集合
StorableObject[] SelectedFuns = ss.Selection;
2)遍歷各元件位置坐標
foreach (StorableObject f in SelectedFuns){……}
3)按類別獲取元件位置坐標
if (f.GetType().Name == "InterruptionPoint"){
x = ((InterruptionPoint)f).Location.X;

表1 元部件信息表Table 1 Component information table

表2 連線信息表Table 2 Connection information table

圖6 邏輯“與”電路Fig.6 The circuit of logical "and"
y = ((InterruptionPoint)f).Location.Y;
}
else if (f.GetType().Name == "Text"){
x = ((Text)f).Location.X;
y = ((Text)f).Location.Y;
}
else if (f.GetType().Name == "Function"){
x = ((Function)f).Location.X;
y = ((Function)f).Location.Y;
}
4)插入矩形,修改線型
Rectangle rec = new Rectangle();
rec.Create((Page)ss.Document);
Pen pen = new Pen();
pen.ColorId = Color.Id.Green;
pen.StyleId = 41;
rec.Pen = pen;

圖7 快速增加云狀圖工具實現流程Fig.7 Implementation process of rapidly adding cloud graph tool

圖8 標簽標識表自動生成實現流程Fig.8 Implementation process of automatic generation of label identification table

圖9 自動生成的標簽標識表Fig.9 Automatic label generation table
本文實現了一種快捷工具可以自動生成標簽標識表,流程圖如圖8 所示。
獲取布置圖中元件的名稱的代碼如下:
foreach (ArticleReference a in f.ArticleReferences){
string name = (a.IdentifyingName.Contains("-")) ?a.IdentifyingName.Split('-')[1]: a.IdentifyingName;
……}
該工具自動生成的標簽標識表如圖9 所示。
針對電氣設計軟件Eplan 的二次開發可以有效地解決軟件在實際項目中的不足。本文使用C#語言編寫了動態鏈接庫格式的函數庫,通過Eplan 中的API 接口加載運行,設計并實現了幾種輔助設計工具,針對DCS 系統電氣設計中的實際問題而開發,幾種輔助工具的應用均取得了良好的效果。