聶安興
1 前言
中原大化集團復合肥廠(chǎng)(以下簡(jiǎn)稱(chēng)為復合肥廠(chǎng))配料稱(chēng)重系統是復合肥生產(chǎn)的中心環(huán)節,尿素、磷肥和鉀肥以及粘合劑的比例配比直接影響著(zhù)成品的質(zhì)量和效用。復合肥廠(chǎng)為提高工藝控制水平,精確配方,采用了PLC控制系統。
2 系統結構
復合肥廠(chǎng)控制系統,上位機采用SIEMENS工控機,CPU為P4 1.4G,128MDRAM,20GHD,20’CRT。下位機為一臺S7-400型PLC系統,帶11個(gè)8×13bit模擬量輸入模塊,9個(gè)8×14bit模擬量輸入模塊,6個(gè)32bit24VDC開(kāi)關(guān)量輸入模塊。上位機與下位機通過(guò)MPI電纜連接。
現場(chǎng)的4~20mA和24VDC開(kāi)關(guān)量標準信號進(jìn)入S7-400,上位機通過(guò)MPI/DP通訊口從S7-400獲得數據。
3 組態(tài)軟件
該系統硬件均采用SIEMENS公司的產(chǎn)品,并采用SIEMENS公司的配套開(kāi)發(fā)軟件,上位機用WinCC軟件組態(tài),下位機用STEP 7編程實(shí)現。整個(gè)系統中,下位機實(shí)現保護、控制和數據采集的功能,上位機執行顯示、報警、存儲等功能。
WinCC系統組態(tài)編程中,Tag是核心概念,人們把它理解為一個(gè)外部數據,可以與下位機的一個(gè)內存地址單元同步更新,稱(chēng)為外部Tag;也可以作為WinCC系統組態(tài)編程的一個(gè)全局變量,稱(chēng)為內部Tag(Internal Tag)。因此,上位機與下位機的數據通訊是通過(guò)外部Tag來(lái)實(shí)現的,一個(gè)工藝參數就對應一個(gè)外部Tag,控制系統的大小就決定了外部Tag的多少。WinCC軟件根據外部Tag的最大數量分為128、512等不同版本,以適應不同情況,價(jià)格相差很大。筆者采用的是128Tag版本。
4 應用技巧
WinCC是一套功能非常強大的組態(tài)軟件,但它不可能滿(mǎn)足所有的要求。有些功能可以用編程技巧來(lái)實(shí)現。
4.1 多Tag傳送
當需要的工藝參數超過(guò)WinCC版本限制的Tag數目,可以用嵌入式C語(yǔ)言編程實(shí)現多個(gè)工藝參數打包成一個(gè)Tag傳送。
復合肥廠(chǎng)配料稱(chēng)重系統有146個(gè)參數,超過(guò)了WinCC的128個(gè)Tag的限制,筆者用C語(yǔ)言編程解決了這一問(wèn)題,基本思想就是把多個(gè)參數在下位機內存中連續排列,然后在WinCC中定義一個(gè)Tag,它的長(cháng)度是多個(gè)參數之和,取得這個(gè)Tag后編程將其分成多個(gè)參數。
例如:下位機有兩個(gè)參數LTN44001和LTN44023,都是16位整數,分別存放在DD99.DW146和DD99.DW148。在WinCC中定義一個(gè)外部Tag,命名為PackageTag,類(lèi)型為32位整數,并聯(lián)地址為DD99.DBD146,再定義兩個(gè)內部Tag,名為LTN44001和LTN44023,在 Global Script(全局腳本)中C語(yǔ)言編程如下:
Union
{
Long Dword;
Int Word[2];
}union;
Union.Dword=GetTagDword(“PackageTag”);
SetTagWord(“LTN44001”,Union.Word[0]);
SetTagWord(“LTN44023”,Union.Word[0]);
這樣,兩個(gè)參數LTN44001和LTN44023就通過(guò)一個(gè)Tag傳送上來(lái)了。理論上只要下位機內存足夠,可以傳送任意數量的參數而不受WinCC版本外部Tag數目的限制。
4.2 彈出窗口
在WinCC中的Graphics Designer 不能制作彈出窗口,這一功能可以按下列步驟來(lái)實(shí)現:
第一步:制作好彈出窗口的畫(huà)面。
第二步:在流程圖中準備彈出窗口的位置插入一個(gè)與彈出窗口畫(huà)面同樣大小的 Picture Window。
第三步:將Picture Window的Miscellaneous Picture Name 設為彈出窗口畫(huà)面。將其 Miscellaneous Display屬性與一個(gè)Binary類(lèi)型的InternalTag 相關(guān)聯(lián)。
使這個(gè) Binary Tag置1,彈出窗口;清0,彈出窗口消失。這樣就實(shí)現了彈出窗口的功能。另外,在第二步,可以將Picture Window置于另一層(Layer),使它不至于遮蓋住流程圖。
4.3 自動(dòng)啟動(dòng)
為了實(shí)現WinCC監控系統的自動(dòng)運行,保證安全性,筆者希望上位機一啟動(dòng)就進(jìn)入組態(tài)的工藝畫(huà)面,而這一功能可以按下面的步驟實(shí)現:
第一步:將WinCC軟件的快捷方式放進(jìn)WinNT StartProgram中的Startup菜單。
第二步:進(jìn)入WinCC的Computer Properties設置窗口,點(diǎn)擊Graphies-Runtime菜單條,將Start Picture設為自動(dòng)進(jìn)入的畫(huà)面。
第三步:將WinCC置為Active狀態(tài),然后退出WinCC。
再重新啟動(dòng),就可以自動(dòng)進(jìn)入工藝畫(huà)面。
4.4 禁止Windows系統熱鍵
WinCC是WinNT應用軟件,而WinNT是一個(gè)多任務(wù)操作系統。在WinCC運行過(guò)程中,如果啟動(dòng)其它程序,可能對系統產(chǎn)生不良影響,所以必須禁止WinNT的系統熱鍵,防止發(fā)生這種狀況。
進(jìn)入WinCC的Computer Properties設置窗口,點(diǎn)擊Parameters菜單條,在Disable Keys欄將Ctrl+Alt+Del、Alt+Tab、Ctrl+Esc、Alt+ Esc前的方框打勾,就可以在WinCC中禁止這些熱鍵,再結合前述的自動(dòng)啟動(dòng)的方法,可以保證計算機只能運行WinCC。
5 在WinCC組態(tài)編程中需注意的問(wèn)題
(1) 在工藝畫(huà)面中用I/O Field(域)來(lái)顯示工藝參數,I/O Field與該工藝參數的Tag相關(guān)聯(lián),設置關(guān)聯(lián)屬性時(shí),有一項Update cycle(更新周期)非常關(guān)鍵。WinCC是通過(guò)MPI/DP通訊從下位機取得數據的,如果Update cycle取得過(guò)小,通訊負擔就很重,造成系統整體性能下降。所以,在滿(mǎn)足需要的前提下,可針對不同的工藝參數Tag,設置適當的Update cycle,比如溫度取20秒,壓力取5秒,流量取2秒等,以減輕通訊負荷。
(2) C語(yǔ)言編程時(shí),如用到用戶(hù)編寫(xiě)的函數,那么在調用該函數的程序中必須增加一條語(yǔ)句。
//include “APDEFAP.H”
否則,編譯時(shí)找不到該函數。
6 結語(yǔ)
WinCC軟件是一套功能強大的組態(tài)軟件,能夠用于多種用途的控制系統,同時(shí)提供嵌入式C語(yǔ)言編程,用戶(hù)可以通過(guò)編程實(shí)現特殊的功能。通過(guò)組態(tài)實(shí)踐,可以開(kāi)發(fā)出更為有效、貼近現場(chǎng)工藝、更為人性化的監控系統。