但斌斌,肖林偉,陳奎生,熊 凌,容芷君
(1.武漢科技大學(xué) 機(jī)械自動(dòng)化學(xué)院,武漢 430081;2.武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,武漢 430081)
鐵水脫硫是煉鋼生產(chǎn)過(guò)程的重要環(huán)節(jié),目前應(yīng)用較多的有機(jī)械攪拌法和噴鎂脫硫法等,其中機(jī)械攪拌法(KR脫硫)具有較容易實(shí)現(xiàn)深脫硫,及設(shè)備費(fèi)用較低、處理能力較強(qiáng)等優(yōu)點(diǎn),目前已廣泛應(yīng)用于各大鋼廠[1~4]。鐵水KR脫硫是一個(gè)復(fù)雜的過(guò)程,人工參與的因素較多,自動(dòng)化程度較低?;诖?,研究自動(dòng)脫硫控制系統(tǒng),實(shí)現(xiàn)脫硫過(guò)程的標(biāo)準(zhǔn)化、自動(dòng)化有著十分重要的意義。
鐵水KR脫硫自動(dòng)控制系統(tǒng),通過(guò)采用西門子PRODAVE MPI/IE V6.0模塊(下文提及Prodave均指此版本),解決了上位機(jī)控制軟件與PLC的通訊問(wèn)題,進(jìn)而實(shí)現(xiàn)了對(duì)整個(gè)脫硫過(guò)程的自動(dòng)控制;上位機(jī)軟件采用高級(jí)語(yǔ)言(c#、c++)編寫,主要用于對(duì)脫硫過(guò)程的監(jiān)控,及實(shí)現(xiàn)報(bào)警提示、報(bào)表輸出等功能;PLC端則負(fù)責(zé)具體動(dòng)作的執(zhí)行、設(shè)備狀態(tài)信息的反饋等。
KR脫硫自動(dòng)控制就是在已知鐵水成分和目標(biāo)硫的要求下,自動(dòng)計(jì)算出需要的脫硫劑量、攪拌時(shí)間及攪拌轉(zhuǎn)速,然后自動(dòng)備料、自動(dòng)下料及自動(dòng)攪拌,在盡可能少的人工干預(yù)下,完成脫硫作業(yè)。脫硫主要設(shè)備如圖1所示。
圖1 脫硫主要設(shè)備示意圖
一個(gè)完整的自動(dòng)脫硫過(guò)程如圖2所示。
圖2 自動(dòng)脫硫流程圖
作為一套完整的自動(dòng)控制系統(tǒng),它不僅要求能對(duì)整個(gè)脫硫作業(yè)進(jìn)行正確的控制,還要求能夠正確處理一些異常情況,如鐵水在攪拌前其前硫已符合目標(biāo)硫要求,則提示操作人員無(wú)需進(jìn)行脫硫作業(yè);同時(shí)還要求能實(shí)時(shí)查看每個(gè)流程對(duì)應(yīng)的設(shè)備狀態(tài)信息,只有在工藝條件(脫硫參數(shù))和設(shè)備條件(設(shè)備狀態(tài))都達(dá)到要求時(shí)才能進(jìn)行自動(dòng)脫硫。在進(jìn)行脫硫作業(yè)過(guò)程中,系統(tǒng)還需實(shí)時(shí)顯示當(dāng)前的一些狀態(tài)數(shù)據(jù),如當(dāng)前實(shí)際攪拌速度等,同時(shí)在操作過(guò)程中和操作結(jié)束后能查看當(dāng)前罐和前一罐鐵水的脫硫信息。系統(tǒng)還需設(shè)定若干范圍值,如攪拌頭最大下降深度等,防止人工誤操作。最后,還需將這些脫硫工藝信息和設(shè)備信息都存入后臺(tái)數(shù)據(jù)庫(kù)。
PRODAVE MPI/IE V6.0模塊是西門子提供的用于PC與西門子PLC通過(guò)工業(yè)以太網(wǎng)通信的軟件工具包,通過(guò)該工具包可以讀取和寫入PLC中的數(shù)據(jù),這為利用高級(jí)語(yǔ)言開(kāi)發(fā)控制系統(tǒng)提供了便利[5,6]。
1)設(shè)置PG/PC接口
圖3 設(shè)置PG/PC接口
打開(kāi)控制面板,雙擊“設(shè)置PG/PC接口”圖標(biāo),彈出如圖3所示界面,在上述界面中選擇TCP/IP對(duì)應(yīng)的網(wǎng)卡,然后點(diǎn)擊確定按鈕。
2)編碼實(shí)現(xiàn)[5]
unsigned short ConNr = 0;//設(shè)置連接號(hào),不同設(shè)備連接至同一PLC時(shí)需設(shè)置不同連接號(hào)
char AccessPoint[] = {"S7ONLINE"}; //連接參數(shù)中的一個(gè),通過(guò)以太網(wǎng)連接此參數(shù)不需更改
CON_TABLE_TYPE ConTable[MAX_CONNECTION+1] = {0};
CON_TABLE_TYPE * pConTable = ConTable;
unsigned short ConTableLen = sizeof(ConTable);
// 開(kāi)始設(shè)置連接到的PLC的IP,本機(jī)必須與PLC在同一網(wǎng)段
pConTable[ConNo].Adr.Ip[0] = 192;
pConTable[ConNo].Adr.Ip[1] = 168;
pConTable[ConNo].Adr.Ip[2] = 0;
pConTable[ConNo].Adr.Ip[3] = 1;
pConTable[ConNo].AdrType = 2; // 通過(guò)以太網(wǎng)連接時(shí)此參數(shù)設(shè)置為2
pConTable[ConNo].SlotNr = 2; // PLC中CPU所在槽號(hào)
pConTable[ConNo].RackNr = 0; // PLC中CPU所在架號(hào)
LoadConnection_ex6 (ConNr, &AccessPoint,ConTableLen,pConTable);
SetPassword_ex6(ConNo, pwd); //如果PLC有寫保護(hù),需要設(shè)置密碼
SetActiveConnection_ex6 (ConNr); //激活連接,為讀寫數(shù)據(jù)做準(zhǔn)備
//讀取DB1.DBB0
unsigned long amount = 1; //設(shè)定的讀取長(zhǎng)度
unsigned char pReadBuffer[1];//讀取內(nèi)容緩存,DB1.DBB0中的值讀取至此
unsigned long pDatLen[1]; //實(shí)際的讀取長(zhǎng)度
db_read_ex6 (1, 0x02, 0, &amount, 1,pReadBuffer, pDatLen); //讀取函數(shù)
UnloadConnection_ex6(ConNr); //關(guān)閉連接
1)對(duì)時(shí)間類型的傳送封裝
時(shí)間類型是PLC中使用較廣泛的一種數(shù)據(jù)類型,在高級(jí)語(yǔ)言中并無(wú)與之對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),特別是S5Time類型,使用它時(shí)要注意時(shí)基的選擇,因此需要設(shè)計(jì)一種新的數(shù)據(jù)結(jié)構(gòu)來(lái)處理它們。
struct PlcTime
{
bool is_negative;//TIME
u_short day; //TIME
u_short hour;
u_short minute;
u_short second;
u_short millisecond;
};
以上結(jié)構(gòu)體可供傳送S5Time、TIME和TIME_OF_DAY類型使用,當(dāng)需要傳送時(shí)間類型時(shí),先初始化一個(gè)PlcTime,然后賦值,再將其傳遞給相應(yīng)的接口函數(shù)。
2)對(duì)數(shù)據(jù)塊Bit位訪問(wèn)封裝
在Prodave中沒(méi)有對(duì)數(shù)據(jù)塊Bit位的訪問(wèn)函數(shù),但在實(shí)際應(yīng)用中常常需要對(duì)它進(jìn)行操作。讀取時(shí),先讀出該Bit所在字節(jié),然后檢查所在位可以得到其值;寫入時(shí),先讀取字節(jié),然后更改對(duì)應(yīng)位,再寫入字節(jié),整個(gè)操作過(guò)程需要使用臨界區(qū)來(lái)確保操作的原子性。
//對(duì)數(shù)據(jù)塊Bit位的讀取操作
int PlcAccess::Plc_Read_DataBlock_Bool(u_short BlkNr,u_short StartNr, u_short BitNr, bool*pReadBuffer, u_long *pDatLen)
{
DataUnit unit = unitBYTE; //按byte取數(shù)據(jù)
u_long amount = 1;
UCHAR chr = 0;
//讀取一個(gè)byte
RetValue = Prodave_db_read_ex6(BlkNr,unit,StartNr, &amount, 1, &chr,pDatLen);
*pReadBuffer = (bool)((chr >> BitNr) & 1 ); //獲取對(duì)應(yīng)的bit位
return RetValue;
}
3)對(duì)數(shù)據(jù)塊中連續(xù)地址數(shù)據(jù)讀取封裝
在讀取PLC數(shù)據(jù)時(shí),特別是讀取數(shù)據(jù)塊時(shí),一些數(shù)據(jù)往往是連續(xù)存放的,如果逐個(gè)讀取可能會(huì)影響效率,這時(shí)可以把這些數(shù)據(jù)看成一個(gè)整體按字節(jié)讀取,然后對(duì)讀取的內(nèi)容按各個(gè)數(shù)據(jù)的類型分割而得到各個(gè)具體值。
本系統(tǒng)需要采集脫硫工藝參數(shù)則要求能訪問(wèn)鐵水成分?jǐn)?shù)據(jù)庫(kù),同時(shí)還要通過(guò)工業(yè)以太網(wǎng)連接到PLC,其網(wǎng)絡(luò)連接如圖4所示。
圖4 系統(tǒng)網(wǎng)絡(luò)連接圖
自動(dòng)脫硫系統(tǒng)終端機(jī)采用雙網(wǎng)卡機(jī)器,其中一張網(wǎng)卡連接至生產(chǎn)信息系統(tǒng)網(wǎng)絡(luò)中,主要用于讀取鐵水成分和將脫硫生產(chǎn)數(shù)據(jù)實(shí)時(shí)發(fā)送至后端脫硫數(shù)據(jù)庫(kù)中;另一張網(wǎng)卡通過(guò)工業(yè)以太網(wǎng)連接至PLC,用于與PLC進(jìn)行數(shù)據(jù)通訊進(jìn)而控制脫硫作業(yè)。PLC上則連接著脫硫本體設(shè)備上的各種傳感器和執(zhí)行機(jī)構(gòu),用于操作具體的脫硫作業(yè)。
大部分的實(shí)際控制程序都位于下位機(jī)中,在下位機(jī)程序中將各種需求封裝成功能及功能塊,然后通過(guò)指定數(shù)據(jù)塊中的信息控制各個(gè)功能及功能塊的執(zhí)行。
1)設(shè)備狀態(tài)部分
設(shè)備狀態(tài)是設(shè)備運(yùn)行情況的反應(yīng),實(shí)時(shí)查看并顯示相關(guān)重要設(shè)備狀態(tài)十分重要。其主要包括:鐵水罐鎖定狀況、攪拌頭歸位狀況、攪拌頭上升下降狀況、攪拌轉(zhuǎn)速、攪拌電流、攪拌器高度、料倉(cāng)中料量、溜槽上升下降狀況、備料進(jìn)行狀態(tài)及下料進(jìn)行狀態(tài)等。通過(guò)一個(gè)功能塊讀取相應(yīng)的傳感器信息,然后將這些信息匯總至指定的數(shù)據(jù)塊,這樣上位機(jī)中的程序就能準(zhǔn)確讀取。
2)脫硫工藝數(shù)據(jù)部分
脫硫工藝數(shù)據(jù)是進(jìn)行脫硫作業(yè)時(shí)工藝上需要的參數(shù),其包括:鐵水稱重、溫度、鐵水成分(主要是S、Si),及計(jì)算所得到的脫硫劑量、攪拌時(shí)間、攪拌轉(zhuǎn)速及插入深度。通過(guò)一個(gè)功能塊先將相關(guān)參數(shù)轉(zhuǎn)移至指定數(shù)據(jù)塊,然后上位機(jī)程序讀取這些參數(shù)并計(jì)算出其他的參數(shù),再將計(jì)算出的值寫入PLC指定數(shù)據(jù)塊中。
3)控制數(shù)據(jù)塊部分
通過(guò)寫入相關(guān)數(shù)據(jù)到控制數(shù)據(jù)塊,指令PLC執(zhí)行相應(yīng)的操作,其包括:攪拌頭下降控制、攪拌頭上升控制、自動(dòng)脫硫開(kāi)始、自動(dòng)脫硫結(jié)束等。該數(shù)據(jù)塊對(duì)整個(gè)自動(dòng)脫硫作業(yè)起著至關(guān)重要的作用,因?yàn)樗刂浦渌僮鞯膱?zhí)行。
圖5 控制系統(tǒng)整體架構(gòu)圖
這三者及其與上位機(jī)程序的關(guān)系如圖5所示。
上位機(jī)中的脫硫控制程序通過(guò)與三個(gè)數(shù)據(jù)塊的數(shù)據(jù)通訊,實(shí)現(xiàn)對(duì)整個(gè)脫硫作業(yè)全過(guò)程的監(jiān)視和控制。
作為一套工業(yè)控制系統(tǒng),必須考慮安全性設(shè)計(jì)。在系統(tǒng)架構(gòu)階段就必須分析人機(jī)安全交互、安全設(shè)計(jì)成本等,在綜合考慮這些因素后,必須設(shè)計(jì)冗余、故障降級(jí)運(yùn)行等模塊[7]。
異常處理是此系統(tǒng)一個(gè)很重要的功能,異??梢苑譃楣に嚠惓:驮O(shè)備異常兩類。工藝異常除了包含前面提及的鐵水成分對(duì)比異常,還包括鐵水成分無(wú)法獲取、稱重及溫度超出正常值、無(wú)法獲取鐵水液面高度等,出現(xiàn)工藝異常時(shí)系統(tǒng)告知操作人員問(wèn)題所在,讓其排除錯(cuò)誤,錯(cuò)誤糾正后系統(tǒng)無(wú)需人為干預(yù)可繼續(xù)順利運(yùn)行。設(shè)備異常是在脫硫作業(yè)過(guò)程中設(shè)備出現(xiàn)故障,其包括攪拌頭動(dòng)作異常、備料下料異常等,當(dāng)出現(xiàn)設(shè)備異常時(shí)彈出高級(jí)別的警告信息,同時(shí)列出對(duì)應(yīng)流程的設(shè)備狀態(tài)信息;一般出現(xiàn)設(shè)備異常時(shí),若在執(zhí)行自動(dòng)攪拌則停止攪拌,并將攪拌頭及其他設(shè)備歸位,待故障排除后需重新通過(guò)程序下達(dá)自動(dòng)脫硫指令系統(tǒng)才能繼續(xù)運(yùn)行。
在實(shí)際開(kāi)發(fā)和運(yùn)行中,得到了以下經(jīng)驗(yàn)和啟發(fā):
1)數(shù)據(jù)塊中的數(shù)據(jù)盡可能地連續(xù)存放,便于上位機(jī)程序高效讀取。
2)邏輯操作盡可能地移到下位機(jī)程序中,讓上位機(jī)程序關(guān)注控制部分和報(bào)表功能。
3)脫硫現(xiàn)場(chǎng)環(huán)境惡劣,程序中應(yīng)盡可能地依賴穩(wěn)定性信號(hào)。
基于Prodave的鐵水KR脫硫自動(dòng)控制系統(tǒng)綜合了高級(jí)語(yǔ)言開(kāi)發(fā)上位機(jī)程序的便利性和PLC梯形圖語(yǔ)言開(kāi)發(fā)邏輯模塊的可理解與可維護(hù)性,解決了實(shí)際生產(chǎn)中工藝數(shù)據(jù)與設(shè)備信息難以有效結(jié)合問(wèn)題,實(shí)現(xiàn)了鐵水KR脫硫過(guò)程中的自動(dòng)化。本文闡述的脫硫自動(dòng)控制系統(tǒng)已用于實(shí)際生產(chǎn)環(huán)境,使脫硫作業(yè)向標(biāo)準(zhǔn)化、自動(dòng)化邁進(jìn)了一步。
[1] 張茂林, 徐安軍.KR法與噴吹法在鐵水脫硫中應(yīng)用的比較[J].煉鋼, 2009, 25(5): 73-77.
[2] 常旭.近幾年我國(guó)鐵水脫硫預(yù)處理的發(fā)展及應(yīng)用[J].煉鋼, 2006, 22(5): 52-5559.
[3] 劉炳宇.不同鐵水脫硫工藝方法的應(yīng)用效果[J].鋼鐵, 2004,39(6): 24-27.
[4] 蘇天森.中國(guó)鋼鐵科技創(chuàng)新與鐵水預(yù)處理技術(shù)的發(fā)展[J].鋼鐵研究學(xué)報(bào), 2006, 18(12): 1-5.
[5] Siemens.PRODAVE MPI/IE V6.0 Manual[Z].北京: 西門子(中國(guó))有限公司, 2005.5.
[6] 易定忠, 嚴(yán)宏志, 于偉, 等.基于MPI的往復(fù)壓縮機(jī)監(jiān)控系統(tǒng)通信技術(shù)研究[J].制造業(yè)自動(dòng)化.2007, 29(3): 61-64.
[7] 韓江洪, 劉征宇, 劉曉平, 等.工業(yè)控制安全研究綜述[J].合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版).2010, 33(2): 161-168, 173.