趙文勝,王靖歐
(柬埔寨達(dá)岱水電有限公司,柬埔寨王國(guó)金邊 12152)
柬埔寨達(dá)岱電廠,位于柬埔寨西部的國(guó)公省境內(nèi),是由中國(guó)重型機(jī)械有限公司以 BOT(Build-Operate-Transfer,建設(shè)——經(jīng)營(yíng)——轉(zhuǎn)讓)方式,在柬投資建設(shè)的大型電廠,電站安裝3臺(tái)單機(jī)容量為82 MW的豎軸混流式水輪發(fā)電機(jī)組,總裝機(jī)容量246 MW,年均發(fā)電量8.49億kW·h,在柬埔寨電網(wǎng)具有重要地位(高峰時(shí)期占柬埔寨全國(guó)電網(wǎng)發(fā)電容量近1/3)。達(dá)岱電廠于2014年8月完成了3臺(tái)機(jī)組的安裝調(diào)試并投入運(yùn)行。在隨后的機(jī)組運(yùn)行中,出現(xiàn)了多次控制故障及偶發(fā)性的負(fù)荷調(diào)節(jié)異?,F(xiàn)象,對(duì)電網(wǎng)的安全運(yùn)行造成了不良影響。在查找故障原因的過(guò)程中,應(yīng)用了動(dòng)態(tài)調(diào)試環(huán)節(jié)中較為典型的測(cè)試方法,這些方法成為解決問(wèn)題的關(guān)鍵。
柬埔寨達(dá)岱電廠監(jiān)控系統(tǒng)采用的是許繼集團(tuán)有限公司的CBZ8000綜合自動(dòng)化系統(tǒng),采用面向?qū)ο蟮姆謱臃植际皆O(shè)計(jì)思想,全廠實(shí)時(shí)數(shù)據(jù)庫(kù)和歷史數(shù)據(jù)庫(kù)分布在廠站計(jì)算機(jī)中,各單元數(shù)據(jù)庫(kù)分布在各LCU(Logical Control Unit,邏輯控制單元)中,系統(tǒng)各功能分布在系統(tǒng)的各個(gè)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)嚴(yán)格執(zhí)行指定的任務(wù),并通過(guò)系統(tǒng)網(wǎng)絡(luò)與其他節(jié)點(diǎn)進(jìn)行通信。該設(shè)備采用的是施耐德昆騰系列PLC,編程主要采用Ladder Diagram(梯形圖)語(yǔ)言和Structured Tex(t結(jié)構(gòu)化文本)編寫而成。
在計(jì)算機(jī)監(jiān)控系統(tǒng)中,控制是邏輯的應(yīng)用,而調(diào)節(jié)是算法的輸出。程序在投運(yùn)前的靜態(tài)調(diào)試,主要通過(guò)開發(fā)人員的邏輯思維來(lái)分析源程序代碼和排錯(cuò)。但程序是客觀事物的反映,客觀事物本來(lái)就互相關(guān)聯(lián)、互相糾纏,代碼之間的大量迭代無(wú)法避免。這些已經(jīng)完成了試運(yùn)行,但毫無(wú)征兆出現(xiàn)的嚴(yán)重故障,只能通過(guò)動(dòng)態(tài)調(diào)試的方式來(lái)消除。
電站投運(yùn)后,機(jī)組運(yùn)行中在監(jiān)控系統(tǒng)給定有功調(diào)節(jié)操作時(shí),會(huì)偶發(fā)持續(xù)減有功指令。例如,設(shè)定有功增加時(shí),監(jiān)控系統(tǒng)卻出現(xiàn)減有功脈沖,使有功調(diào)節(jié)方向錯(cuò)誤;或者在減有功時(shí),負(fù)荷已經(jīng)達(dá)到給定值,但減脈沖仍然保持,造成負(fù)荷繼續(xù)下降,甚至將有功減到零。在異常出現(xiàn)的時(shí)間段內(nèi),在上位機(jī)重新進(jìn)行設(shè)值和手動(dòng)增加有功,均無(wú)法干預(yù)到負(fù)荷的異常調(diào)節(jié)。排除監(jiān)控系統(tǒng)外部因素和硬件故障后,判斷應(yīng)為程序邏輯故障造成。根據(jù)動(dòng)態(tài)調(diào)試定位進(jìn)行分類,應(yīng)著重從算法上介入。
在某種特定條件下執(zhí)行控制流程時(shí),上位機(jī)發(fā)分步開機(jī)令去執(zhí)行開機(jī)檢查操作,但指令下達(dá)后,程序就會(huì)處于一種完全不受控狀況,流程自動(dòng)執(zhí)行每一步開機(jī)的操作指令,直到完成機(jī)組的開機(jī)并網(wǎng)。在故障出現(xiàn)的時(shí)間段,強(qiáng)制開機(jī)令退出和補(bǔ)發(fā)停機(jī)令,同樣無(wú)法中斷流程執(zhí)行,這樣的控制故障更多考慮邏輯方面的跳轉(zhuǎn)。
動(dòng)態(tài)調(diào)試需要讓系統(tǒng)在真實(shí)的環(huán)境中執(zhí)行,對(duì)系統(tǒng)行為進(jìn)行分析。利用IDE(Integrated Development Environment)集成開發(fā)環(huán)境配置的調(diào)試工具,或者自己編寫的子程序跟蹤軟件的運(yùn)行,來(lái)協(xié)助解決程序中的錯(cuò)誤。在動(dòng)態(tài)調(diào)試中,最重要的技術(shù)是采用白盒測(cè)試法(White-Box Testing),白盒測(cè)試是一種被廣泛使用的邏輯測(cè)試方法,通過(guò)程序內(nèi)部邏輯驅(qū)動(dòng),來(lái)進(jìn)行路徑和分支測(cè)試。達(dá)岱電廠的負(fù)荷調(diào)節(jié)異常情況的處理,就分別采用這兩種測(cè)試方法進(jìn)行。
(1)達(dá)岱電廠的調(diào)節(jié)故障的偶發(fā)性,主要就是由于貫穿在程序內(nèi)部的邏輯,存在著不確定性和無(wú)窮性,因此不能窮舉所有的邏輯路徑。此時(shí)可先利用思維導(dǎo)圖(Mind Manager)軟件,以發(fā)散思維的方式,從程序的動(dòng)作出口入手,倒推故障出現(xiàn)的各種可能性及關(guān)鍵參數(shù)。將故障原因集中到程序中的幾個(gè)重要中間變量上,相當(dāng)于定位至路徑的交叉路口(Intersection),同時(shí)在程序不同地方設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。由于故障的出現(xiàn)無(wú)規(guī)律可循,梯形圖LD語(yǔ)言也無(wú)法記錄執(zhí)行過(guò)程,只能通過(guò)長(zhǎng)期跟蹤,可以利用施耐德Unity Pro軟件中的Trending tool功能,不間斷地對(duì)控制程序中的幾個(gè)相關(guān)變量進(jìn)行錄波監(jiān)視,分別獲得了故障前后的變量記錄及動(dòng)作圖形。
(2)故障時(shí)刻出現(xiàn)在機(jī)組增加負(fù)荷設(shè)定至72 MW,當(dāng)負(fù)荷接近72 MW設(shè)定值時(shí),突然出現(xiàn)減速令,值班人員手動(dòng)將設(shè)值復(fù)歸,1F(1#發(fā)電機(jī))負(fù)荷穩(wěn)定在65 MW,,但手動(dòng)重新設(shè)值82 MW后,再次出現(xiàn)減速令,此次即使將設(shè)值復(fù)歸,減速令仍持續(xù)輸出,直至將1F負(fù)荷減至10 MW,后自動(dòng)減負(fù)荷情況消失。
(3)Trending tool功能可以記錄下預(yù)置參數(shù)的每一條記錄,20:57:03機(jī)組實(shí)發(fā)有功33 MW,上位機(jī)設(shè)定負(fù)荷72 MW,之前調(diào)節(jié)都正常,實(shí)發(fā)值逐漸接近設(shè)定值,在死區(qū)附近波動(dòng)時(shí),20:57:43用于減有功調(diào)節(jié)時(shí)間計(jì)算的%MW1268參數(shù),產(chǎn)生一個(gè)負(fù)值,即-130。
(4)機(jī)組調(diào)節(jié)脈沖式通過(guò)程序中INT_TO_TIME功能塊,將數(shù)值轉(zhuǎn)換為毫秒(ms),正常情況下,減有功環(huán)節(jié)內(nèi)%MW1268都應(yīng)該是正值,例如,等于500時(shí),輸出的脈沖值就應(yīng)該是500 ms。如果%MW1268計(jì)算出負(fù)值,理論上應(yīng)該處于增有功的控制環(huán)節(jié)內(nèi),這個(gè)值要被閉鎖,不應(yīng)進(jìn)入減有功流程。分析原因是實(shí)發(fā)有功在設(shè)定有功附近波動(dòng)時(shí),由于程序沒(méi)有跟上PLC的掃描進(jìn)度,將負(fù)值賦到了減有功流程,從而產(chǎn)生了錯(cuò)誤的跳轉(zhuǎn)。INT類型中負(fù)數(shù)用二進(jìn)制原碼換算的范圍是(-32768~0),因此計(jì)算出的減有功的輸出脈沖時(shí)間(32768-130=32638),為32 s 638 ms。也就是說(shuō)要持續(xù)進(jìn)行32 s的減有功指令,并且一直被保持。這就是為什么負(fù)荷持續(xù)下降的核心問(wèn)題。
(5)根據(jù)找到的故障原因,有針對(duì)性的對(duì)相關(guān)程序進(jìn)行了修改,增加了增減有功是否為負(fù)值判據(jù),若為負(fù)值,不進(jìn)行時(shí)間換算,等待下一個(gè)掃描周期再換算。增加了功率調(diào)節(jié)自保持回路的相關(guān)復(fù)位條件。在增有功和減有功的輸出,TON功能塊之前,增加有功可調(diào)(%M1225)條件,有功不可調(diào)則輸出取消。程序修改調(diào)試完成后,經(jīng)過(guò)近1年實(shí)際運(yùn)行檢驗(yàn),未再出現(xiàn)過(guò)異常情況。
(1)分支測(cè)試是通過(guò)針對(duì)特定條件設(shè)計(jì)測(cè)試方法,對(duì)軟件的邏輯路徑進(jìn)行覆蓋,跟蹤程序在路上如何的執(zhí)行。監(jiān)控系統(tǒng)流程控制主要采用的是結(jié)構(gòu)化文本ST語(yǔ)言,大部分的邏輯路徑分支采用CASE語(yǔ)句。這樣在靜態(tài)調(diào)試時(shí),可以很方便的設(shè)置斷點(diǎn),當(dāng)執(zhí)行到特定語(yǔ)句或改變特定變量的值時(shí),程序停止執(zhí)行,以便分析程序此時(shí)的狀態(tài)。但在動(dòng)態(tài)調(diào)試時(shí),只能利用程序語(yǔ)言提供的調(diào)試功能,分析程序的動(dòng)態(tài)行為,針對(duì)發(fā)生的控制故障,編寫調(diào)試程序來(lái)實(shí)時(shí)檢查主存和寄存器,記錄流程在各分支上執(zhí)行的跳轉(zhuǎn)。
(2)與路徑測(cè)試(可以利用Trending tool功能記錄若干變量的相互關(guān)聯(lián))不同,分支測(cè)試更多的是針對(duì)同一變量的在線跟蹤,可以定義數(shù)組,通過(guò)編寫程序?qū)⒘鞒痰膱?zhí)行寫到數(shù)組中去。并設(shè)置軟件開關(guān),隨時(shí)觀察變量在分支程序中的執(zhí)行步驟。優(yōu)點(diǎn)是,可以與PLC的掃描周期同步,從寄存器中精確讀取變量在每個(gè)掃描周期的變動(dòng)情況。
(3)對(duì)變量的初始賦值,可以通過(guò)變量表,也可以通過(guò)賦值語(yǔ)句。通過(guò)分支測(cè)試,發(fā)現(xiàn)當(dāng)程序重新編譯下載時(shí),部分寄存器處于被清空的初始態(tài),變量還未被賦值。這部分變量的初始態(tài)通常是0值,而首次賦值與變量所處語(yǔ)句的位置有很密切的關(guān)系。負(fù)責(zé)程序跳轉(zhuǎn)的變量數(shù)組,是在主程序最后一行進(jìn)行的賦值,而各子程序段的判斷條件,都沒(méi)有考慮到對(duì)0值進(jìn)行限制。在初始掃描周期完成后,還未執(zhí)行賦值的故障變量數(shù)組,就在缺少限制的子程序循環(huán)中,一旦擊發(fā)條件滿足,就可導(dǎo)致流程的不受控執(zhí)行。
在IEC 6-1131/3標(biāo)準(zhǔn)中,定義了5種標(biāo)準(zhǔn)編程語(yǔ)言,監(jiān)控系統(tǒng)的控制軟件通常會(huì)融合多種程序語(yǔ)言進(jìn)行編寫,優(yōu)點(diǎn)是在功能上能進(jìn)行互補(bǔ)和直觀,可發(fā)揮程序語(yǔ)言各自的優(yōu)勢(shì)。對(duì)于整體程序的動(dòng)態(tài)調(diào)試,除了依靠軟件自身進(jìn)行語(yǔ)句覆蓋 SC(Statement Coverage)編譯檢查外,如果有可能,針對(duì)故障問(wèn)題的測(cè)試方法,可以采用判定條件覆蓋CDC(Condition/Decision Coverage),即設(shè)計(jì)足夠多的測(cè)試用例,使判定中每個(gè)條件的所有可能至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果也至少出現(xiàn)一次。但是無(wú)論采取哪種測(cè)試方法,目的是發(fā)現(xiàn)程序存在的問(wèn)題,而不是證明程序沒(méi)有問(wèn)題。
對(duì)于監(jiān)控系統(tǒng)方面的故障,難點(diǎn)在于故障原因難于定位,而一旦找到故障原因,問(wèn)題自然迎刃而解。合理運(yùn)用動(dòng)態(tài)調(diào)試中的經(jīng)典方法,對(duì)負(fù)荷調(diào)節(jié)異常、控制環(huán)節(jié)故障這類的偶發(fā)性故障確實(shí)起到了重要作用。隨著技術(shù)及軟件的發(fā)展,特別是IEC 61850規(guī)約的引入,對(duì)系統(tǒng)與設(shè)備之間的控制環(huán)節(jié)也提出了更高的要求,監(jiān)控系統(tǒng)正在朝著網(wǎng)絡(luò)化、互聯(lián)網(wǎng)的方向發(fā)展,系統(tǒng)間的信息傳輸將呈現(xiàn)多層次、多局部交錯(cuò)互聯(lián)的形態(tài),并由此實(shí)現(xiàn)信息的溝通、匯集和共享?;谙到y(tǒng)層面的動(dòng)態(tài)調(diào)試將會(huì)越來(lái)越深入,掌握傳統(tǒng)的調(diào)試思路及方法,多采用逆向思維去分析問(wèn)題,將對(duì)系統(tǒng)的穩(wěn)定和故障排除起到?jīng)Q定性作用。