一、項(xiàng)目簡(jiǎn)介
上虞杭協(xié)聯(lián)電廠(見圖1)位于浙江省上虞市精細(xì)化工園區(qū)內(nèi),是杭州協(xié)聯(lián)熱電廠于2003年在上虞市投資創(chuàng)建的。一期項(xiàng)目總的裝機(jī)容量為27MW,3臺(tái)130t/h循環(huán)硫化床鍋爐,一臺(tái)12MW的凝汽式汽輪機(jī),一臺(tái)15MW的背壓式汽輪機(jī),年發(fā)電能力2億千瓦時(shí),供汽能力150萬(wàn)噸。
圖1電場(chǎng)外景
本項(xiàng)目采用西門子PCS7控制系統(tǒng),
控制系統(tǒng)的設(shè)計(jì)上包括了三臺(tái)130t/h循環(huán)硫化床鍋爐,一臺(tái)12MW的凝汽式汽輪機(jī),一臺(tái)15MW的背壓式汽輪機(jī),及減溫減壓,化學(xué)水處理等輔機(jī)系統(tǒng)。其中主機(jī)部分采用了五套冗余的414-H控制器,三爐兩機(jī)各單獨(dú)使用一套控制器,輔機(jī)部分使用了一套非冗余的414控制器。
本項(xiàng)目遇到了控制器內(nèi)存不足的情況,實(shí)施了一些特殊的處理方法,現(xiàn)記錄如下。
二、CPU內(nèi)存的組成情況
CPU的內(nèi)存組成情況如圖2所示。
圖2CPU內(nèi)存組成情況
CPU的內(nèi)存由loadmemory和workmemory兩部分組成。Loadmemory是可以通過(guò)外擴(kuò)存倒卡的方式擴(kuò)展,而workmemory是集成在CPU內(nèi)部無(wú)法擴(kuò)展的,所以我們需要節(jié)省workmemor的使用。Workmemory包括codememory和datamemory。對(duì)于PCS7項(xiàng)目,codememory的d用量要遠(yuǎn)遠(yuǎn)高于datamemory的使用量i所以要節(jié)省CPU的內(nèi)存zui終就是要節(jié)省workmemory[}的codememory。
codememory的使用分配包括了四部分,如圖3所示。
圖3codememory的使用分配
用戶程序--block
I/O過(guò)程映像區(qū)--input/outputimage
診斷緩沖區(qū)--diagnosebuffer
通訊任務(wù)數(shù)量--communicatejob
所以我們就要通過(guò)節(jié)省以上四部分的使用來(lái)節(jié)省CPU的codememory。
本項(xiàng)目中的CPU內(nèi)存不足出現(xiàn)在3個(gè)鍋爐系統(tǒng)對(duì)應(yīng)的3套414-H控制器,每個(gè)鍋爐的信號(hào)數(shù)量為550點(diǎn),其中Al信號(hào)為200點(diǎn),控制回路為23個(gè),414-H控制器的workmemory為768K,codememory為384K,zui初程序完成后,已超400K,無(wú)法下載程序,后進(jìn)行了以下處理。
三、節(jié)省內(nèi)存的方法
1.減少用戶程序
由以上workmemory的組成情況可以看出,用戶程序的使用情況決定了workmemory余量的大小,所以我們要盡量減少用戶程序,方法如下:
方法1,避免使用開關(guān)量信號(hào)的信號(hào)驅(qū)動(dòng)塊,即CH-DI、CH-DO塊。這兩種塊只有在我們調(diào)試程序時(shí)有一些作用,當(dāng)我們內(nèi)存不足時(shí),*可以不使用這兩種驅(qū)動(dòng)塊,而直接使用地址來(lái)編程序。
方法2,用用戶自定義的FB塊來(lái)替換模擬量信號(hào)驅(qū)動(dòng)塊CH-AI、CH-AO。首先對(duì)于PCS7項(xiàng)目,相同大小的FC塊的重復(fù)調(diào)用要比相同大小的FB塊的重復(fù)調(diào)用所占用的CPU的codememory大得多,而CH-AI、CH-AO塊是FC塊,且尺寸較大,所以我們要用用戶自定義的FB塊來(lái)代替CH-AI、CH-AO塊;其次,CH-AI、CH-AO塊不僅在循環(huán)掃描周期中(如OB35)被調(diào)用,而且還在OB100中被調(diào)用,這就使這兩種塊占用CPU的內(nèi)存加倍,所以如果不需要在OB100中做特殊程序處理時(shí),我們自己創(chuàng)建FB塊只在循環(huán)掃描周期中(如OB35)被調(diào)用,來(lái)減少用戶程序。
方法3,刪除系統(tǒng)生成的I/O模板的驅(qū)動(dòng)塊。在采用以上兩種方法,但CPU內(nèi)存還不能滿足要求時(shí),可以采取這種方法。當(dāng)我們編譯產(chǎn)生模板驅(qū)動(dòng)后,系統(tǒng)會(huì)自動(dòng)生成許多驅(qū)動(dòng)塊,其中包括I/O模板的驅(qū)動(dòng)塊、CPU的驅(qū)動(dòng)塊、冗余的驅(qū)動(dòng)塊、IM153的驅(qū)動(dòng)塊等,而其中I/O模板的驅(qū)動(dòng)塊占用了較多的程序。當(dāng)我們不使用信號(hào)驅(qū)動(dòng)塊時(shí),則可以刪除I/O模板的驅(qū)動(dòng)塊,但是我們將無(wú)法得到模板的運(yùn)行報(bào)警信息。
2.減少診斷緩沖區(qū)
CPU的診斷緩沖區(qū)存儲(chǔ)了系統(tǒng)的硬件診斷信息,利用診斷信息,工程師可以清楚地了解到CPU歷史及現(xiàn)在的運(yùn)行狀況和故障信息。如我們不需要保存太久的CPU診斷信息,我們可以減少診斷緩沖區(qū)的容量來(lái)節(jié)省內(nèi)存。PCS7V6版本中CPU414-H的默認(rèn)緩沖區(qū)大小為3000條診斷信息,我們可以zui低減少到100條診斷信息。
3.減少I/O過(guò)程映像區(qū)
通過(guò)減少過(guò)程映像區(qū)的大小,同樣可以節(jié)省CPU的codememory。對(duì)于PCS7系統(tǒng)組態(tài)硬件時(shí),模擬信號(hào)默認(rèn)的起始地址為IW512和QW512,這時(shí)我們就要調(diào)整相應(yīng)的起始地址,將其盡量減小。例如,開關(guān)量信號(hào)組態(tài)的zui高地址如果是140.7和Q20.7,我們可以將模擬信號(hào)的起始地址設(shè)為IW50和QW30,以此可減少過(guò)程映像區(qū)的大小。
4.減少CPU的通訊任務(wù)數(shù)量
CPU的通訊任務(wù)占用了CPU大量的內(nèi)存,對(duì)CPU的codememory的影響很大,所以我們要盡量減少CPU的通訊任務(wù)數(shù)量,來(lái)節(jié)省大量的內(nèi)存空間。
具有報(bào)警信息功能的FB塊的數(shù)量決定了通訊任務(wù)數(shù)量,這些FB塊包括CTRL-PID.MOTOR、MEAS-MON.VAL-MOT.MOD1等,所以我們?cè)贑FC編程時(shí)要盡量減少這些塊的數(shù)量。
方法1,不使用MEAS-MON塊。我們常用MEAS-MON塊來(lái)實(shí)現(xiàn)對(duì)采集的過(guò)程模擬信號(hào)進(jìn)行顯示及報(bào)警,但是由于它占用了CPU的通訊任務(wù),我們將不能使用它。對(duì)于模擬信號(hào)的顯示,我們可創(chuàng)建一個(gè)FB塊來(lái)實(shí)現(xiàn),對(duì)于模擬信號(hào)的高低限報(bào)警,我們可以使用ALARM-8P來(lái)實(shí)現(xiàn),這樣可以大大減少通訊任務(wù)數(shù)量。
方法2,刪除系統(tǒng)生成的I/O模板的驅(qū)動(dòng)塊。I/O模板的驅(qū)動(dòng)塊同樣占用了CPU的通訊任務(wù),所以刪除系統(tǒng)生成的I/O模板的驅(qū)動(dòng)塊,同樣可以大大減少通訊任務(wù)數(shù)量,刪除方法上己闡述。
四、內(nèi)存不足時(shí)程序的優(yōu)化
CPU的內(nèi)存不足,將給我們帶來(lái)的主要問(wèn)題是程序無(wú)法部分下裝,所以我們將針對(duì)這個(gè)問(wèn)題進(jìn)行程序的優(yōu)化。
方法1,建立多個(gè)運(yùn)行組,盡量減少每個(gè)運(yùn)行組內(nèi)所調(diào)用的程序塊的數(shù)量。每個(gè)運(yùn)行組內(nèi)所調(diào)用的程序塊的數(shù)量越多,則編譯后系統(tǒng)生成的FC塊的尺寸就越大,如果FC塊的尺寸太大,則程序?qū)o(wú)法部分下裝。
方法2,CFC盡量按功能分,減少CFC程序之間的連接。一般情況下,我們編程時(shí)每個(gè)CFC都對(duì)應(yīng)一個(gè)運(yùn)行組,減少CFC程序之間的連接,則在修改程序后進(jìn)行部分編譯時(shí),所更改的程序就會(huì)相對(duì)減少,部分下裝的可行性就要大一些。
五、小結(jié)
通過(guò)以上方法基本解決了本項(xiàng)目中CPU內(nèi)存不足的問(wèn)題,為杭州協(xié)聯(lián)熱電廠節(jié)省了大量的資金投入?,F(xiàn)三爐兩機(jī)已全部投產(chǎn),一切運(yùn)行正常。