基于ARM的開關(guān)量信號(hào)采集模板的設(shè)計(jì)
LPC2138的內(nèi)部本身集成有看門狗電路,但是根據(jù)作者多年從事電力系統(tǒng)自動(dòng)化產(chǎn)品的設(shè)計(jì)經(jīng)驗(yàn),由于CPU內(nèi)部WDT需要軟件編程啟動(dòng),在極端情況下,系統(tǒng)死機(jī)后該WDT不能對(duì)系統(tǒng)進(jìn)行恢復(fù)。為此,在進(jìn)行本模板設(shè)計(jì)時(shí),沒有使用LPC2138內(nèi)部的WDT,而是采用SP706S芯片專門擴(kuò)展了一個(gè)看門狗,用于系統(tǒng)“走死”后的自動(dòng)恢復(fù)。SP706S是一款專門的看門狗復(fù)位電路,其定時(shí)器延時(shí)的時(shí)間為1.6秒。電路設(shè)計(jì)方法是將SP706S的復(fù)位輸出引腳與LPC2138復(fù)位電路的人工復(fù)位引腳相連。由于LPC2138軟件下載的時(shí)間要大于1.6秒,硬件設(shè)計(jì)時(shí)設(shè)置了一個(gè)跳線器用于看門狗的使能/禁止,軟件下載時(shí)將跳線帽拔下,模板正常運(yùn)行時(shí)將跳線帽插上。B板的看門狗復(fù)位電路如圖4所示。
正常運(yùn)行時(shí),模板軟件的看門狗定時(shí)器任務(wù)將定時(shí)(1.6秒)清除SP706S的延時(shí)計(jì)數(shù)器,SP706S不會(huì)產(chǎn)生復(fù)位模板的信號(hào)。軟件“走死”后,由于該任務(wù)不再清WDT計(jì)數(shù)器,1.6秒之后,SP706S產(chǎn)生復(fù)位模板的信號(hào),模板重新啟動(dòng)運(yùn)行。
模板軟件運(yùn)行過程中,軟件的其它任務(wù)和異步串行通信收發(fā)器也可能局部“走死”,對(duì)于這種局部“走死”的情況,最好是局部恢復(fù)而不是模板復(fù)位。為此,看門狗定時(shí)器任務(wù)設(shè)計(jì)時(shí)采用了軟硬看門狗級(jí)聯(lián)工作的模式,即硬件看門狗監(jiān)視WDT任務(wù)的運(yùn)行,同時(shí)設(shè)計(jì)多個(gè)軟件看門狗定時(shí)器監(jiān)視其它任務(wù)的運(yùn)行和異步串口的收發(fā),WDT任務(wù)“走死”后復(fù)位模板,其它監(jiān)視對(duì)象“走死”后進(jìn)行局部初始化恢復(fù)處理,從而實(shí)現(xiàn)軟件的可靠性設(shè)計(jì)。
2 軟件設(shè)計(jì)
模板軟件采用μC/OS—II作為操作系統(tǒng),軟件的層次結(jié)構(gòu)如圖5所示。模板的應(yīng)用軟件設(shè)計(jì)主要工作包括目標(biāo)板底層驅(qū)動(dòng)程序的編寫和模板I/O功能的設(shè)計(jì)編程兩部分工作。
目標(biāo)板底層驅(qū)動(dòng)主要包括1ms開關(guān)量定時(shí)采集中斷和兩個(gè)異步串口中斷的中斷服務(wù)程序的編寫,前者響應(yīng)中斷后讀取16路開關(guān)量輸入信號(hào)的狀態(tài),后者完成異步串行通信收發(fā)器的控制與數(shù)據(jù)收發(fā)。
模板應(yīng)用軟件設(shè)計(jì)主要包括4個(gè)任務(wù)模塊的編寫,分別是看門狗定時(shí)器任務(wù)、開關(guān)量信號(hào)采樣數(shù)據(jù)處理、與M板數(shù)據(jù)通信協(xié)議處理、VTlOO超級(jí)終端命令處理等。
限于論文的篇幅,本文對(duì)模板軟件實(shí)現(xiàn)的細(xì)節(jié)不作詳細(xì)介紹,僅將帶有去抖動(dòng)功能的開關(guān)量采集算法提取出來進(jìn)行介紹。
開關(guān)量采集軟件部分的主要任務(wù)是讀取開關(guān)量當(dāng)前的實(shí)時(shí)狀態(tài)并記錄開關(guān)量變位發(fā)生的時(shí)標(biāo)。在電力系統(tǒng)自動(dòng)化領(lǐng)域,帶變位時(shí)標(biāo)的開關(guān)信息稱為事件順序記錄(SOE),主要用于判別開關(guān)量之間變位的先后順序,分析事故發(fā)生的原因。軟件實(shí)現(xiàn)時(shí)SOE記錄保存在隊(duì)列之中。
為了保證系統(tǒng)時(shí)間的統(tǒng)一性,裝置M板的時(shí)間由上位主站或GPS授時(shí)鐘統(tǒng)一對(duì)時(shí),M板再給各B板對(duì)時(shí),然后M板和B板采用各自的定時(shí)器自動(dòng)守時(shí)。B板的時(shí)間格式為“秒計(jì)數(shù)+毫秒計(jì)數(shù)”,秒計(jì)數(shù)是相對(duì)2000年0時(shí)0分O秒的計(jì)數(shù)值,毫秒計(jì)數(shù)的范圍為0—999,達(dá)到1000時(shí)自動(dòng)清零并向秒計(jì)數(shù)進(jìn)位。由于裝置晶振的守時(shí)精度較差,為了保證lms的SOE分辨率,每5分鐘應(yīng)進(jìn)行一次對(duì)時(shí)操作。
在開關(guān)量采集過程中,由于受到裝置運(yùn)行現(xiàn)場(chǎng)各種干擾源的影響,經(jīng)常發(fā)生讀到的開關(guān)量狀態(tài)與監(jiān)控對(duì)象運(yùn)行狀態(tài)不一致的情況,造成EMS主站監(jiān)控系統(tǒng)產(chǎn)生大量的虛假告警信息,事件打印機(jī)不停地打印,嚴(yán)重影響了系統(tǒng)的實(shí)用化。因此剔除這些虛假的開關(guān)量抖動(dòng)信息也是軟件設(shè)計(jì)的一項(xiàng)重要的工作。
針對(duì)工業(yè)現(xiàn)場(chǎng)監(jiān)控對(duì)象開關(guān)量狀態(tài)的特性以及干擾抖動(dòng)的特點(diǎn),開關(guān)量狀態(tài)大都采用繼電器的觸點(diǎn)指示,開關(guān)量本身從0→1或從l→0的機(jī)械變位時(shí)間一般都比較長(zhǎng)(≥80ms),而干擾抖動(dòng)的時(shí)問非常短(一般4ms),SOE又是用來判定不同開關(guān)量之間變位的先后順序,因此,采用連續(xù)多次采集到的開關(guān)量狀態(tài)來判定BI是否真正變位并不影響開關(guān)量采集的實(shí)時(shí)性和SOE分辨率。事實(shí)上,根據(jù)以往現(xiàn)場(chǎng)工程的經(jīng)驗(yàn),采用連續(xù)4次(4ms)采樣進(jìn)行抖動(dòng)判斷即可達(dá)到非常不錯(cuò)的效果,可以讓EMS/SCADA系統(tǒng)的事件打印機(jī)安靜下來。根據(jù)遠(yuǎn)動(dòng)終端檢測(cè)中心的建議,抖動(dòng)延時(shí)判斷的最大時(shí)間可以達(dá)到100ms。一般情況下,抖動(dòng)延時(shí)判斷時(shí)間取lO~20ms就可以了。由于B板開關(guān)量信號(hào)采樣數(shù)據(jù)處理任務(wù)采用OS滴答(Tick)周期(10ms)啟動(dòng)執(zhí)行,為了防止保存BI變位信息的緩沖區(qū)發(fā)生覆蓋(overlap)訪問沖突,抖動(dòng)延時(shí)判斷的取值應(yīng)大于10ms,軟件確省的取值為15ms。
評(píng)論