作者:黃國兵;馮龍喜;王軍平;馮樂雯
本文設計的開關量信號采集模板是一款嵌入式SCADA系統(tǒng)的一種插件,稱為智能數(shù)字量采集板(IntelligentBinary Input Board,簡稱B板)。該裝置主要用于電力系統(tǒng)等工業(yè)過程控制領域的實時數(shù)據(jù)采集與控制。
在絕大多數(shù)工業(yè)測控系統(tǒng)中都不可避免地會涉及開關量采集的問題,開關量信號采樣的準確可靠性對于整個測控系統(tǒng)能否正常穩(wěn)定地工作,起著重要的作用。從以往的工作經(jīng)驗來看,開關量信號采集的關鍵問題就是去抖動,避免錯誤的開關量變位信號困擾系統(tǒng)的使用者。所謂開關量信號抖動就是由于開關量信號的采樣通道受到干擾后裝置采集到了錯誤的開關狀態(tài)并上報給主站系統(tǒng),產(chǎn)生許多莫須有的告警信息,讓系統(tǒng)的使用者難以辨別事件的真?zhèn)?,影響系統(tǒng)的實用性。在電力系統(tǒng)自動化行業(yè),開關量的事件順序記錄分辨率的指標要求是1“2ms,繁瑣的硬件去抖動電路和軟件延時去抖動算法會破壞系統(tǒng)的實時性指標。為此,本文提出了一種快速的去抖動算法,與模板上硬件去抖動濾波電路配合,較好地解決的上述問題。
本文主要就B板的軟硬件設計原理與實現(xiàn)方法以及去抖動算法進行介紹。
1 硬件設計
1.1 總體設計
B板以Philips LPC2138 32位ARM微控制器為核心,完成16通道開關量的數(shù)據(jù)采集。作為嵌入式SCADA系統(tǒng)的一種插件,板上設計了一路RS422異步串行通信接口,通過該接口與裝置的通信與管理模板(Communication andManagement Board,簡稱M板)通信,將采集生成的實時開關量信息上報給M板。由于M板要通過RS422總線管理多塊II0板工作,M板采用主從方式實現(xiàn)與II0板的通信連接,為此各IIO板都設計了ID標識地址進行身份確定。B板的ID標識地址采用8位雙排跳線器設置,標識地址范圍為0lH”FFH。此外,模板還設計了一路為RS232接口,用于模板的檢測與調(diào)試,以及LPC2138的軟件下載。調(diào)試RS232接口是一個標準的VTl00超級終端接口,通過該接口可以與PC機進行通信連接,使用Windows的超級終端仿真軟件可以十分方便地對該模板進行調(diào)試和檢測。同時該串口也是LPC2138軟件的下載接口,將跳線JPl02和JPl03跳接上,即可通過專用軟件將編譯連接生成的軟件下載到LPC2138的FLASH存儲器。
板上開關量過程通道包括BI回路信號調(diào)理與濾波電路、光電隔離電路、開關量狀態(tài)訪問電路。由于LPC2138的I/0引腳的數(shù)量有限,硬件設計時采用部分I/O引腳作為CS片選信號,部分I/O仿真8位數(shù)據(jù)總線對外部訪問端口進行分時操作。
為了保證模板運行的穩(wěn)定可靠性,B板設計有硬件看門狗電路(HWDT),軟件還設計了軟看門狗定時監(jiān)視器(SWDT)。軟硬看門狗協(xié)同工作,在軟件“走飛”或局部“走死”之后自動恢復模板運行。
B板的工作原理如圖1所示。
1.2 LP02138的I/0擴展
LPC2138是一款總線不出芯片的片上系統(tǒng)(SoC),主要通過I/O引腳對外部電路進行訪問。本文設計的B板有16路BI輸入狀態(tài)、8位ID標識地址、異步串口和HWDT等都需要使用I/O資源,LPC2138的I/O引腳不夠用。為此,硬件設計時通過對LPC2138的I/0引腳進行組合使用,實現(xiàn)了對外部電路的分時訪問。具體實現(xiàn)方法是,采用部分I/O引腳作為CS信號,再用8個I/0模仿8位地址總線DBO“7對外部端口進行訪問。這種方法的優(yōu)點在于既可減少I/0資源的使用,PCB布線也容易許多。采用這種方法進行I/O擴展需要注意兩個方面的問題:①由于LPC2138的I/0引腳在啟動時多為低狀態(tài),此時會導致CS信號都使能,造成沖突,需要將用做CS信號的I/0引腳上拉;②軟件訪問外部電路時,要通過設置I/O狀態(tài)模擬外部電路的訪問時序。B板LPC2138的I/0擴展如圖2所示。
1.3 開關量輸入過程設計
開關量輸入過程通道的設計相對簡單,首先要根據(jù)光偶的驅(qū)動電流確定輸入電阻的大小,并選擇一個電容與該輸入電阻構(gòu)成一個RC濾波回路,過濾過程通道上的毛刺干擾;為了防止用戶接線時把外部驅(qū)動回路的電源極性接反導致光偶燒壞,在回路上反向接入一個二極管對其進行保護;為了適應外部輸入回路多樣性(如有源脈沖信號和無源干接點信號不能共地),硬件設計時將16路開關量分為4組,每組一個公共端。開關量輸入信號與LPC2138的接口采用HC245實現(xiàn),軟件設置片選使能,將BI狀態(tài)放入數(shù)據(jù)總線,讀取BI狀態(tài),然后設置片選禁止,完成BI的采集工作。開關量輸入過程通道如圖3所示。
1.4 硬件看門狗復位電路
LPC2138的內(nèi)部本身集成有看門狗電路,但是根據(jù)作者多年從事電力系統(tǒng)自動化產(chǎn)品的設計經(jīng)驗,由于CPU內(nèi)部WDT需要軟件編程啟動,在極端情況下,系統(tǒng)死機后該WDT不能對系統(tǒng)進行恢復。為此,在進行本模板設計時,沒有使用LPC2138內(nèi)部的WDT,而是采用SP706S芯片專門擴展了一個看門狗,用于系統(tǒng)“走死”后的自動恢復。SP706S是一款專門的看門狗復位電路,其定時器延時的時間為1.6秒。電路設計方法是將SP706S的復位輸出引腳與LPC2138復位電路的人工復位引腳相連。由于LPC2138軟件下載的時間要大于1.6秒,硬件設計時設置了一個跳線器用于看門狗的使能/禁止,軟件下載時將跳線帽拔下,模板正常運行時將跳線帽插上。B板的看門狗復位電路如圖4所示。
正常運行時,模板軟件的看門狗定時器任務將定時(模板軟件運行過程中,軟件的其它任務和異步串行通信收發(fā)器也可能局部“走死”,對于這種局部“走死”的情況,最好是局部恢復而不是模板復位。為此,看門狗定時器任務設計時采用了軟硬看門狗級聯(lián)工作的模式,即硬件看門狗監(jiān)視WDT任務的運行,同時設計多個軟件看門狗定時器監(jiān)視其它任務的運行和異步串口的收發(fā),WDT任務“走死”后復位模板,其它監(jiān)視對象“走死”后進行局部初始化恢復處理,從而實現(xiàn)軟件的可靠性設計。
2 軟件設計
模板軟件采用μC/OS—II作為操作系統(tǒng),軟件的層次結(jié)構(gòu)如圖5所示。模板的應用軟件設計主要工作包括目標板底層驅(qū)動程序的編寫和模板I/O功能的設計編程兩部分工作。
目標板底層驅(qū)動主要包括1ms開關量定時采集中斷和兩個異步串口中斷的中斷服務程序的編寫,前者響應中斷后讀取16路開關量輸入信號的狀態(tài),后者完成異步串行通信收發(fā)器的控制與數(shù)據(jù)收發(fā)。
模板應用軟件設計主要包括4個任務模塊的編寫,分別是看門狗定時器任務、開關量信號采樣數(shù)據(jù)處理、與M板數(shù)據(jù)通信協(xié)議處理、VTlOO超級終端命令處理等。
限于論文的篇幅,本文對模板軟件實現(xiàn)的細節(jié)不作詳細介紹,僅將帶有去抖動功能的開關量采集算法提取出來進行介紹。
開關量采集軟件部分的主要任務是讀取開關量當前的實時狀態(tài)并記錄開關量變位發(fā)生的時標。在電力系統(tǒng)自動化領域,帶變位時標的開關信息稱為事件順序記錄(SOE),主要用于判別開關量之間變位的先后順序,分析事故發(fā)生的原因。軟件實現(xiàn)時SOE記錄保存在隊列之中。
為了保證系統(tǒng)時間的統(tǒng)一性,裝置M板的時間由上位主站或GPS授時鐘統(tǒng)一對時,M板再給各B板對時,然后M板和B板采用各自的定時器自動守時。B板的時間格式為“秒計數(shù)+毫秒計數(shù)”,秒計數(shù)是相對2000年0時0分O秒的計數(shù)值,毫秒計數(shù)的范圍為0—999,達到1000時自動清零并向秒計數(shù)進位。由于裝置晶振的守時精度較差,為了保證lms的SOE分辨率,每5分鐘應進行一次對時操作。
在開關量采集過程中,由于受到裝置運行現(xiàn)場各種干擾源的影響,經(jīng)常發(fā)生讀到的開關量狀態(tài)與監(jiān)控對象運行狀態(tài)不一致的情況,造成EMS主站監(jiān)控系統(tǒng)產(chǎn)生大量的虛假告警信息,事件打印機不停地打印,嚴重影響了系統(tǒng)的實用化。因此剔除這些虛假的開關量抖動信息也是軟件設計的一項重要的工作。
針對工業(yè)現(xiàn)場監(jiān)控對象開關量狀態(tài)的特性以及干擾抖動的特點,開關量狀態(tài)大都采用繼電器的觸點指示,開關量本身從0→1或從l→0的機械變位時間一般都比較長(≥80ms),而干擾抖動的時問非常短(一般為了準確記錄開關量變位的時間,通常情況下采用定時中斷來掃描讀取BI狀態(tài),B板的掃描周期為lms,并采用該中斷進行SOE時鐘的守時,掃描周期為1ms時SOE分辨率可達到2ms。沒有去抖動功能常的開關量采集流程為:SOE時鐘增長1ms;讀取BI的狀態(tài);判斷開關量是否變位,如果有變位,則記錄變位信息,包括BI的點序號、狀態(tài)、變位時間和變位標記等。為了判別開關量是否發(fā)生抖動,軟件在變位信息結(jié)構(gòu)體中增加了一個抖動計數(shù)器成員變量,如果開關量有變位,先不記錄變位信息,而是將抖動計數(shù)器加1,判斷是否達到抖動延時檢測時間,如果達到,則確認開關量發(fā)生了變位;如果開關量沒有變位,則將抖動計數(shù)器清零。這樣如果一個開關量在抖動延時判別時間之內(nèi)發(fā)生變位又恢復至原先的狀態(tài),軟件將不記錄其發(fā)生的變位信息,從而達到取抖動的目的。B板帶有去抖動功能的1ms開關量定時掃描中斷服務程序的算法如圖6所示。
比較帶抖動功能和不帶抖動功能的開關量采集算法,增加去抖動功能時,只增加了一個抖動計數(shù)器變量,在記錄開關量變位信息之前,對該變位信息進行延時確認,增加的CPU程序執(zhí)行代價非常小,沒有影響中斷服務程序的正常運行。因此,該算法速度快,效果也十分理想。該算法的缺陷在于如果開關實際變位的過程中發(fā)生了抖動,將無法記錄到準確的開關變位的開始時間。如果要達到這一目的,需要連續(xù)記錄開關量變位的軌跡,然后再進行開關量變位開始時間的確定。不過這種算法的CPU開銷比較大,B板的軟件設計沒有采用這種算法??紤]到干擾信號的偶然性,又有硬件濾波電路的配合,圖6所示的算法是一種行之有效的好方法。
開關量信號采樣數(shù)據(jù)處理任務主要完成將BI定時中斷采集服務程序采集到的開關量變位信息轉(zhuǎn)換成SOE記錄,并添加到SOE隊列之中,處理算法如圖7所示。該算法主要實現(xiàn)了兩項功能:SOE隊列元素的時間修正和SOE隊列操作。由于BI中斷程序記錄的BI變位時間是去抖動判別確認時的時間,因此生成SOE記錄時要將該時間修正到BI開始變位的時間。SOE隊列操作就是將SOE元素添加到SOE隊列之中,在添加SOE元素時,如果隊列已滿,需要將最早的SOE元素刪除,再將新生成的SOE元素添加到隊列之中。正常情況下,M板每O.5秒與B通信一次,召喚B板采集生成的開關最信息,根據(jù)現(xiàn)場經(jīng)驗,即便開關量變位發(fā)生雪崩效應,16路BI在0.5秒之內(nèi)也不會產(chǎn)生64個SOE記錄,軟件實現(xiàn)時設置的SOE隊列的長度為64。當然,如果發(fā)生M板與B板的通信長期中斷,SOE隊列會有溢出發(fā)生,這種情況一般都是裝置故障,需要檢修予以排除。此外,BI變位信息和ISOE隊列的訪問操作與其它任務和中服務程序有互斥要求,需要使用臨界區(qū)加以保護。
3 結(jié)論
裝置定型開發(fā)完成之后,在國電北侖電廠三期、中山嘉明電廠二期UPS電源監(jiān)控和戶縣惠安化工廠19口水井的馬達自動控制中投入使用,運行結(jié)果表明,B板開關量信號采集的準確性、事件順序記錄分辨率與實時性等性能指標符合相關標準的要求,運行穩(wěn)定可靠,達到了預期的設計目的。
責任編輯:gt
-
微控制器
+關注
關注
48文章
7467瀏覽量
150882 -
ARM
+關注
關注
134文章
9030瀏覽量
366547 -
嵌入式
+關注
關注
5060文章
18980瀏覽量
302254
發(fā)布評論請先 登錄
相關推薦
評論