一種基于操作系統的電能表軟件在線升級方法及系統的制作方法
【專利摘要】本發明公開了一種基于操作系統的電能表軟件在線升級方法,首先啟動升級握手過程,然后進行安全驗證,再進行程序傳輸、程序校驗、程序固化和程序加載;最后升級確認。本發明所提供的基于操作系統的電能表軟件架構及其在線升級的方法,兼顧了可靠性與靈活性兩方面要求,將法制計量模塊獨立處理,確保核心的計量功能不受其它模塊更新、失效的影響,通過軟件在線升級,可以方便地實現電能表軟件的在線更新,而且對非法制計量相關軟件升級時,并不會影響計量功能的正確運行,在保證可靠性的基礎上,極大地提升了電能表應用的靈活性。
【專利說明】
一種基于操作系統的電能表軟件在線升級方法及系統
技術領域
[0001]本發明涉及電能表領域,特別是一種基于操作系統的電能表軟件在線升級方法。
【背景技術】
[0002]目前電能表一旦掛網運行,其軟件是不允許在線升級的,除非拆除返廠重新燒錄程序并重新校驗。這一點無法適應運行過程中不斷變化的需求。尤其隨著互聯網+、物聯網技術的發展,大數據、云平臺等概念的提出,電能表要融入大這個大的技術環境中,其軟件靈活性要求越來越高。要求電能表在滿足基本計量、抄表功能外,還能夠在電能表運行過程中根據需求變化升級軟件、或下載新的功能組件,即需要具備在線升級功能。
[0003]單純具備在線升級功能仍然是不夠的,由于目前電能表軟件架構基本都是采用單片機系統,其軟件是一個整體,升級期間必須先停止所有功能,等所有程序升級完畢后再重新啟動,這樣勢必造成在線升級期間電能停止累計,而這是無法接受的。
[0004]為此,需要先研究一種新的電能表軟件架構,這種軟件架構支持軟件在線升級,而且在對非計量相關軟件升級期間不影響計量的正常運行。
[0005]嵌入式操作系統因其具備的多任務、模塊化管理、易于擴展、資源豐富等特性,廣泛應用在各行各業,也用在電能表采集器領域,但在電能表中的應用未見。將嵌入式操作系統應用在電能表中,可以有效解決軟件靈活升級的問題,但要同時兼顧電能表的精度、電能可靠性問題,則需要根據電能表的特性進行針對性處理。
[0006]因此,需要一種基于操作系統的電能表軟件在線升級方法。
【發明內容】
[0007]本發明的目的就是提供一種基于操作系統的電能表軟件在線升級方法。
[0008]本發明的目的是通過這樣的技術方案實現的:
[0009]本發明提供的一種基于操作系統的電能表軟件在線升級方法,包括以下步驟:
[0010]SI升級握手:上位機發出軟件升級請求報文,并選擇所要升級的模塊;電能表接收到升級請求后,判斷升級請求報文格式及要升級的模塊是否正確,判斷正確后認為握手成功,回復正確的響應報文,并進入下一步驟S2,否則直接退出升級過程;
[0011]S2安全驗證:上位機發出升級密鑰,電能表驗證升級密鑰是否與預設值相符;如果符合,則通過安全驗證并進入下一步驟S3;否則直接退出升級過程;
[0012]S3程序傳輸:上位機將要升級的目標執行程序傳輸給電能表,電能表接收后先緩存到RAM中;上位機發出程序傳輸完畢報文,所述報文帶有整個目標執行程序的CRC校驗碼;
[0013]S4斷點續傳:電能表等待新的程序傳輸報文,收到后從上次斷點位置開始繼續緩存新收到的程序數據,直到收到的程序傳輸完畢;
[0014]S5程序校驗:電能表根據接收到的目標執行程序的長度,計算RAM緩存區中程序的CRC校驗碼,核對是否與上位機發過來的程序傳輸完畢報文中的CRC校驗碼一致,如核對一致則并進入下一步驟S6,否則直接退出整個升級過程;
[0015]S6程序固化:電能表將RAM緩存區的程序復制到程序存儲區對應區域地址中;判斷程序大小,如超過限定值則直接退出整個升級過程;如果未超過,則固化程序;
[0016]S7程序加載:電能表根據本次升級的模塊類型,重新加載升級后的程序并運行;
[0017]S8升級確認:升級后的程序重新加載后,重新計算FLASH中的程序CRC校驗碼,并將該CRC校驗碼反饋給上位機;上位機收到該CRC校驗碼后,核對與下載的程序CRC校驗碼是否一致,如果核對一致則認為升級成功,升級過程結束,否則認為升級失敗。
[0018]進一步,所述步驟SI中選擇的升級模塊包括法制計量模塊、內核模塊、主應用模塊和擴展應用模塊中的任一種模塊。
[0019]進一步,所述步驟S2中的安全驗證包括軟件驗證與硬件驗證兩個方面;所述軟件驗證是指密鑰驗證,通過上位機發出升級密鑰,電能表驗證密鑰是否與預設值相符來實現密鑰驗證過程;所述硬件驗證是指當電能表處于端蓋打開狀態時,對升級法制計量模塊和內核模塊進行驗證過程。
[0020]進一步,所述步驟S3中的上位機將要升級的目標執行程序傳輸給電能表,具體按照以下步驟來實現:
[0021 ]根據最大數據報文長度將整個目標執行程序分為連續的多個報文;依次傳輸所有報文;直到傳輸完畢。
[0022]進一步,所述步驟S7中的程序加載是根據升級的模塊類型來實現的,如果升級的模塊是法制計量模塊和內核模塊,則采用整個裝置自動復位的方式重新加載;如果升級的模塊是主應用模塊和擴展應用模塊,則通過內核模塊重新加載這兩個模塊的程序。
[0023]還包括一種基于操作系統的電能表軟件在線升級系統,包括內核模塊以及分別與內核模塊連接的法制計量模塊、主應用模塊和擴展應用模塊;
[0024]所述內核模塊,用于電能表上電初始化與管理整個電能表的軟硬件資源;
[0025]所述法制計量模塊,用于實時采集測量電能數據并處理電能數據;
[0026]所述主應用模塊,用于存儲若干處理電能數據模塊并通過處理電能數據模塊來處理電能數據;
[0027]所述擴展應用模塊,用于自定義電能數據處理模塊。
[0028]進一步,所述內核模塊包括引導模塊、操作系統內核、應用程序管理模塊和驅動支持模塊;
[0029]所述引導模塊用于完成上電初始化,并引導啟動操作系統內核;
[0030]所述操作系統內核,用于提供操作系統運行基礎的內存管理、任務調度、中斷處理過程;
[0031]所述應用程序管理模塊,用于啟動并監視法制計量模塊、主應用模塊和擴展應用模塊的運行狀態,并自動更新監測異常運行的模塊;
[0032]所述驅動支持模塊,提供訪問底層硬件資源接口,供法制計量模塊、主應用模塊和擴展應用模塊使用。
[0033]進一步,所述主應用模塊包括數據計算線程單元、數據存儲線程單元、顯示線程單元和通信線程單元;
[0034]所述數據計算線程單元,用于讀取法制計量模塊的電能數據、實時測量數據,根據實時測量數據來計算需量、進行負荷記錄處理,監視判斷是否發生失壓、失流事件并進行記錄,以共享內存的方式提供給數據存儲線程單元、顯示線程單元和通信線程單元使用;
[0035]所述數據存儲線程單元,用于接收數據計算線程處理過的數據,并將最新產生的電能、需量、事件記錄固化到非易失性存儲器中;
[0036]所述顯示線程單元,用于監視按鍵情況,進行按鍵循環、自動循環、自檢的顯示處理,將數據計算線程單元的數據通過液晶顯示方式顯示;
[0037]所述通信線程單元,用于處理RS-485串口和紅外數據的收發,根據DL/T 645協議進行數據的處理。
[0038]由于采用了上述技術方案,本發明具有如下的優點:
[0039]本發明所提供的基于操作系統的電能表軟件架構及其在線升級的方法,兼顧了可靠性與靈活性兩方面要求,將法制計量模塊獨立處理,確保核心的計量功能不受其它模塊更新、失效的影響,通過軟件在線升級,可以方便地實現電能表軟件的在線更新,而且對非法制計量相關軟件升級時,并不會影響計量功能的正確運行,在保證可靠性的基礎上,極大地提升了電能表應用的靈活性。
[0040]本發明的其他優點、目標和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領域技術人員而言將是顯而易見的,或者可以從本發明的實踐中得到教導。本發明的目標和其他優點可以通過下面的說明書和權利要求書來實現和獲得。
【附圖說明】
[0041]本發明的【附圖說明】如下。
[0042 ]圖1為本發明的電能表軟件框架。
[0043]圖2為本發明的電能表目標執行程序固化地址分配示意圖。
[0044]圖3為本發明的電能表軟件在線升級流程圖。
【具體實施方式】
[0045]下面結合附圖和實施例對本發明作進一步說明。
[0046]實施例1
[0047]如圖所示,本實施例提供的基于操作系統的電能表軟件在線升級方法,該方法滿足對非計量相關軟件升級期間不影響計量正常運行的要求,其步驟如下:
[0048]SI升級握手:上位機發出軟件升級請求報文,并選擇所要升級的模塊,包括法制計量模塊、內核模塊、主應用模塊、擴展應用模塊,每次升級只能選擇其中一種;電能表接收到升級請求后,判斷升級請求報文格式及要升級的模塊是否正確,判斷正確后認為握手成功,回復正確的響應報文,進入到步驟S2,否則直接退出升級過程;
[0049]S2安全驗證:包括軟件驗證與硬件驗證兩個方面。軟件驗證是指密鑰驗證,上位機發出升級密鑰,電能表驗證密鑰是否與預設值相符;硬件驗證僅針對升級法制計量模塊、內核模塊,只有電能表處于端蓋打開狀態才允許這兩個模塊升級,確保核心軟件功能的安全性。安全驗證通過則進入S3,否則直接退出升級過程;
[0050]S3程序傳輸:上位機將要升級的目標執行程序傳輸給電能表,電能表接收后先緩存到RAM中。由于目標執行程序較大,一般達到幾十KB或幾百KB,傳輸時根據最大數據報文長度將整個目標執行程序分為連續的多個報文,每個報文最大長度為100字節,待所有報文傳輸完畢后,上位機發出程序傳輸完畢報文,該報文同時帶有整個目標執行程序的CRC校驗碼,之后進入S4;如傳輸過程發生中斷,電能表持續I分鐘未收到程序傳輸報文,或中間穿插傳輸其它類型報文,則先緩存已經傳輸的程序內容,進入S4;
[0051]S4斷點續傳:電能表等待新的程序傳輸報文,收到后從上次斷點位置開始繼續緩存新收到的程序數據,如收到程序傳輸完畢報文,則進入S5;如傳輸過程再次發生中斷,繼續在S4狀態下等待;如電能表進入斷點續傳后,持續10分鐘仍未收到新的程序傳輸報文,直接退出整個升級過程;
[0052]S5程序校驗:電能表收到上位機發出的程序傳輸完畢報文后,根據接收到的目標執行程序的長度,計算RAM緩存區中程序的CRC校驗碼,核對是否與上位機發過來的程序傳輸完畢報文中的CRC校驗碼一致,如核對一致則進入S6,否則直接退出整個升級過程;
[0053]S6程序固化:電能表將RAM緩存區的程序復制到程序存儲區對應區域地址中,復制時采用先擦除再寫入的方式;固化前同時判斷程序大小,如超過限定值則直接退出整個升級過程;固化成功后進入S7;
[0054]S7程序加載:電能表根據本次升級的模塊類型,重新加載升級后的程序并運行。如果是升級法制計量模塊、內核模塊,采用整個裝置自動復位的方式重新加載;如果是升級主應用模塊、擴展應用模塊,則通過內核模塊重新加載這兩個模塊的程序即可,此時主應用模塊、擴展應用模塊的運行不會受到影響。完成程序加載后,進入S8;
[0055]S8升級確認:升級后的程序重新加載后,重新計算FLASH中的程序CRC校驗碼,并將該CRC校驗碼反饋給上位機;上位機收到該CRC校驗碼后,核對與下載的程序CRC校驗碼是否一致,如果核對一致則認為升級成功,升級過程結束,否則認為升級失敗,此時可以選擇是否重新升級。
[0056]為了進一步保證安全性,對于帶有ESAM加密模塊的電能表,上述升級步驟S1、S2中的升級報文均采用國密SMI算法進行加密。
[0057]采用上述在線升級方法,在對主應用模塊、擴展應用模塊這兩個非計量相關軟件進行升級時,通過利用操作系統所具備的任務動態加載功能,使升級過程中法制計量模塊的運行不受影響,升級完成后通過緩存重新從法制計量模塊讀取升級期間的電能數據,確保了電能數據不丟失。另外,升級過程中采用了多重安全加密措施,確保程序遭到惡意破壞。
[0058]實施例2
[0059]本實施例提供的基于操作系統的電能表軟件架構及其在線升級系統,滿足對非計量相關軟件升級期間不影響計量正常運行的要求,包括內核模塊、法制計量模塊、主應用模塊、擴展應用模塊和驅動支持模塊;
[0060]所述內核模塊,是整個電能表軟件運行的基礎,完成電能表上電初始化,并管理整個電能表的軟硬件資源。包括引導模塊、操作系統內核、應用程序管理模塊、驅動支持模塊幾個子模塊。其中引導模塊完成上電初始化,并引導啟動操作系統內核;操作系統內核提供操作系統運行基礎的內存管理、任務調度、中斷處理等功能;應用程序管理模塊啟動法制計量模塊、主應用模塊、擴展應用模塊,并監視這三個模塊的運行情況,當發現異常后重啟對應模塊,以及配合在線升級功能完成程序升級后這兩個模塊的自動更新;驅動支持模塊提供對硬件資源的訪問接口,供其他模塊訪問底層硬件資源使用;
[0061]所述法制計量模塊,完成實時測量數據、電能數據的采集及計算、電能數據轉存、凍結處理。該模塊獨立運行,且所有計量相關的數據,包括總及各費率的正向有功電能、反向有功電能、四象限無功電能、組合有功電能、組合無功電能等,均通過此模塊獨立存儲管理,不受其它模塊是否運行的干擾;
[0062]所述主應用模塊,完成電能表主要應用功能,包括需量計算、負荷記錄、事件記錄、數據存儲、顯示、通信等。軟件上由多個相對獨立的線程組成,包括數據計算、數據存儲、顯示、通信幾個線程。
[0063]主應用模塊包括數據計算線程單元、數據存儲線程單元、顯示線程單元和通信線程單元;
[0064]所述數據計算線程單元,用于讀取法制計量模塊的電能數據、實時測量數據,根據實時測量數據來計算需量、進行負荷記錄處理,監視判斷是否發生失壓、失流事件并進行記錄,這些數據計算好后,以共享內存的方式提供給數據存儲線程單元、顯示線程單元和通信線程單元使用;
[0065]所述數據存儲線程單元,用于接收數據計算線程處理過的數據,并將最新產生的電能、需量、事件記錄固化到非易失性存儲器中;
[0066]所述顯示線程單元,用于監視按鍵情況,進行按鍵循環、自動循環、自檢的顯示處理,將數據計算線程單元的數據通過液晶呈現給操作者查看;
[0067]所述通信線程單元,用于處理RS-485串口、紅外數據的收發,根據DL/T 645協議進行數據的處理,將數據計算線程單元的數據通過通信的方式呈現給操作者查看。
[0068]本實施例中的數據計算線程讀取法制計量模塊的電能數據、實時測量數據,根據實時測量數據來計算需量、進行負荷記錄處理,監視判斷是否發生失壓、失流等事件并進行記錄;數據存儲線程接收數據計算線程處理過的數據,通過共享內存方式分配給其它模塊使用,并將最新產生的電能、需量、事件記錄固化到非易失性存儲器中;顯示線程根據數據存儲線程生成的數據,結合按鍵情況,進行按鍵循環、自動循環、自檢的顯示處理;通信線程處理RS-485串口、紅外數據的收發,根據DL/T 645協議進行數據的處理;
[0069]所述擴展應用模塊,使用主應用模塊生成的電能、實時測量、需量、負荷記錄、事件記錄等數據,自定義擴展新的功能。其特征是,該模塊可以單獨卸載與安裝,并可以根據用戶需要,定制化設計開發用戶所需要的功能,而且,該模塊程序可以單獨升級,升級期間不影響計量、抄表功能;
[0070]上述內核模塊、法制計量模塊、主應用模塊、擴展應用模塊均單獨編譯,編譯后的目標執行文件存放在不同的程序存儲區中。
[0071]實施例3
[0072]參見圖1,本發明的基于操作系統的電能表,包括法制計量模塊、內核模塊、主應用模塊、擴展應用模塊。具體實施時,以三相多功能電能表為目標,硬件上采用CPU+計量芯片的實現方式,CPU使用ARM9框架芯片AM1808,計量芯片使用TI的ADE7880高精度三相計量1C。外圍芯片包括一片8MB大小的NOR FLASH芯片,用于存放程序;一片64MB的DDR2芯片,用于操作系統的運行及存放臨時數據;一片8MB的SPI FLASH芯片,用于存放各種電能、需量、事件記錄數據。為了保證軟件系統運行的可靠性與實時性,操作系統選用VxWorks操作系統,在AM1808中移植運行該操作系統。
[0073]內核模塊包括引導模塊、操作系統內核、應用程序管理模塊和驅動支持模塊幾個子模塊。其中引導模塊采用uboot實現,完成上電初始化,并引導啟動內核模塊;操作系統內核提供操作系統運行基礎的內存管理、任務調度、中斷處理等功能;應用程序管理模塊啟動主應用模塊、擴展應用模塊,并監視這兩個模塊的運行情況,當發現異常后重啟對應模塊,以及配合在線升級功能完成程序升級后這兩個模塊的自動更新;驅動支持模塊提供對硬件資源的訪問接口,供其他模塊訪問底層硬件資源使用,包括按鍵、顯示器、存儲器、串口、通用1接口等驅動,每一種驅動均提供<^611、代3(1、'\¥1';^6、;[001:1、01086接口函數,供應用程序使用。
[0074]法制計量模塊采用一個單獨的RTP(實時處理任務)來實現,通過SPI串口讀取ADE7880計量芯片的分相有功、無功、視在電能,計算得到總及各費率的正向有功電能、反向有功電能、四象限無功電能、組合有功電能、組合無功電能等電能,通過讀取ADE7 880計量芯片的電壓、電流、功率等瞬時值來獲取實時測量數據,通過時鐘控制電能的結算轉存及凍結處理。這些電能及實時測量數據計算好后放在外部DDR2存儲器中,供其它模塊使用。
[0075]主應用模塊同樣采用一個單獨的RTP(實時處理任務)來實現,分為數據計算、數據存儲、顯示、通信幾個子線程,由RTP運行后立即啟動。其中數據計算線程讀取法制計量模塊的電能數據、實時測量數據,根據實時測量數據來計算需量、進行負荷記錄處理,監視判斷是否發生失壓、失流等事件并進行記錄;數據存儲線程接收數據計算線程處理過的數據,通過共享內存方式分配給其它模塊使用,并將最新產生的電能、需量、事件記錄固化到外部SPI FLASH芯片中,通過調用內核模塊提供的存儲器驅動來完成這個固化操作;顯示線程根據數據存儲線程生成的數據,調用內核模塊提供的按鍵、顯示器驅動,進行按鍵循環、自動循環、自檢的顯示處理;通信線程處理RS-485串口、紅外數據的收發,通過調用內核模塊提供的串口驅動,進行DL/T 645協議數據的處理;主應用模塊的數據計算好后同樣存放在外部DDR2存儲器中;
[0076]擴展應用模塊也采用一個單獨的RTP(實時處理任務)來實現,在本實施案例中擴展了一個以太網訪問的應用。該RTP讀取外部DDR2中的數據,通過以太網的HTTP協議,提供本地的Web訪問接口,實現電能表數據的在線網頁訪問查看。
[0077]參見圖2,本實施例提供的內核模塊、法制計量模塊、主應用模塊、擴展應用模塊編譯后的可執行文件分別為vxWorks.bin、IegalMeas.vxe、mainApp.vxe、extendApp.vxe,分別存放在NOR FLASH程序存儲器首地址0x0、0x200000、0x300000、0x500000、0x600000的存儲空間中,大小限定分別為21?、11?、21?、1冊,剩余21?存儲空間作為預留用。電能表上電后,首先從0x0地址加載運行內核模塊,然后通過內核模塊依次加載法制計量模塊、主應用模塊、擴展應用模塊并運行。
[0078]圖3描述了在線升級過程中電能表及上位機軟件的處理及交互的流程,包括了SI?S8共八個步驟,具體如下:
[0079]SI升級握手:上位機發出軟件升級請求報文,并選擇所要升級的模塊,包括內核模塊、法制計量模塊、主應用模塊、擴展應用模塊,每次升級只能選擇其中一種;電能表接收到升級請求后,判斷升級請求報文格式及要升級的模塊是否正確,判斷正確后認為握手成功,回復正確的響應報文,進入到步驟S2,否則直接退出升級過程;為了保證安全性,對于帶有ESAM加密模塊的電能表,升級握手報文采用國密SMI算法進行加密;
[0080]S2安全驗證:包括軟件驗證與硬件驗證兩個方面。軟件驗證是指密鑰驗證,上位機發出升級密鑰,電能表驗證密鑰是否與預設值相符;硬件驗證僅針對升級法制計量模塊、內核模塊,只有電能表處于端蓋打開狀態才允許這兩個模塊升級,確保核心軟件功能的安全性。安全驗證通過則進入S3,否則直接退出升級過程;為了保證安全性,對于帶有ESAM加密模塊的電能表,升級握手報文采用國密SMI算法進行加密;
[0081]S3程序傳輸:上位機將要升級的目標執行程序傳輸給電能表,電能表接收后先緩存到DDR2芯片中。由于目標執行程序較大,一般達到幾十KB或幾百KB,傳輸時根據最大數據報文長度將整個目標執行程序分為連續的多個報文,每個報文最大長度為100字節,待所有報文傳輸完畢后,上位機發出程序傳輸完畢報文,該報文同時帶有整個目標執行程序的CRC校驗碼,之后進入S4;如傳輸過程發生中斷,電能表持續I分鐘未收到程序傳輸報文,或中間穿插傳輸其它類型報文,則先緩存已經傳輸的程序內容,進入S4;
[0082]S4斷點續傳:電能表等待新的程序傳輸報文,收到后從上次斷點位置開始繼續緩存新收到的程序數據,如收到程序傳輸完畢報文,則進入S5;如傳輸過程再次發生中斷,繼續在S4狀態下等待;如電能表進入斷點續傳后,持續10分鐘仍未收到新的程序傳輸報文,直接退出整個升級過程;
[0083]S5程序校驗:電能表收到上位機發出的程序傳輸完畢報文后,根據接收到的目標執行程序的長度,計算DDR2緩存區中程序的CRC校驗碼,核對是否與上位機發過來的程序傳輸完畢報文中的CRC校驗碼一致,如核對一致則進入S6,否則直接退出整個升級過程;
[0084]S6程序固化:電能表將DDR2緩存區的程序復制到NOR FLASH中,復制時采用先擦除再寫入的方式;復制時根據升級的模塊類型,將程序存入到相應的程序存儲區中,內核模塊、法制計量模塊、主應用模塊、擴展應用模塊分別對應首地址0x0、0x200000、0x300000、(^500000、(^600000;固化前同時判斷程序大小,如分別超過限定值2冊、1冊、2冊、1冊,則直接退出升級過程;程序固化成功后進入S7;
[0085]S7程序加載:電能表根據本次升級的模塊類型,重新加載升級后的程序并運行。如果是升級法制計量模塊、內核模塊,采用整個裝置自動復位的方式重新加載;如果是升級主應用模塊、擴展應用模塊,則通過內核模塊重新加載這兩個模塊的程序即可,此時主應用模塊、擴展應用模塊的運行不會受到影響。完成程序加載后,進入S8;
[0086]S8升級確認:升級后的程序重新加載后,重新計算NOR FLASH中的程序CRC校驗碼,并將該CRC校驗碼反饋給上位機;上位機收到該CRC校驗碼后,核對與下載的程序CRC校驗碼是否一致,如果核對一致則認為升級成功,升級過程結束,否則認為升級失敗,此時可以選擇是否重新升級。
[0087]本實施例采用了RS-485串口與以太網兩種升級方式,兩種方式采用上述相同的步驟。以太網升級方式速度快,但由于現場不具備以太網網絡,且通信上無法加密,故只能作為出廠前的軟件升級,或現場電能表拆除后的本地維護升級;RS-485串口方式具備現有的通信網絡,故可以作為遠程升級使用,但由于串口速度慢,無法升級程序較大的程序(如內核模塊),可以作為主應用模塊、擴展應用模塊的升級方式,也可以作為法治計量模塊的升級方式,但升級法治計量模塊時計量將受到影響。
[0088]本實施例提供的電能表軟件架構及其在線升級的方法,在實施過程中實測,在對主應用模塊、擴展應用模塊程序升級后,重新讀取升級后的電能數據,與標準表進行比較,其誤差與不進行升級時是一致的。
[0089]最后說明的是,以上實施例僅用以說明本發明的技術方案而非限制,盡管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或者等同替換,而不脫離本技術方案的宗旨和范圍,其均應涵蓋在本發明的權利要求范圍當中。
【主權項】
1.一種基于操作系統的電能表軟件在線升級方法,其特征在于:包括以下步驟: SI升級握手:上位機發出軟件升級請求報文,并選擇所要升級的模塊;電能表接收到升級請求后,判斷升級請求報文格式及要升級的模塊是否正確,判斷正確后認為握手成功,回復正確的響應報文,并進入下一步驟S2,否則直接退出升級過程; S2安全驗證:上位機發出升級密鑰,電能表驗證升級密鑰是否與預設值相符;如果符合,則通過安全驗證并進入下一步驟S3;否則直接退出升級過程; S3程序傳輸:上位機將要升級的目標執行程序傳輸給電能表,電能表接收后先緩存到RAM中;上位機發出程序傳輸完畢報文,所述報文帶有整個目標執行程序的CRC校驗碼; S4斷點續傳:電能表等待新的程序傳輸報文,收到后從上次斷點位置開始繼續緩存新收到的程序數據,直到收到的程序傳輸完畢; S5程序校驗:電能表根據接收到的目標執行程序的長度,計算RAM緩存區中程序的CRC校驗碼,核對是否與上位機發過來的程序傳輸完畢報文中的CRC校驗碼一致,如核對一致則并進入下一步驟S6,否則直接退出整個升級過程; S6程序固化:電能表將RAM緩存區的程序復制到程序存儲區對應區域地址中;判斷程序大小,如超過限定值則直接退出整個升級過程;如果未超過,則固化程序; S7程序加載:電能表根據本次升級的模塊類型,重新加載升級后的程序并運行; S8升級確認:升級后的程序重新加載后,重新計算FLASH中的程序CRC校驗碼,并將該CRC校驗碼反饋給上位機;上位機收到該CRC校驗碼后,核對與下載的程序CRC校驗碼是否一致,如果核對一致則認為升級成功,升級過程結束,否則認為升級失敗。2.如權利要求1所述的基于操作系統的電能表軟件在線升級方法,其特征在于:所述步驟SI中選擇的升級模塊包括法制計量模塊、內核模塊、主應用模塊和擴展應用模塊中的任一種模塊。3.如權利要求1所述的基于操作系統的電能表軟件在線升級方法,其特征在于:所述步驟S2中的安全驗證包括軟件驗證與硬件驗證兩個方面;所述軟件驗證是指密鑰驗證,通過上位機發出升級密鑰,電能表驗證密鑰是否與預設值相符來實現密鑰驗證過程;所述硬件驗證是指當電能表處于端蓋打開狀態時,對升級法制計量模塊和內核模塊進行驗證過程。4.如權利要求1所述的基于操作系統的電能表軟件在線升級方法,其特征在于:所述步驟S3中的上位機將要升級的目標執行程序傳輸給電能表,具體按照以下步驟來實現: 根據最大數據報文長度將整個目標執行程序分為連續的多個報文;依次傳輸所有報文;直到傳輸完畢。5.如權利要求1所述的基于操作系統的電能表軟件在線升級方法,其特征在于:所述步驟S7中的程序加載是根據升級的模塊類型來實現的,如果升級的模塊是法制計量模塊和內核模塊,則采用整個裝置自動復位的方式重新加載;如果升級的模塊是主應用模塊和擴展應用模塊,則通過內核模塊重新加載這兩個模塊的程序。6.—種基于操作系統的電能表軟件在線升級系統,其特征在于:包括內核模塊以及分別與內核模塊連接的法制計量模塊、主應用模塊和擴展應用模塊; 所述內核模塊,用于電能表上電初始化與管理整個電能表的軟硬件資源; 所述法制計量模塊,用于實時采集測量電能數據并處理電能數據; 所述主應用模塊,用于存儲若干處理電能數據模塊并通過處理電能數據模塊來處理電能數據; 所述擴展應用模塊,用于自定義電能數據處理模塊。7.如權利要求6所述的基于操作系統的電能表軟件在線升級系統,其特征在于:所述內核模塊包括引導模塊、操作系統內核、應用程序管理模塊和驅動支持模塊; 所述引導模塊用于完成上電初始化,并引導啟動操作系統內核; 所述操作系統內核,用于提供操作系統運行基礎的內存管理、任務調度、中斷處理過程; 所述應用程序管理模塊,用于啟動并監視法制計量模塊、主應用模塊和擴展應用模塊的運行狀態,并自動更新監測異常運行的模塊; 所述驅動支持模塊,提供訪問底層硬件資源接口,供法制計量模塊、主應用模塊和擴展應用模塊使用。8.如權利要求6所述的基于操作系統的電能表軟件在線升級系統,其特征在于:所述主應用模塊包括數據計算線程單元、數據存儲線程單元、顯示線程單元和通信線程單元; 所述數據計算線程單元,用于讀取法制計量模塊的電能數據、實時測量數據,根據實時測量數據來計算需量、進行負荷記錄處理,監視判斷是否發生失壓、失流事件并進行記錄,以共享內存的方式提供給數據存儲線程單元、顯示線程單元和通信線程單元使用; 所述數據存儲線程單元,用于接收數據計算線程處理過的數據,并將最新產生的電能、需量、事件記錄固化到非易失性存儲器中; 所述顯示線程單元,用于監視按鍵情況,進行按鍵循環、自動循環、自檢的顯示處理,將數據計算線程單元的數據通過液晶顯示方式顯示; 所述通信線程單元,用于處理RS-485串口和紅外數據的收發,根據DL/T645協議進行數據的處理。
【文檔編號】G06F9/445GK105930193SQ201610292327
【公開日】2016年9月7日
【申請日】2016年5月5日
【發明人】歐習洋, 侯興哲, 王新華, 李志勇, 劉金濤, 李享友, 劉型志, 張進, 吉暢, 曾嘯龍, 王奕, 劉大川, 陳新亮
【申請人】國網重慶市電力公司電力科學研究院, 國家電網公司, 深圳市中電電力技術股份有限公司