左懷拯
(馬鞍山鋼鐵股份有限公司冷軋總廠,安徽馬鞍山 243000)
本項目采用SIMATIC S7-400PLC 對連續(xù)退火鍍鋅生產(chǎn)線的板溫進行控制。SIMATIC S7-400PLC是中高性能的可編程控制器[1],軟件采用西門子DCS(集散控制系統(tǒng))的控制軟件PCS7[2],其中CFC為PCS7 的過程控制組件。研究背景為計算鋅鍋感應(yīng)加熱器的最近15 min 內(nèi)的功率均值,用來建立入鋅鍋帶鋼溫度的熱平衡方程。在CFC 語言環(huán)境下,由于沒有堆棧功能,無法直接取得連續(xù)的均值,只能通過迭代的方式進行累加替換。解決該問題的設(shè)計方案涉及的概念有:累加模塊、延時模塊、系統(tǒng)時鐘、實數(shù)選擇模塊構(gòu)建數(shù)據(jù)鎖定等。
設(shè)計思路:利用系統(tǒng)時鐘進行時間延遲,1 min后計時完成,地址位累加一,用地址位進行比較產(chǎn)生第1 鐘的累加值寫入堆棧1;然后進行第2 鐘的累加寫入堆棧2,對15 min進行劃分產(chǎn)生15個堆棧;當(dāng)15 min 計時完成后計數(shù)器歸零,計算產(chǎn)生的累加值對堆棧1進行覆蓋,從而得到2~16 min的均值,以此類推。此計算方式產(chǎn)生的均值為不連續(xù)的動態(tài)均值,如果想得到更加連續(xù)均勻的數(shù)值,可以增加堆棧數(shù)量,減少累計時間。當(dāng)累計時間足夠短且堆棧數(shù)量足夠大,則可以產(chǎn)生接近于連續(xù)的均值,能夠滿足模型的計算需求。
通用累加模塊如圖1所示。
圖1 CFC中的通用累加模塊
圖1 中,In 為瞬時值,OutHiLim 為累加上限,OutLoLim 為累加下限,TI 為累加時間單位,Out-TrkOn 為累加清零命令,Out 為累加輸出,計算公式為:
其工作時序如圖2所示。
圖2 累加模塊工作時序圖
在程序中,用累加模塊對鋅鍋感應(yīng)加熱器的功率進行累加,單位為秒,而功率是是以小時為單位,累加時間單位為3 600 s,所以TI=3 600,而實時功率指為82 kW,所以In 值寫入82.0,用累加模塊累加的值并不直接進行計算,而是在累加結(jié)束時,對前面的計算值進行覆蓋。
通用延時模塊如圖3所示。
圖3 CFC中通用延時模塊
圖3中Time0為延遲時間,mode為延遲模式,reset 為復(fù)位,I0 為延遲觸發(fā)信號,Q0 為延遲輸出信號,PTIME 為計時器,而TIMER_P 模塊的功能時序如圖4所示。
圖4 延時模塊模式2中的狀態(tài)時序圖
采用的mode2 為延遲導(dǎo)通計時器,當(dāng)觸發(fā)信號為1 時,開始計時,計時至延時時間完成時Q0 導(dǎo)通。在程序中用來將累加器的數(shù)值寫入均值計算模塊,對原值進行覆蓋,同時地址位累加1。覆蓋之后,再利用一個延遲計時器延遲2 s,對累加器的數(shù)值進行清零。
程序需要對每次采集的累加數(shù)據(jù)進行保存,參與均值計算,當(dāng)循環(huán)到同一地址時,用新數(shù)據(jù)進行覆蓋。為實現(xiàn)這一功能,采用實數(shù)選擇模塊進行功能構(gòu)建,如圖5所示。
圖5 由實數(shù)選擇模塊構(gòu)建的數(shù)據(jù)保持結(jié)構(gòu)
累加數(shù)值寫入IN_0,當(dāng)計時器計時完成觸發(fā)CONTROL 進行選擇,把累加值寫入OUT,并將OUT值送回IN_1,形成自鎖,當(dāng)下一輪掃描完成時,再次寫入新值,對原值進行覆蓋并重新鎖定。
如圖6所示,由計時器累計時間,觸發(fā)計數(shù)器為I0,每觸發(fā)一次計數(shù)器加一。采用DI_I 模塊將雙整數(shù)轉(zhuǎn)化為整數(shù),然后使用比較器與數(shù)值14 進行比較,當(dāng)遞增數(shù)值大于14時,比較器的GT 管腳觸發(fā)復(fù)位信號,對計數(shù)器產(chǎn)生的數(shù)值進行復(fù)位,此結(jié)構(gòu)實現(xiàn)了地址位從0到14的循環(huán)。
圖6 地址位構(gòu)建結(jié)構(gòu)
地址位產(chǎn)生后,用來鎖定數(shù)據(jù)寫入地址,并最終參與均值計算,其結(jié)構(gòu)由比較模塊、與門、實數(shù)選擇模塊構(gòu)建,如圖7所示。
圖7 地址位變化時產(chǎn)生的數(shù)據(jù)更迭
使用多比較器進行比較,當(dāng)循環(huán)地址與地址位相同時,則此地址被激活,與采樣的周期信號接入與門,產(chǎn)生的結(jié)果觸發(fā)數(shù)據(jù)保持模塊,將新的數(shù)據(jù)寫入對應(yīng)地址的數(shù)據(jù)塊中并鎖定,從而產(chǎn)生不同時間內(nèi)的數(shù)據(jù)累加值。
將每個地址位所對應(yīng)周期內(nèi)的累加值通過實數(shù)比較器自鎖存儲,然后取平均值。多個周期進行循環(huán)覆蓋,從而產(chǎn)生動態(tài)的均值,達(dá)到設(shè)計要求。
而在此例中,采用0~14 個地址位,每個地址周期為60 s,所以最終會對15 個地址位的數(shù)據(jù)進行累加,循環(huán)覆蓋,再除以時間,最后得到15 min 內(nèi)的動態(tài)均值。如圖8 所示(圖中為從8~14 的7 個累加數(shù)值之和,0~8的累加處理方式相同)。
圖8 實數(shù)求和模塊
程序總圖如圖9所示。
圖9 程序整體結(jié)構(gòu)
案例中采用了15個地址的計算模型,且采樣周期較長,計算結(jié)果較為粗糙,在數(shù)據(jù)覆蓋時明顯呈現(xiàn)離散化的趨勢,在數(shù)據(jù)不斷覆蓋中產(chǎn)生數(shù)值突變,而鋅鍋加熱功率只有高功率與低功率兩種,更加劇了計算值的突變。為了減少這種現(xiàn)象,將采樣時間改為20 s,采樣地址增加為45 個,突變被有效抑制,連續(xù)性明顯增強。但修改過程中,程序量明顯增大。
對兩種采樣時間及采樣次數(shù)進行對比,比對結(jié)果如圖10所示。
圖10 采用低采樣頻率產(chǎn)生的溫度計算值
圖10中標(biāo)注部分為計算值,在1 min采樣周期,采樣次數(shù)為15的狀態(tài)下呈現(xiàn)出明顯的波動,數(shù)據(jù)粗糙且離散程度高。
圖11 中標(biāo)注部分為計算值,在20 s 采樣周期,采樣次數(shù)為45 的狀態(tài)下,數(shù)據(jù)更細(xì)膩,連續(xù)性增強且波動大幅降低。
圖11 采用較高采樣頻率產(chǎn)生的溫度計算值
由于增加采樣頻次,每個周期采樣的功率累加值更連續(xù),即使在功率突變的情況下,仍然可以計算出較為連續(xù)的值。
圖11中紅色曲線不是功率均值,而是使用功率均值通過線性計算得到的帶鋼溫度計算值,雖然不是直接值,但是線性計算不會改變曲線的連續(xù)性,故可作為功率值連續(xù)性的參考比照。
采用CFC 模塊構(gòu)建“堆?!保瑧?yīng)用在計算動態(tài)均值和“堆?!苯Y(jié)構(gòu)進行數(shù)據(jù)處理可以得到較好的效果。利用計數(shù)模塊實現(xiàn)地址累加,利用實數(shù)選擇模塊實現(xiàn)數(shù)據(jù)鎖定,利用計時模塊實現(xiàn)數(shù)據(jù)推入,完美的模擬了計算機堆棧工作的過程,其推入及讀取的方式,可以通過程序進行微調(diào),這取決于實際要求,本文只是提供了一種思路,程序結(jié)構(gòu)的改變可以產(chǎn)生無窮的變化形式。當(dāng)然,其結(jié)構(gòu)過于復(fù)雜,程序量較大也是一個明顯的缺點,值得進一步研究。