歐習(xí)洋,王新華,侯興哲,劉金濤,張進(jìn),陳堅(jiān)
(1.國(guó)網(wǎng)重慶市電力公司電力科學(xué)研究院,重慶401123;2.深圳市中電電力技術(shù)股份有限公司,廣東 深圳518040)
作為智能電網(wǎng)最基礎(chǔ)、最關(guān)鍵的設(shè)備之一,電能表逐步從傳統(tǒng)意義上的單一功能的電能計(jì)量器具,發(fā)展成為集電能計(jì)量、用電信息上傳、費(fèi)控、事件監(jiān)測(cè)與記錄、負(fù)荷記錄、防竊電、互動(dòng)用電等多種功能于一體的智能終端設(shè)備。運(yùn)行經(jīng)驗(yàn)表明,軟件復(fù)雜度越高,其故障率也越高。據(jù)統(tǒng)計(jì),多功能電表、負(fù)控終端的所有故障中,軟件方面的缺陷占到七成以上[1],給現(xiàn)場(chǎng)的運(yùn)行管理帶來(lái)極大的困難。而且,未來(lái)隨著科技的發(fā)展及電網(wǎng)能源結(jié)構(gòu)調(diào)整的變化,電能表的智能化要求將會(huì)越來(lái)越高,導(dǎo)致軟件功能更為復(fù)雜、應(yīng)用更為靈活[2]。
電能表軟件可劃分為計(jì)量模塊與計(jì)量管理模塊,前者完成核心的計(jì)量及基本電量測(cè)量功能,后者完成數(shù)據(jù)儲(chǔ)存管理、費(fèi)控、顯示、通信等功能。其中,計(jì)量模塊的功能相對(duì)穩(wěn)定,計(jì)量管理模塊則朝著智能化的方向發(fā)展,功能變得越來(lái)越復(fù)雜與靈活?,F(xiàn)有電能表計(jì)量模塊基本上采用簡(jiǎn)單的單片機(jī)系統(tǒng)架構(gòu),由一個(gè)主循環(huán)加若干中斷組成,所有程序編譯成一個(gè)可執(zhí)行文件燒錄到單片機(jī)中執(zhí)行[3-4]。這種軟件架構(gòu)缺乏對(duì)各個(gè)功能模塊的有序管理,當(dāng)軟件功能較多時(shí),無(wú)法保證主循環(huán)各個(gè)任務(wù)的實(shí)時(shí)響應(yīng)、優(yōu)先級(jí)管理,任務(wù)間數(shù)據(jù)配合處理出錯(cuò)的概率也高;而且各個(gè)任務(wù)模塊高度耦合,任一模塊的變更或擴(kuò)展對(duì)其它模塊影響很大,靈活性差。這些缺陷使其在應(yīng)對(duì)電能表智能化情況下功能越來(lái)越復(fù)雜、靈活性越來(lái)越高等要求方面愈加吃力。
為解決上述問(wèn)題,本文利用嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)在任務(wù)調(diào)度管理等方面的優(yōu)勢(shì),研究設(shè)計(jì)了一種新型的、基于嵌入式RTOS的電能表。
本文所設(shè)計(jì)的基于嵌入式RTOS的電能表,產(chǎn)品定位為高精度、帶電能質(zhì)量監(jiān)測(cè)功能的多功能智能電能表(以下簡(jiǎn)稱電能表),硬件架構(gòu)采用ARM+DSP的雙CPU架構(gòu),其中DSP完成模擬通道采樣及計(jì)量、電能質(zhì)量的計(jì)算分析,ARM完成數(shù)據(jù)計(jì)算、數(shù)據(jù)存儲(chǔ)、顯示、通信等功能,軟件總體架構(gòu)如圖1所示。
圖1 軟件總體架構(gòu)圖Fig.1 Overall structure diagram of software
計(jì)量模塊全部在DSP中運(yùn)行,軟件上采用簡(jiǎn)單的單片機(jī)系統(tǒng);其它內(nèi)核模塊、主應(yīng)用模塊、擴(kuò)展應(yīng)用模塊在ARM中運(yùn)行,采用嵌入式實(shí)時(shí)操作系統(tǒng)。電能表上電后,內(nèi)核模塊率先啟動(dòng)運(yùn)行,完成硬件初始化后,發(fā)送啟動(dòng)命令給DSP中的計(jì)量模塊使其先行運(yùn)行起來(lái),之后啟動(dòng)ARM的主應(yīng)用模塊及擴(kuò)展應(yīng)用模塊。鑒于本文主要探討的是嵌入式RTOS的研究與應(yīng)用,故以下對(duì)計(jì)量模塊的內(nèi)容不進(jìn)行細(xì)述。
在進(jìn)行具體軟件設(shè)計(jì)之前,需要先選擇合適的嵌入式RTOS。目前業(yè)內(nèi)廣泛使用的嵌入式RTOS有很多,典型如 VxWorks、uClinux、QNX、uC/OS-II、eCOS等[5-6],需要結(jié)合硬件平臺(tái)、電能表的功能及性能要求等方面來(lái)綜合考慮與選擇,主要考慮如下指標(biāo):
(1)任務(wù)實(shí)時(shí)調(diào)度管理。要求具備優(yōu)良的任務(wù)調(diào)度能力,能夠精確分配任務(wù)執(zhí)行時(shí)間,并根據(jù)優(yōu)先級(jí)要求合理調(diào)配不同任務(wù)的執(zhí)行順序;
(2)同步與通信機(jī)制。要求具備豐富的進(jìn)程間通信機(jī)制,在保證各任務(wù)獨(dú)立執(zhí)行的同時(shí),能夠精確控制任務(wù)間的同步與數(shù)據(jù)交互;
(3)內(nèi)存管理。選擇具備支持MMU(存儲(chǔ)管理單元)的操作系統(tǒng),提供內(nèi)存保護(hù),將有效保證程序的可靠性和系統(tǒng)的穩(wěn)定性。
綜合上述要求,本設(shè)計(jì)選用的嵌入式RTOS為VxWorks,該操作系統(tǒng)是業(yè)內(nèi)公認(rèn)的實(shí)時(shí)性最好的嵌入式RTOS,以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中,在電力設(shè)備監(jiān)測(cè)、電力設(shè)備通信等場(chǎng)合也得到了廣泛的應(yīng)用[7-8]。
基于以上軟件總體架構(gòu)以及所選擇的嵌入式RTOS,以下詳細(xì)說(shuō)明各模塊的內(nèi)部軟件實(shí)現(xiàn)細(xì)節(jié),重點(diǎn)是闡述嵌入式RTOS在解決電能表復(fù)雜功能情況下如何去保證可靠性與靈活性的問(wèn)題。
內(nèi)核模塊是整個(gè)軟件系統(tǒng)運(yùn)行的中樞,本設(shè)計(jì)方案中內(nèi)核模塊實(shí)際整合了多個(gè)基礎(chǔ)模塊,包括引導(dǎo)模塊、操作系統(tǒng)內(nèi)核、應(yīng)用程序管理模塊、驅(qū)動(dòng)支持模塊,這些基礎(chǔ)模塊均與硬件平臺(tái)相關(guān),在產(chǎn)品的生命周期中,不論應(yīng)用功能如何升級(jí)或擴(kuò)展,這部分都是可以基本上維持不變的。各模塊說(shuō)明如下:
(1)引導(dǎo)模塊。采用uboot實(shí)現(xiàn),完成上電初始化,并引導(dǎo)啟動(dòng)操作系統(tǒng);
(2)操作系統(tǒng)內(nèi)核。提供軟件系統(tǒng)運(yùn)行基礎(chǔ)的內(nèi)存管理、任務(wù)調(diào)度、中斷處理等功能,通過(guò)對(duì)Vx-Works內(nèi)核裁剪得到;
(3)驅(qū)動(dòng)支持模塊。提供對(duì)硬件資源的訪問(wèn)接口,也就是俗稱的板級(jí)支持包(BSP),供其他模塊訪問(wèn)底層硬件資源的接口;
(4)應(yīng)用程序管理模塊。啟動(dòng)計(jì)量模塊、主應(yīng)用模塊、擴(kuò)展應(yīng)用模塊,并監(jiān)視這三個(gè)模塊的運(yùn)行情況,當(dāng)發(fā)現(xiàn)異常后重啟對(duì)應(yīng)模塊。
內(nèi)核模塊的上述設(shè)計(jì)方法,將軟件系統(tǒng)最底層的內(nèi)容徹底獨(dú)立出來(lái),其帶來(lái)的好處是,一方面,通過(guò)軟件分層,將底層的任務(wù)調(diào)度、硬件驅(qū)動(dòng)等封裝起來(lái),避免上層應(yīng)用程序誤操作帶來(lái)的風(fēng)險(xiǎn);另一方面,內(nèi)核模塊作為一個(gè)整體與硬件平臺(tái)綁定,在單獨(dú)升級(jí)應(yīng)用程序時(shí)該模塊并不需要更新,極大降低了程序維護(hù)的復(fù)雜度。
鑒于篇幅,以下僅對(duì)操作系統(tǒng)內(nèi)核組件裁剪、驅(qū)動(dòng)支持模塊的設(shè)計(jì)細(xì)節(jié)進(jìn)行詳細(xì)說(shuō)明。
VxWorks內(nèi)部自帶豐富的軟件資源,除包含任務(wù)調(diào)度管理、任務(wù)間通信、內(nèi)存管理、IO系統(tǒng)等操作系統(tǒng)基礎(chǔ)組件外,還包含網(wǎng)絡(luò)通信、文件系統(tǒng)、常見(jiàn)硬件驅(qū)動(dòng)等高級(jí)組件,可以根據(jù)實(shí)際情況進(jìn)行裁剪[9]。對(duì)于電能表而言,受上電啟動(dòng)時(shí)間的限制,裁剪后的目標(biāo)執(zhí)行文件應(yīng)盡可能小,所需裁剪內(nèi)容應(yīng)盡可能更多,但裁剪太多又可能導(dǎo)致系統(tǒng)不穩(wěn)定。根據(jù)本設(shè)計(jì)的要求,裁剪內(nèi)容及裁剪后的大小見(jiàn)表1所示。
表1 VxWorks組件裁剪表Tab.1 Exclusions of VxWorks components
經(jīng)實(shí)測(cè),裁剪后的VxWorks目標(biāo)執(zhí)行文件,在300 MHz主頻ARM芯片上加載啟動(dòng)時(shí)間為1 s,滿足設(shè)計(jì)要求。且經(jīng)長(zhǎng)時(shí)間運(yùn)行實(shí)測(cè),系統(tǒng)運(yùn)行穩(wěn)定。
上述內(nèi)容還可以根據(jù)實(shí)際需要進(jìn)行進(jìn)一步裁剪,例如一般電能表并不需要網(wǎng)絡(luò)通信,此時(shí)可以裁剪掉網(wǎng)絡(luò)組件,以及硬件類組件中的PHY、MII等,使整個(gè)內(nèi)核容量更小。
驅(qū)動(dòng)支持模塊包含了本設(shè)計(jì)電能表所需的各種硬件接口,為應(yīng)用程序訪問(wèn)硬件設(shè)備起到橋梁作用。每個(gè)硬件接口分配一個(gè)設(shè)備描述符,具備open、read、write、ioctl幾個(gè)控制接口,分別用于打開、讀取、寫入、配置操作[10]。本設(shè)計(jì)所包含的設(shè)備及其說(shuō)明見(jiàn)表2所示。
表2 驅(qū)動(dòng)設(shè)備表Tab.2 List of driver devices
主應(yīng)用模塊完成電能表所有基本功能,包括各種電能的計(jì)算、需量計(jì)算、凍結(jié)、事件記錄、數(shù)據(jù)存儲(chǔ)、負(fù)荷記錄等。根據(jù)VxWorks的特點(diǎn),將本模塊分為數(shù)據(jù)計(jì)算、參數(shù)管理、數(shù)據(jù)存儲(chǔ)、通信、顯示等幾個(gè)子模塊,每個(gè)子模塊通過(guò)一個(gè)獨(dú)立的實(shí)時(shí)任務(wù)進(jìn)程(real time process,簡(jiǎn)稱RTP)來(lái)實(shí)現(xiàn),每個(gè)進(jìn)程的程序運(yùn)行是相對(duì)獨(dú)立的,相互之間通過(guò)進(jìn)程間通信的方式來(lái)交換數(shù)據(jù)[11]。
(1)數(shù)據(jù)計(jì)算模塊是所有數(shù)據(jù)來(lái)源的基礎(chǔ),通過(guò)控制表2所述“/meas”設(shè)備來(lái)讀取計(jì)量模塊數(shù)據(jù),獲取總及分相的正向有功、反向有功、正向無(wú)功、反向無(wú)功等基礎(chǔ)電能數(shù)據(jù),以及當(dāng)前電壓、電流、功率、相角、頻率等基礎(chǔ)實(shí)時(shí)數(shù)據(jù);然后,利用這些數(shù)據(jù)進(jìn)行更深層次的計(jì)算處理,利用基礎(chǔ)電能數(shù)據(jù)計(jì)算得到組合有功電能、組合無(wú)功電能、四象限無(wú)功電能以及各費(fèi)率電能,利用基礎(chǔ)實(shí)時(shí)數(shù)據(jù)進(jìn)行需量計(jì)算、事件記錄、負(fù)荷記錄的分析處理,并通過(guò)操作系統(tǒng)的時(shí)鐘來(lái)控制結(jié)算、凍結(jié)數(shù)據(jù)的數(shù)據(jù)歸集匯總。數(shù)據(jù)計(jì)算模塊所生成的數(shù)據(jù),一方面直接提供給通信、顯示模塊進(jìn)行對(duì)外呈現(xiàn),另一方面提供給數(shù)據(jù)存儲(chǔ)模塊進(jìn)行固化保存;
(2)參數(shù)管理模塊提供對(duì)配置參數(shù)的集中管理,包括上電初始階段從數(shù)據(jù)存儲(chǔ)模塊獲取原始值,以及運(yùn)行期間接受通信模塊的參數(shù)修改命令,將修改后的參數(shù)傳遞給數(shù)據(jù)存儲(chǔ)模塊固化保存;
(3)數(shù)據(jù)存儲(chǔ)模塊集中管理所有針對(duì)非易失性存儲(chǔ)器的讀寫操作,響應(yīng)數(shù)據(jù)計(jì)算模塊、參數(shù)管理模塊的存儲(chǔ)要求,操作表2中的“/spifram”與“/spiflash”設(shè)備,完成電能、需量、事件記錄、凍結(jié)、負(fù)荷記錄等的存儲(chǔ)管理;
(4)通信、顯示模塊與常規(guī)非操作系統(tǒng)的軟件設(shè)計(jì)差異不大,只不過(guò)通信的收發(fā)操作需要使用表2中的“/comm”設(shè)備來(lái)完成,按鍵監(jiān)測(cè)、液晶顯示分別使用“/keyboard”、“/lcd”設(shè)備來(lái)完成。
上述模塊劃分方法帶來(lái)的好處是:其一,將復(fù)雜功能分解為簡(jiǎn)單模塊,降低軟件難度;其二,每個(gè)模塊可以獨(dú)立開發(fā)維護(hù),在完全不影響其它模塊的前提下可以單獨(dú)升級(jí)局部模塊的程序;最后,在擴(kuò)展新功能時(shí),舊有模塊無(wú)需做任何更改。這些優(yōu)勢(shì)從設(shè)計(jì)源頭降低了軟件出錯(cuò)的風(fēng)險(xiǎn),提高了軟件的健壯性、可靠性。
基于操作系統(tǒng)的應(yīng)用程序設(shè)計(jì)與常規(guī)單片機(jī)系統(tǒng)不同,其各個(gè)模塊的任務(wù)是獨(dú)立運(yùn)行的,通過(guò)操作系統(tǒng)的任務(wù)調(diào)度機(jī)制來(lái)實(shí)現(xiàn)任務(wù)的切換。
圖2 數(shù)據(jù)計(jì)算模塊流程圖Fig.2 Flowchart of data calculation module
模塊的流程設(shè)計(jì)包括兩種典型的方式,定時(shí)輪詢與中斷觸發(fā)。以數(shù)據(jù)計(jì)算模塊為例,采用定時(shí)輪詢方式,流程見(jiàn)圖2所示,該模塊完成數(shù)據(jù)初始化、注冊(cè)看門狗后,即進(jìn)入定時(shí)等待狀態(tài),每1 s定時(shí)時(shí)間到后依次進(jìn)行各項(xiàng)數(shù)據(jù)計(jì)算處理,處理完后再等待新的1 s定時(shí),如此循環(huán)反復(fù)。
中斷觸發(fā)方式以數(shù)據(jù)存儲(chǔ)模塊為例,流程圖見(jiàn)圖3所示。常規(guī)情況下模塊處于等待狀態(tài),當(dāng)收到外部存儲(chǔ)命令后才去執(zhí)行存儲(chǔ)操作。
圖3 數(shù)據(jù)存儲(chǔ)模塊流程圖Fig.3 Flowchart of data storage module
上述兩種典型流程設(shè)計(jì)方式,可以根據(jù)實(shí)際功能要求進(jìn)行選擇。對(duì)于周期性、實(shí)時(shí)性要求低的任務(wù),可選擇定時(shí)輪詢方式;對(duì)于突發(fā)性、實(shí)時(shí)性要求高的任務(wù),可選擇中斷觸發(fā)方式。
從上一節(jié)執(zhí)行流程可知,采用嵌入式RTOS后,各模塊任務(wù)的運(yùn)行相互獨(dú)立,要交互數(shù)據(jù),就需要使用進(jìn)程間同步與通信來(lái)完成。VxWorks支持的通信方式有共享內(nèi)存、消息隊(duì)列、信號(hào)量、互斥鎖、管道等[11],根據(jù)本項(xiàng)目模塊之間數(shù)據(jù)交換的特點(diǎn),本文的設(shè)計(jì)采用了共享內(nèi)存+消息隊(duì)列的方式來(lái)實(shí)現(xiàn),見(jiàn)圖4所示。圖中,“/sd_meas”、“/sd_params”為共享內(nèi)存,前者存放數(shù)據(jù)計(jì)算模塊生成的電能、瞬時(shí)測(cè)量數(shù)據(jù),后者存放參數(shù)管理模塊處理后的參數(shù)數(shù)據(jù);“/msg_meas”、“/msg_params”為消息隊(duì)列,分別用作“/sd_meas”與“/sd_params”數(shù)據(jù)的通知處理。具體程序?qū)崿F(xiàn)時(shí),采用先寫入共享內(nèi)存,再通過(guò)消息隊(duì)列通知的方式,以實(shí)現(xiàn)數(shù)據(jù)的異步處理。消息隊(duì)列內(nèi)帶參數(shù),用于對(duì)消息的內(nèi)部細(xì)節(jié)進(jìn)行補(bǔ)充說(shuō)明,例如圖3中的“收到數(shù)據(jù)存儲(chǔ)命令”,其命令即采用消息隊(duì)列的方式,其參數(shù)中包含了要存儲(chǔ)的數(shù)據(jù)類型。
圖4 進(jìn)程間數(shù)據(jù)通信示意圖Fig.4 Schematic diagram of inter-process data communication
上述主應(yīng)用模塊涵蓋了標(biāo)準(zhǔn)所要求的智能電能表的基本功能,而且由于采用模塊化的設(shè)計(jì)方法,也方便維護(hù)升級(jí),但還需要解決如下問(wèn)題:
(1)擴(kuò)展通信模塊的軟件實(shí)現(xiàn)。電能表可擴(kuò)展無(wú)線、藍(lán)牙、光纖等多種通信模塊,每一種通信模塊對(duì)應(yīng)的程序不一樣,目前一般采用將各種通信方式程序糅合在一起,通過(guò)參數(shù)選擇對(duì)應(yīng)通信程序的方式,使整個(gè)軟件系統(tǒng)非常復(fù)雜;
(2)定制化的軟件功能。隨著互動(dòng)用電要求的提高,用戶需要選擇定制的數(shù)據(jù)服務(wù),或由于地區(qū)上的差異,需要軟件上實(shí)現(xiàn)特殊的功能。如果針對(duì)每一種定制化需求開發(fā)一版程序,將導(dǎo)致大量人力物力浪費(fèi),且軟件本身因要兼容太多的情況,使得軟件質(zhì)量不可控。
為了解決上述靈活性問(wèn)題,本文的研究利用了嵌入式RTOS多任務(wù)機(jī)制、以及可以單獨(dú)加載模塊程序的特點(diǎn),設(shè)計(jì)了擴(kuò)展應(yīng)用模塊。見(jiàn)圖1所示,擴(kuò)展應(yīng)用模塊與主應(yīng)用模塊、內(nèi)核模塊相連,一方面,該模塊是對(duì)主應(yīng)用模塊的補(bǔ)充,可以利用其提供的數(shù)據(jù),進(jìn)行新的運(yùn)算處理,得到新的用戶所需要的數(shù)據(jù),或反向?qū)⑼獠繑?shù)據(jù)更新到主應(yīng)用模塊中;另一方面,該模塊可以操作底層內(nèi)核模塊的資源,控制硬件實(shí)現(xiàn)對(duì)外接口功能。
上述軟件模塊上的隔離仍然不夠徹底,為了充分保證擴(kuò)展應(yīng)用模塊的獨(dú)立性,需要實(shí)現(xiàn)物理介質(zhì)層次上的隔離。具體做法是,該模塊采用單獨(dú)編譯、單獨(dú)下載、單獨(dú)存儲(chǔ)的方式。見(jiàn)圖5所示,擴(kuò)展應(yīng)用程序固化在0x500000~0x600000的1 MB的空間內(nèi),與內(nèi)核模塊、計(jì)量模塊、主應(yīng)用模塊完全隔離。
圖5 程序存儲(chǔ)空間分配Fig.5 Storage space allocation of software parts
當(dāng)不需要擴(kuò)展通信模塊、或不需要定制化軟件功能時(shí),擴(kuò)展應(yīng)用模塊部分為空;針對(duì)每一種擴(kuò)展通信方式,開發(fā)單獨(dú)的擴(kuò)展應(yīng)用模塊,根據(jù)實(shí)際硬件配置自由選擇下載;當(dāng)需要定制化軟件功能時(shí),可以根據(jù)實(shí)際需求開發(fā)單獨(dú)的擴(kuò)展應(yīng)用程序。采用這種實(shí)現(xiàn)方式,既保持了傳統(tǒng)意義軟件功能的可靠性,又兼顧到了新技術(shù)、新需求應(yīng)用的靈活性。
將本文設(shè)計(jì)的基于嵌入式RTOS的智能電能表與基于單片機(jī)系統(tǒng)的進(jìn)行優(yōu)勢(shì)對(duì)比,列舉幾個(gè)典型項(xiàng)目見(jiàn)表3所述。對(duì)比可知,采用嵌入式RTOS在設(shè)計(jì)源頭上提升了軟件可靠性與應(yīng)用靈活性。
表3 嵌入式RTOS的設(shè)計(jì)優(yōu)勢(shì)Tab.3 Design superiorities of embedded RTOS
以下通過(guò)幾個(gè)典型測(cè)試用例進(jìn)一步說(shuō)明嵌入式RTOS的優(yōu)勢(shì):
(1)通過(guò)在局部軟件模塊中注入故障,測(cè)試其自動(dòng)恢復(fù)的能力。軟件運(yùn)行受環(huán)境條件的影響很大,測(cè)試時(shí)很難全部覆蓋,當(dāng)特定條件發(fā)生時(shí)可能存在程序“跑飛”現(xiàn)象。通過(guò)在其中一個(gè)模塊(以通信模塊為例)強(qiáng)行注入軟件故障來(lái)測(cè)試。對(duì)比測(cè)試可知,采用本文設(shè)計(jì)的電能表,當(dāng)故障發(fā)生時(shí),其它模塊功能仍運(yùn)行正常,例如顯示仍可正常查看,計(jì)量、測(cè)量數(shù)據(jù)正常,一段時(shí)間之后通信模塊被單獨(dú)重啟(通過(guò)軟件看門狗),此時(shí)如軟件故障的條件消失,則通信模塊恢復(fù)正常運(yùn)行,否則繼續(xù)重啟,在此期間其它任務(wù)均不受影響;采用單片機(jī)系統(tǒng)實(shí)現(xiàn)的電能表,故障發(fā)生時(shí),程序卡死,顯示無(wú)法操作,一段時(shí)間后整機(jī)重啟(通過(guò)硬件看門狗),在此期間計(jì)量、測(cè)量功能均失效;
(2)驗(yàn)證測(cè)試新任務(wù)單獨(dú)加載與更新時(shí),其它現(xiàn)有任務(wù)不受影響。具體測(cè)試方法是,編寫程序在初始化時(shí)先不加載某程序模塊,程序運(yùn)行后通過(guò)rtpS-pawn命令在控制臺(tái)再啟動(dòng)該模塊,測(cè)試加載期間其它任務(wù)功能均不受影響。這一點(diǎn)在單片機(jī)系統(tǒng)中是無(wú)法實(shí)現(xiàn)的。
本文提出了一種基于嵌入式RTOS的電能表軟件設(shè)計(jì)方案,將整個(gè)電能表軟件劃分為內(nèi)核模塊、計(jì)量模塊、主應(yīng)用模塊、擴(kuò)展應(yīng)用模塊幾個(gè)獨(dú)立的模塊,結(jié)合電能表的特點(diǎn),將內(nèi)核模塊進(jìn)行精簡(jiǎn)化設(shè)計(jì),并采用模塊化、層次化的設(shè)計(jì)思路,使電能表內(nèi)部軟件實(shí)現(xiàn)更加合理、有效。采用這種設(shè)計(jì)方式,既保證了電能表核心功能的穩(wěn)定、可靠性,同時(shí)也兼顧了軟件功能易于擴(kuò)展的靈活性。這些設(shè)計(jì)方法對(duì)于提升電能表在功能復(fù)雜情況下的軟件可靠性、解決特殊應(yīng)用場(chǎng)合的靈活性等方面提供了新的思路,并具有一定的參考價(jià)值。