摘要:為了滿足污水處理自動(dòng)化控制的水處需要,在深入研究了污水處理自動(dòng)化控制特點(diǎn)的理中基礎(chǔ)上,應(yīng)用工業(yè)組態(tài)軟件WinCC開發(fā)了相應(yīng)的水處控制程序。并且討論了針對(duì)于污水處理的理中軟、硬件構(gòu)成,水處以及開發(fā)過(guò)程中遇到的理中問(wèn)題和解決方法。
關(guān)鍵詞:集散控制系統(tǒng) 可編程控制器 WinCC STEP7
WinCC of siemens Application in the dealing with sewage
tract: In order to meet the requisitions that control the dealing with sewage automatically. Study hard with the characteristic and the specialties of the process. Develop the program which correspond to the process by using the WinCC.Also discuss the constitution of the hardware and the software.The problem we encountered in programming and the method of resolving is discoursed .
Kaywords: DCS;PLC; WinCC;STEP7;
1、水處 引言
改革開發(fā)以來(lái),理中我國(guó)工業(yè)企業(yè)日新月異,水處規(guī)模日益壯大,理中先進(jìn)設(shè)備廣泛應(yīng)用,水處工藝科技含量越來(lái)越高。理中在生產(chǎn)中,水處自動(dòng)化技術(shù)已經(jīng)普及到各個(gè)領(lǐng)域、理中各個(gè)車間,水處這充分說(shuō)明我國(guó)民族工業(yè)的逐漸強(qiáng)大。但是相比之下,在許多企業(yè)的處理中自動(dòng)化程度不高,采用的軟硬件落后,甚至有的控制點(diǎn)還依賴于人工操作,無(wú)形中制約了企業(yè)技術(shù)先進(jìn)化的發(fā)展。為此我們結(jié)合某一個(gè)排污量大(平均流量80T/H)、成分復(fù)雜(包括面漆水、電泳水、車身濃脫脂水等)、控制設(shè)備多(需要600多控制點(diǎn))的汽車制造廠在處理改造項(xiàng)目中,采用20世紀(jì)90年代國(guó)際上先進(jìn)的工控組態(tài)軟件WinCC,開發(fā)了相應(yīng)的處理的控制程序。在一年多時(shí)間的實(shí)際運(yùn)行中,各項(xiàng)工藝指標(biāo)都達(dá)到了預(yù)期的效果,用戶十分滿意,從而告別了長(zhǎng)期排放不達(dá)標(biāo)的被動(dòng)局面。
2、 WinCC軟件的簡(jiǎn)介
工控組態(tài)軟件WinCC是一個(gè)集成的人機(jī)界面(HMI)系統(tǒng)和監(jiān)控管理系統(tǒng),它是西門子公司在過(guò)程自動(dòng)化領(lǐng)域中的先進(jìn)技術(shù)和微軟公司強(qiáng)大軟件功能的產(chǎn)物,WinCC是視窗控制中心(Windows Control Center)的簡(jiǎn)稱。它包括圖形設(shè)計(jì)器、報(bào)警記錄、標(biāo)記記錄、報(bào)告設(shè)計(jì)器、全局腳本、控制中心、用戶管理等功能,使其具有高性能的過(guò)程耦合、快速的畫面更新、以及可靠的數(shù)據(jù)管理[1~2]。
3、 系統(tǒng)構(gòu)成
對(duì)于一個(gè)普通的水處理項(xiàng)目就其工程量而言是巨大的,尤其是一些大型項(xiàng)目,所以開發(fā)控制程序、調(diào)試的時(shí)間不能不成為必須考慮的因素。但是出于可靠性的考慮,將控制系統(tǒng)的功能分離是必須的,即:下位機(jī)執(zhí)行保護(hù)、控制和數(shù)據(jù)的采集,脫離上位機(jī)也能獨(dú)立對(duì)系統(tǒng)進(jìn)行控制,上位機(jī)執(zhí)行顯示、操作、報(bào)警、儲(chǔ)存等。那么帶來(lái)的問(wèn)題是上下位機(jī)的通訊又成為費(fèi)時(shí)費(fèi)力的工作。
WinCC能和所有主要廠商的PLC進(jìn)行通訊,如:AB、GE、Omron等。如果與西門子的PLC系列及STEP 7軟件合用,將大幅降低工程時(shí)間,因?yàn)镾TEP 7中定義的變量可以在WinCC中直接使用。
由于工業(yè)的水質(zhì)成分復(fù)雜,有害物含量高,所以處理工藝的復(fù)雜(包括調(diào)節(jié)、初沉、混凝、化學(xué)沉淀、生化處理等),要求控制的部件多,相互關(guān)聯(lián)的控制回路也比較多。其工藝流程簡(jiǎn)圖如圖1所示。
圖1、車身廠處理工藝流程簡(jiǎn)圖
系統(tǒng)上位機(jī)采用工業(yè)用計(jì)算機(jī),配置為PⅢ800、256M內(nèi)存、40G硬盤、21顯示器,運(yùn)行中文Windows 2000操作系統(tǒng),組態(tài)軟件為WinCC5.0SP2中文版,通過(guò)CP5611通訊卡(MPI/PROFIBUS)與下位機(jī)通訊;下位機(jī)采用S7-300系列中的CPU318-2DP,共21塊I/O卡。由于整個(gè)處理工藝的占地面積比較大,控制回路多,為了避免鋪設(shè)大量的控制線路,所以采用西門子的ET200模塊將一部分I/O放置在距離中心控制室較遠(yuǎn)而控制點(diǎn)又比較集中的地方,利用西門子的PROFIBUS-DP通訊協(xié)議形成遠(yuǎn)程I/O。控制系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2、車身廠處理DCS控制系統(tǒng)結(jié)構(gòu)
4、 WinCC的組態(tài)實(shí)現(xiàn)
4.1 主控界面的組態(tài)
本系統(tǒng)的設(shè)備比較多,要將所有的設(shè)備都顯示在一張畫面里是不可能的,所以將設(shè)備按照處理工藝的功能步驟分級(jí)在多張畫面內(nèi),分為電泳線、前處理線、生化線、加藥線等,之間的切換使用按鈕的鼠標(biāo)動(dòng)作來(lái)實(shí)現(xiàn)。這對(duì)于用WinCC現(xiàn)成的鼠標(biāo)動(dòng)作來(lái)實(shí)現(xiàn)是很簡(jiǎn)單的,但是不是要在每張圖上都使用相同數(shù)量且位置排列順序一致的按鈕呢?(出于對(duì)操作的一致性考慮,不能讓操作人員在不同的圖上,不同的位置找想要操作的按鈕)這個(gè)問(wèn)題的解決我們使用WinCC的腳本編程,在按鈕動(dòng)作中調(diào)用它的內(nèi)部函數(shù)來(lái)實(shí)現(xiàn)。首先,組態(tài)一幅背景畫面,其中包括要顯示的靜態(tài)文本、OLE(例如,時(shí)鐘)、所有的圖形切換按鈕及推出關(guān)機(jī)按鈕。第二,在背景畫面中插入智能對(duì)象(Smart Object)中的畫面窗口(Picture Window),并且使其的尺寸與其分級(jí)畫面相同。第三,在相應(yīng)的切換按鈕的屬性->事件->鼠標(biāo)動(dòng)作中編寫如下C語(yǔ)言腳本代碼:
#include\"apdefap.h\"
void OnClick(char *lpsz PictureName,
char *lpsz ObjectName,char *lpsz PropertyName)
{
SetPictureName(\"背景畫面\", \"畫面窗口\", \"電泳處理線\");
} //\"背景畫面\"即為始終顯示地靜態(tài)背景的屬性名,\"畫面窗口\"即為在背景畫//面中插入地畫面窗口(Picture Window)屬性名,\"電泳處理 線\"即為分級(jí)畫面//的名稱
這樣就能方便快捷地切換畫面。
還有一個(gè)必須始終顯示的是報(bào)警記錄,用畫面顏色閃爍來(lái)提示操作者有故障發(fā)生,可以用同樣的C語(yǔ)言腳本(當(dāng)然不是加在鼠標(biāo)動(dòng)作中)在背景畫面的底部留下一條類似Windows狀態(tài)欄的報(bào)警欄,當(dāng)出現(xiàn)故障報(bào)警的時(shí)候在報(bào)警欄顯示最近一條報(bào)警記錄,操作人員可以利用按鈕切換到主報(bào)警記錄畫面了解故障的完全信息。
4.2 單個(gè)部件的組態(tài)
WinCC在其內(nèi)部的圖庫(kù)里集成很多的圖形對(duì)象,如水箱、電機(jī)、閥門等等,對(duì)于處理用的最多的是水池,攪拌機(jī)等等。為了使組態(tài)畫面貼近實(shí)際,能夠更好的反應(yīng)現(xiàn)場(chǎng)工況,圖庫(kù)里的元素并不能滿足要求。我們可以利用WinCC的畫圖工具自己繪制適應(yīng)實(shí)際的圖形元素,并且使用C腳本使其產(chǎn)生動(dòng)畫效果。如3圖所示。
圖3、組態(tài)部件元素
對(duì)于調(diào)節(jié)池,反應(yīng)池等可以用矩形來(lái)表示,以圖形的填充高度來(lái)示意其液位的高度。這里要注意的是一些數(shù)值地轉(zhuǎn)化,由于一些儀表例如E+H的超聲波液位計(jì),是以4~20毫安的電流信號(hào)進(jìn)入PLC,對(duì)于表的參數(shù)設(shè)定好以后4毫安就對(duì)應(yīng)相應(yīng)池子的液位最低點(diǎn),而20毫安對(duì)應(yīng)于池子的液位最高點(diǎn)。所以在顯示數(shù)字高度的時(shí)候要將PLC相對(duì)4、20毫安的數(shù)值轉(zhuǎn)化為實(shí)際池子的高度范圍例如,0.5~5.5米。但是對(duì)于圖形填充的時(shí)候是按照百分?jǐn)?shù)來(lái)表示的所以還要將PLC數(shù)值轉(zhuǎn)化為0~100%的度量范圍。
攪拌機(jī)的組態(tài)可以使用C腳本使其產(chǎn)生動(dòng)畫,在其運(yùn)行時(shí)產(chǎn)生視覺上的旋轉(zhuǎn)。實(shí)際上攪拌機(jī)的圖形是用兩個(gè)部分橢圓組成的,在橢圓的屬性->幾何->半徑中加入代碼如下:
#include \"apdefap.h\"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static int x=25,y,z;//x為半徑的初始值為25,y為切換變量,z為攪拌機(jī)運(yùn)行狀態(tài)變量
z=GetTagBit(\"202攪拌機(jī)運(yùn)行\(zhòng)"); //取得PLC攪拌機(jī)的運(yùn)行狀態(tài)
if(z!=0)
{
switch(y)
{
case 0:
x=x-4;
if(x<=0)
y=1;
break;
default :
x=x+4;
if(x>=25)
y=0;
break;
}
}
return x;
}
4.3語(yǔ)音報(bào)警的組態(tài)
在工業(yè)現(xiàn)場(chǎng)安全是極其重要的,無(wú)論從那個(gè)角度講我們應(yīng)該利用一切手段減少故障的發(fā)生。在故障已經(jīng)發(fā)生的時(shí)候,應(yīng)該在第一時(shí)間以多種方式通知操作人員有故障發(fā)生。現(xiàn)代微處理計(jì)算機(jī)的處理速度可以完全勝任對(duì)于圖形,語(yǔ)音地同時(shí)處理。所以我們可以利用計(jì)算機(jī)的聲卡和音箱在有故障發(fā)生的時(shí)候產(chǎn)生語(yǔ)言報(bào)警,但是問(wèn)題是WinCC本身并不能產(chǎn)生語(yǔ)音的功能,而且其內(nèi)部的上千個(gè)函數(shù)也沒(méi)有提供處理聲音的函數(shù)。解決這個(gè)問(wèn)題的方法歸功于微軟開發(fā)的WinCC與操作系統(tǒng)地完美結(jié)合,因?yàn)樵赪inCC中可以直接調(diào)用Windows的API函數(shù)。實(shí)現(xiàn)的具體C腳本代碼如下:
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma e(\"Winmm.dll\")
void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay);
#pragma e()
if(GetTagBit(\"112排泥備泵故障\"))
PlaySoundA(\"d:\\\\\\\\winnt\\\\\\\\ma\\\\\\\\Mircosoft Sound.wav\",NULL,8);
return 1020;
}
還有一個(gè)值得主意的問(wèn)題是此段代碼的加入點(diǎn),通過(guò)反復(fù)多次的實(shí)踐得出結(jié)論,即這個(gè)點(diǎn)必須加在始終顯示于屏幕上的任何圖形元素的屬性中,這樣才能達(dá)到語(yǔ)言報(bào)警的預(yù)期效果。