基于ARM的開關(guān)量信號采集模板的設(shè)計
為了準(zhǔn)確記錄開關(guān)量變位的時間,通常情況下采用定時中斷來掃描讀取BI狀態(tài),B板的掃描周期為lms,并采用該中斷進(jìn)行SOE時鐘的守時,掃描周期為1ms時SOE分辨率可達(dá)到2ms。沒有去抖動功能常的開關(guān)量采集流程為:SOE時鐘增長1ms;讀取BI的狀態(tài);判斷開關(guān)量是否變位,如果有變位,則記錄變位信息,包括BI的點序號、狀態(tài)、變位時間和變位標(biāo)記等。為了判別開關(guān)量是否發(fā)生抖動,軟件在變位信息結(jié)構(gòu)體中增加了一個抖動計數(shù)器成員變量,如果開關(guān)量有變位,先不記錄變位信息,而是將抖動計數(shù)器加1,判斷是否達(dá)到抖動延時檢測時間,如果達(dá)到,則確認(rèn)開關(guān)量發(fā)生了變位;如果開關(guān)量沒有變位,則將抖動計數(shù)器清零。這樣如果一個開關(guān)量在抖動延時判別時間之內(nèi)發(fā)生變位又恢復(fù)至原先的狀態(tài),軟件將不記錄其發(fā)生的變位信息,從而達(dá)到取抖動的目的。B板帶有去抖動功能的1ms開關(guān)量定時掃描中斷服務(wù)程序的算法如圖6所示。
比較帶抖動功能和不帶抖動功能的開關(guān)量采集算法,增加去抖動功能時,只增加了一個抖動計數(shù)器變量,在記錄開關(guān)量變位信息之前,對該變位信息進(jìn)行延時確認(rèn),增加的CPU程序執(zhí)行代價非常小,沒有影響中斷服務(wù)程序的正常運(yùn)行。因此,該算法速度快,效果也十分理想。該算法的缺陷在于如果開關(guān)實際變位的過程中發(fā)生了抖動,將無法記錄到準(zhǔn)確的開關(guān)變位的開始時間。如果要達(dá)到這一目的,需要連續(xù)記錄開關(guān)量變位的軌跡,然后再進(jìn)行開關(guān)量變位開始時間的確定。不過這種算法的CPU開銷比較大,B板的軟件設(shè)計沒有采用這種算法??紤]到干擾信號的偶然性,又有硬件濾波電路的配合,圖6所示的算法是一種行之有效的好方法。
開關(guān)量信號采樣數(shù)據(jù)處理任務(wù)主要完成將BI定時中斷采集服務(wù)程序采集到的開關(guān)量變位信息轉(zhuǎn)換成SOE記錄,并添加到SOE隊列之中,處理算法如圖7所示。該算法主要實現(xiàn)了兩項功能:SOE隊列元素的時間修正和SOE隊列操作。由于BI中斷程序記錄的BI變位時間是去抖動判別確認(rèn)時的時間,因此生成SOE記錄時要將該時間修正到BI開始變位的時間。SOE隊列操作就是將SOE元素添加到SOE隊列之中,在添加SOE元素時,如果隊列已滿,需要將最早的SOE元素刪除,再將新生成的SOE元素添加到隊列之中。正常情況下,M板每O.5秒與B通信一次,召喚B板采集生成的開關(guān)最信息,根據(jù)現(xiàn)場經(jīng)驗,即便開關(guān)量變位發(fā)生雪崩效應(yīng),16路BI在0.5秒之內(nèi)也不會產(chǎn)生64個SOE記錄,軟件實現(xiàn)時設(shè)置的SOE隊列的長度為64。當(dāng)然,如果發(fā)生M板與B板的通信長期中斷,SOE隊列會有溢出發(fā)生,這種情況一般都是裝置故障,需要檢修予以排除。此外,BI變位信息和ISOE隊列的訪問操作與其它任務(wù)和中服務(wù)程序有互斥要求,需要使用臨界區(qū)加以保護(hù)。
3 結(jié)論
裝置定型開發(fā)完成之后,在國電北侖電廠三期、中山嘉明電廠二期UPS電源監(jiān)控和戶縣惠安化工廠19口水井的馬達(dá)自動控制中投入使用,運(yùn)行結(jié)果表明,B板開關(guān)量信號采集的準(zhǔn)確性、事件順序記錄分辨率與實時性等性能指標(biāo)符合相關(guān)標(biāo)準(zhǔn)的要求,運(yùn)行穩(wěn)定可靠,達(dá)到了預(yù)期的設(shè)計目的。
評論