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