本發明涉及了一種測試系統,尤其是涉及了一種電儲能設備功率測試系統。
背景技術:
隨著電池、電容等電儲能設備在現實生活中的越來越廣泛的應用,對這類的電儲能設備的檢測、充放電控制越來越重要。若能成功對電儲能設備功率檢測和充放電,則有利于電儲能設備的保護,以及電力設備的正常工作。在現有技術中缺少了能更好地實時監測和管理電儲能設備的充放電的系統或者設備。
技術實現要素:
本發明主要解決的問題是:如何實現僅通過一臺上位機對多臺不同類型設備(精密功率儀、可編程電源和可編程負載)的連接與通信,以及如何有效地控制電儲能設備的輸出狀況,實時高精度測量電儲能設備充放電功率狀況,使得測試過程方便可靠并且智能自動,測試效果準確及時。為了解決上述問題,本發明提出了一種電儲能設備功率測試系統,可廣泛通用。
本發明根據設備的文檔,利用Matlab/Simulink將系統呈現出來。本發明主要考慮的一個是如何控制設備,另一個是如何讓用戶使用簡便。本發明采用的技術方案是:
精密功率儀、可編程電源和可編程負載均與上位機進行串口連接,上位機內構建有用于對不同類型設備(精密功率儀、可編程電源和可編程負載)的連接與通信的軟件模塊。
所述的功率測試設備包括:精密功率儀、可編程電源和可編程負載。電儲能設備連接可編程電源,可編程電源對其進行充電;電儲能設備連接可編程負載,對可編程負載進行放電;電儲能設備連接精密功率儀,通過精密功率儀進行電壓、電流、電功率等測量;精密功率儀、可編程電源和可編程負載均與上位機連接,在上位機中通過Matlab/simulink構建分別與精密功率儀、可編程電源和可編程負載相連并對應控制的精密功率儀模塊、可編程電源模塊和可編程負載模塊,其中每個模塊均包括用于對多臺不同類型電儲能設備進行連接通信和測量的連接模塊、指令模塊和用戶操作模塊。在連接模塊、指令模塊和用戶操作模塊相互之間通信以及連接模塊和功率測試設備之間通信時,針對寫入和查詢的兩種不同通信類型分別編寫封裝函數進行通信。
用戶操作模塊用于用戶輸入控制與顯示信息,指令模塊用于將用戶輸入的控制信息翻譯成對應的指令,連接模塊用于將指令通過串口發送給功率測試設備進行控制。工作時,功率測試設備檢測獲得信息數據經過連接模塊后直接發送到用戶操作模塊進行顯示。用戶的操作也將通過用戶操作模塊輸入控制要求,然后依次經過指令模塊和連接模塊對儀器進行相應的控制。
針對不同功率測試設備,所述連接模塊構建各個電儲能設備連接的功率測試設備唯一對應實例路徑,通過修改電儲能設備對應的功率測試設備的實例路徑實現對相同型號的不同功率測試設備的連接切換。
所述用戶操作模塊采用Matlab/simulink工具以模塊化方式搭建,采用模塊化設計,具有可擴展性。simulink運行過程中實時運行,和物理時間同步。另外,本發明的用戶操作模塊可加入到Matlab/simulink自定義庫中,應用時可與simulink自定義庫中的原有其他功能模塊共同使用。
連接模塊作用:上位機可以通過連接模塊同時與多臺不同硬件設備進行串口連接。因為通過串口數據線與各臺設備,每臺設備有獨自的ID號,連接成功后每臺設備即有獨自的路徑,然后在Matlab平臺上使用連接模塊,通過修改目標設備的設備實例路徑,連接成功后設備會蜂鳴代表連接成功,根據這樣的方法,即可對相同型號的任意設備進行連接通訊。而電腦多個串口數據就可以連接多臺不同的硬件設備,每個硬件設備又能夠連接若干臺電儲能設備。而本系統中所使用的WT1800這種功率檢測儀,又可以進行多通道的檢測,故本發明可以實現多臺設備的連接與通信。
指令模塊作用:指令模塊封裝在Matlab軟件之中,模塊包含數百條具有統一格式的、相對通用的、可以對設備進行相關測試的指令。指令主要包括輸入輸出設定、測量設置、基本模式選擇等基本部分,通過編程指令對設備進行充放電與高精度測量,從而對整個系統進行控制與相關調整。具體指令模塊構成及配置見下文具體實現方式。
用戶操作模塊作用:用戶操作模塊基于simulink搭建,將指令模塊封裝后,實現可視化界面,用戶直接可以進行操作,用戶簡單易懂而且使用方便。同時實現了simulink工具與物理時間同步,能夠實時地對系統的監測與控制,從而實現了遠程同步檢測的目標。而且simulink工具能夠完成較長時間智能自動化監控,用戶可自主設定監控時間或者自行設計控制手段,實現了自動化控制,無需工作人員進行時刻的觀察。
本發明的有益效果是:
本發明實現了僅通過一臺上位機對多臺不同類型電功率檢測儀器的連接與通信,以及有效地控制電儲能設備的輸出狀況,實時高精度測量電儲能設備充放電功率狀況,使得測試過程方便可靠并且智能自動,測試效果準確及時。
本發明能夠可遠程操作,有效地對功率儀、電源、電子負載進行控制,且控制過程方便、快速、有效,能夠節省大量的人力、物力,實現了智能自動化監控,能夠長時間無人監控狀態下進行工作。
本發明系統具有良好的通用性與先進性,也具有非常好的拓展性,用戶可以根據自己的需求對系統進行拓展和改進,例如將長時間獲取得到的歷史數據存儲等。
本發明具有可拓展性,能夠進行多通道測試功能,從而實現對多塊電儲能設備進行測試。
附圖說明
圖1是本發明系統的連接框圖。
具體實施方式
下面結合附圖和實施例對本發明作進一步說明。
本發明實施例及其實施過程如下:
在本發明一個較佳實施例中,所述電儲能設備測試系統利用Matlab/simulink平臺,兼容性擴展性好,能夠較為廣泛地推廣,可實現長時間的智能控制,實現高精度的自動化。
實施例中通過精密功率儀實時地精準獲取情況,并加入數據庫存儲數據,將采集的數據存儲并進行分析。
第一步:解決上位機與設備的連接與通信。
與設備通信需要設備的ID號與路徑參數,參數可以在tmtool中對特定設備進行獲取。同時,使用matlab中tmtool自帶生成功能與設備進行通信,但是該通信對于使用者來講還是太過粗糙,需要繼續進行封裝以及優化。
首先,設備的連接需要進行通信的操作,而通信的種類主要有兩種,分別是寫入與查詢。編寫模采用上述兩種通信方式分別編寫對應封裝函數。
其次,連接上設備之后,需要對設備進行頻繁讀寫訪問操作,同時對設備的連接進行合理的保存來保證效率。
在該步驟中,實現了上位機與設備的通信,并封裝使其易用。
第二步:實現設備文檔中所述的命令。
通過對指令的整合分析并綜合各步驟所需的信息,提取出了每條指令的5種可配置信息:
1.初始化是否發送信息
表示在程序開始運行的時候是否需要將命令發送至設備。在代碼中主要通過access數組進行控制。
實現思路為:使用Matlab中persistent關鍵字,使每次進入函數時使用同一個access數組,每次訪問某個指令的時候access對應位置的值會加一,表示這個指令在本次系統啟動的過程中被訪問了幾次。而在后續代碼中,通過判斷指令對應access的值是否大于0來選擇是否真正執行指令。
在初始化的時候初始access為0,表示第一次訪問的時候不需要執行指令,0值的初始化主要對應于在程序開始執行的時候會調用callback的輸入類型。第三步中將會詳細敘述這個屬性。
2.查詢或寫入命令
對應通信模塊中的操作方法,具體取值與該指令是否需要返回值有關。通過數組method進行配置,1表示查詢,0表示寫入。
3.額外參數個數
表示該命令是否有額外的可供選擇的參數。通過value數組進行配置,程序在運行的過程中通過value數組中的對應值獲取組成指令的值。
4.指令別名
用來代表某條指令的簡短的名字。使用param數組進行配置。
這個名字在整個程序中唯一,是指令的身份證明。外部函數通過該名字調用這個group中的指令。同時,在第三步的mask封裝中也保證了這個指令的mask變量名字也為這個別名,便于用戶輸入的獲取。
5.指令格式
指令格式表示某個指令的格式,即如何根據多個所需的用戶輸入值拼接出發送給設備的指令。該指令與第三個參數有密切關系,主要由command數組配置。
在配置代碼結束之后,進入到指令執行流程。執行順序為,根據指令別名找出對應的所有配置,并根據配置參數,讀取指令參數以及指令格式,生成實際指令之后,根據前一步驟所提供方法與設備進行通信,達到控制設備的目的。
該步驟真正實現了使用者對下位機的控制。
第三步:
此時,需要能夠對上一步中的指令執行方式進行一些優化,圖形化界面使用的是simulink中的sub-system以及mask封裝。
在mask封裝中,主要存放的是寫入型的指令。
這種指令的特點是調用次數不多,同時,在大多數情況下需要手動添加一些參數。而mask封裝恰好能夠滿足這種要求。mask封裝的圖形界面中有常用的下拉菜單、輸入框以及按鈕。在多種類的輸入支持下,寫入命令可以很好的封裝,用戶不需要知道每一項的命令是如何發送給設備的,只需要知道每個輸入項的意義即可進行很方便的使用。
在用戶使用的表層之下是simulink中的一個callback功能。Callback是mask配置的一項。在每個項目在值發生改變之后,會由系統主動調用寫在callback內部的小程序段。所以,只需要在callback中寫上觸發發送對應指令的語句即第二步中寫出的命令行語句即可。
而在mask第一次運行的時候,除了按鈕類型之外,其余的輸入類型均會調用一次設置好的callback。為了設置的正確性,可以在代碼中手動禁止這種初始化型的回調。這即是access屬性為0的原因。當然,如button之類在初始化的時候不調用回調函數的在配置的時候只需要將access屬性置1即可正常使用。
以上考慮最多的是指令的寫入,而少部分的指令是帶有返回值的。為了用戶體驗,返回值不能輸出在命令行中。所以,在界面上有一個提前設定好的固定區域,每次返回值都會直接寫入那塊區域,方便用戶查看返回值。
在此,以上文中出現的inputState命令為例,闡述如何進行mask封裝。首先,由于該命令是一條寫入指令,同時需要一個開放性的輸入,所以使用editor作為該指令的輸入框,接收輸入。而如果是有限的輸入,可以使用popup即下拉列表類型進行控制。而如果不需要輸入,則直接使用button即按鈕類型即可。
而在該editor的屬性中,需要在mask配置中將變量名設為別名inputState方便程序進行獲取。同時,如上文所述,在callback欄中,需要主動調用對應模塊的觸發命令以通知程序獲取最新的值并發送給設備。
在Sub-system封裝中,主要存放的是查詢型的指令。該指令調用次數多,但是每次調用的參數基本一致。因此,與步驟2相似,需要首先使用查詢函數對設備的查詢進行封裝。而后,使用子系統對查詢函數進行封裝,到最后對外提供查詢結果即可,中間的所有操作用戶均可忽略。
同時Sub-system即子系統封裝的意義并不止在于此。其主要功能是對用戶封裝了具體的實現細節而僅保留端口。在這種封裝方式下,大大提高了模塊的可讀性與可靠性。在子系統封裝中,為了與外界進行交互,需要規定幾個in端口以及out端口。而各個端口的數量取決于該模塊所依賴的輸入或者需要對外暴露的輸出。
另外,在封裝了Sub-system了之后,可以通過一些方式將其加入到Simulink Library Brower中以方便后續使用。具體的方式參見文末連接,文內不再贅述。于此,該子系統并不僅僅是一個應用,而是Simulink中的一種模塊。當有使用者需要使用該子系統時,只需要找到并進行配置即可使用。模塊性大大增強。
對于高精度分析儀的Sub-system封裝而言,需要提供四個輸出,分別表示其設備讀取的電壓、電流、功率值以及Matlab通過計算得到的功率值,不需要輸入。
對于電壓,需要另寫一個讀取電壓的函數專門進行讀取。同時,需要一個方波發生器定時觸發讀取函數的運行。還需要一個輸出點作為函數的輸出。此時,該電壓值已經可以被外部所獲取。