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