劉宏偉,趙春宇
(上海交通大學 電子信息與電氣工程學院,上海 200240)
隨著電力電子技術的蓬勃發(fā)展和廣泛應用,電力系統(tǒng)中不對稱性、沖擊性、非線性負荷的不斷增加,導致電能污染日益嚴重。對電能質(zhì)量進行監(jiān)測與分析從而提高和改善電能質(zhì)量具有重要的現(xiàn)實意義[1]。而在電能質(zhì)量監(jiān)測系統(tǒng)中,數(shù)據(jù)的科學存儲和安全管理對于整個系統(tǒng)的性能起到重要作用。以此為切入點進行了基于嵌入式數(shù)據(jù)庫的電能質(zhì)量監(jiān)測系統(tǒng)的設計。本文首先介紹了基于DSP和ARM的電能質(zhì)量監(jiān)測系統(tǒng)的整體架構,然后分析了傳統(tǒng)嵌入式數(shù)據(jù)存儲管理方法的優(yōu)缺點并詳細闡述了嵌入式數(shù)據(jù)庫SQLite的基本原理。最后重點介紹了電能質(zhì)量監(jiān)測系統(tǒng)中的數(shù)據(jù)庫設計,以及ARM控制模塊的軟件設計。
電能質(zhì)量監(jiān)測系統(tǒng)包括CPLD器件,多通道電流模塊、電壓模塊(可依需求配置)和ARM主控模塊。CPLD器件負責仲裁總線,建立各模塊的通信;每個電流或電壓模塊負責單通道的電流或電壓相關參數(shù);ARM模塊負責接受電流電壓模塊存儲采集到的電能質(zhì)量參數(shù),與上位機通信以及更新系統(tǒng)等。電壓和電流模塊與ARM控制模塊之間通過SPI總線實現(xiàn)通信,SPI通信的建立和仲裁通過CPLD實現(xiàn)的[2]。如圖1所示。
ARM主控模塊以S3C6410芯片為核心,配置了豐富的外設資源,并提供GPRS、GPS和Wi-Fi功能服務。另外,該模塊提供了USB OTG功能,可以及時更新系統(tǒng)軟件。
傳統(tǒng)的嵌入式數(shù)據(jù)存儲管理方法主要是根據(jù)具體存儲器硬件電路設計的存儲管理算法或采用基于文件系統(tǒng)的存儲結構。前者簡單直接,但是軟件的可移植性差,對于復雜的算法很難達到高可靠性要求;后者程序?qū)τ涗浳募苯舆M行操作,不僅會增加系統(tǒng)的開銷,而且導致可重用性變差[3]。采用數(shù)據(jù)庫來管理數(shù)據(jù)可以很好解決地上述問題。數(shù)據(jù)庫是通過事務來實行調(diào)度和并發(fā)控制的,可方便地進行數(shù)據(jù)存取,查詢等操作,而且數(shù)據(jù)庫具有安全性和完整性檢查的措施,可確保系統(tǒng)具有較好的整體性能。
SQLite是一款開源的嵌入式關系數(shù)據(jù)庫,它直接在應用程序進程空間中運行,不僅系統(tǒng)資源占用小,而且具有移植性好、簡單易用、高效可靠等優(yōu)點[4]。SQLite采用模塊化的設計,可分為三個子系統(tǒng),八個獨立的模塊組成。如圖2所示。
接口(Interface):即 SQLite與程序、腳本或者庫文件交互的接口,由一組C語言接口函數(shù)組成。其它程序語言與SQLite交互最終都會轉(zhuǎn)化為相應的C API調(diào)用;編譯器(Compiler):編譯器由分詞器、解析器和代碼生成器構成,其中分詞器和解析器對SQL語句進行語法檢查,然后把它轉(zhuǎn)化為語法樹并傳給代碼生成器,代碼生成器根據(jù)它生成一種針對 SQLite的匯編代碼,最后由虛擬機執(zhí)行;虛擬機(Virtual Machine):和Java虛擬機相似,虛擬機解釋執(zhí)行字節(jié)代碼。虛擬機的字節(jié)代碼由128個操作碼構成,它的每一條指令都用來完成特定的數(shù)據(jù)庫操作或者為這些操作??臻g的準備。后端(Back-End):后端由B-樹、頁緩存和系統(tǒng)調(diào)用構成。B-樹負責維護著各個頁面之間的復雜的關系,便于快速找到所需數(shù)據(jù)。而頁緩存則通過系統(tǒng)調(diào)用在B-樹和磁盤之間傳遞頁面。
圖1 在線電能質(zhì)量監(jiān)測系統(tǒng)框架圖
圖2 SQLite基本原理
電能質(zhì)量監(jiān)測系統(tǒng)的應用程序以數(shù)據(jù)庫為核心,數(shù)據(jù)庫為程序的其它功能模塊提供數(shù)據(jù)接口。系統(tǒng)涉及到的數(shù)據(jù)包括系統(tǒng)控制信息、實時電能質(zhì)量參數(shù)、歷史電能質(zhì)量參數(shù)和電能事件數(shù)據(jù)。其中實時電能質(zhì)量參數(shù)從DSP模塊接收后,在ARM控制模塊中暫時存儲,并不需要單獨建立數(shù)據(jù)庫。所以為了降低系統(tǒng)復雜度,只將系統(tǒng)數(shù)據(jù)庫分為系統(tǒng)參數(shù)數(shù)據(jù)庫、歷史數(shù)據(jù)庫和事件記錄數(shù)據(jù)庫三個子庫。
系統(tǒng)參數(shù)數(shù)據(jù)庫主要用于存儲DSP模塊和ARM控制模塊的設置參數(shù)。DSP模塊的系統(tǒng)參數(shù)包括存儲間隔、電壓設置、接線方式、浪涌/塌陷設置、三相不平衡設置、頻率設置和傳感器設置;ARM控制模塊的系統(tǒng)參數(shù)包括接線方式、瞬變設置、存儲間隔、電壓設置、浪涌/塌陷設置、諧波設置、三相不平衡設置、頻率設置和開關通道輸入設置。系統(tǒng)軟件中存有默認的設置參數(shù),系統(tǒng)第一次上電時,會建立數(shù)據(jù)庫并將默認參數(shù)導入。之后每次上電,系統(tǒng)都會先從參數(shù)數(shù)據(jù)庫中讀取參數(shù)并設置。ARM控制模塊接收到上位機發(fā)送的更新系統(tǒng)設置參數(shù)命令后首先更新系統(tǒng),然后更新參數(shù)數(shù)據(jù)庫的相應數(shù)據(jù)。
ARM控制模塊會對從DSP模塊接收到的15組實時電能質(zhì)量參數(shù)進行判斷統(tǒng)計,然后將得到的一組電能質(zhì)量參數(shù)存入歷史數(shù)據(jù)庫。歷史數(shù)據(jù)庫中每一條記錄包括統(tǒng)計時間點、統(tǒng)計時長、各相電能參數(shù)、頻率、三相不平衡度以及長閃短閃等。系統(tǒng)使用SQLite只是來實現(xiàn)采集數(shù)據(jù)的短期存儲,數(shù)據(jù)最終需要傳送到大型數(shù)據(jù)庫中。歷史數(shù)據(jù)庫中,舊的數(shù)據(jù)存放超過一定時限會被新的數(shù)據(jù)覆蓋。
事件記錄數(shù)據(jù)庫主要用于存儲電能質(zhì)量事件。電能質(zhì)量事件是指電能質(zhì)量監(jiān)測中指標超過限值的事件,包括頻率超標、電壓超標、電壓瞬變、諧波電壓、諧波電流、三相不平衡以及開關量各通道輸入輸出等[5]。為了方便上位機查詢數(shù)據(jù),事件記錄數(shù)據(jù)庫又分為事件記錄表,事件波形表和事件趨勢表,分別用于存儲電能質(zhì)量事件發(fā)生時的詳細信息、趨勢數(shù)據(jù)和波形。
ARM控制模塊主要負責整個系統(tǒng)的管理和控制,根據(jù)不同的現(xiàn)場要求向 DSP發(fā)出控制命令并要求回傳相應數(shù)據(jù) 與 信 息[6]。ARM控制模塊的軟件部分主要由以下五部分組成:①LCD液晶顯示;②上位機通信;③數(shù)據(jù)接收和處理;④數(shù)據(jù)庫的管理;⑤系統(tǒng)參數(shù)設置。如圖3所示。
ARM控制模塊向下使用GPIO、IIC總線以及SPI總線與DSP模塊通訊,從DSP模塊接收測量處理后的數(shù)據(jù),并將數(shù)據(jù)存入數(shù)據(jù)庫SQLite中;向上通過232串口,485串口以及網(wǎng)口與PC機通訊,回饋上位機的命令,并將所請求的數(shù)據(jù)從SQLite讀出發(fā)送給上位機;同時,ARM控制模塊搭載有一塊液晶顯示屏,用來顯示系統(tǒng)狀態(tài)和電能質(zhì)量的實時測量參數(shù)。
基于上述功能需求及模塊化設計的考慮,程序設計為兩個進程,一個為系統(tǒng)控制進程,主要負責系統(tǒng)顯示以外的其它所有任務;另一個為系統(tǒng)顯示進程,主要負責從數(shù)據(jù)庫讀取數(shù)據(jù)并傳送給屏幕顯示。系統(tǒng)控制進程又分為以下8個線程:1、SYS線程:負責更新系統(tǒng)時鐘,復位DSP模塊,異常檢測;2、EVT線程:處理電能事件的捕捉、緩存等;3、PARA線程:電能參數(shù)的接收、修正、統(tǒng)計;4、SAVE線程:處理數(shù)據(jù)存儲的任務;5、COMM線程:執(zhí)行串口/485/UDP/TCP指令接收及簡單指令回饋的任務;6、ECHO線程:執(zhí)行串口/485/UDP/TCP復雜指令回饋的任務;7、I2C線程:讀取溫度;系統(tǒng)設置,特殊設置,時間更新等;8、TCP線程:處理TCP端口狀態(tài)查詢。
圖3 ARM控制模塊軟件架構
本文引入嵌入式數(shù)據(jù)庫對電能質(zhì)量監(jiān)測系統(tǒng)采集統(tǒng)計的電能質(zhì)量數(shù)據(jù)進行存儲和管理,不僅優(yōu)化了檢測系統(tǒng)簡化了開發(fā)過程,而且提高了電能質(zhì)量數(shù)據(jù)管理的效率。嵌入式數(shù)據(jù)庫SQLite在電能質(zhì)量監(jiān)測系統(tǒng)中的應用,滿足了電能質(zhì)量數(shù)據(jù)處理的需求,為電能質(zhì)量監(jiān)測系統(tǒng)提供了有力的技術支持。
[1]黃麗麗.電能質(zhì)量監(jiān)測和監(jiān)測儀器講座[J].儀表技術,2005,12(6):64-66.
[2]崔恒春,汪勤,趙春宇.可擴展的在線電能質(zhì)量監(jiān)測系統(tǒng)[J].儀表技術與傳感器,2011,47(7):106 -107,110.
[3]唐瑜,成樂祥,洪婧.嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用[J].電腦知識與技術,2008,15(17):1373 -1374,1378.
[4]肖俊.基于藍牙技術的RFID-SIM卡在SQLite中的數(shù)據(jù)存儲過程分析[J].軟件導刊,2011,20(5):159-161.
[5]全國電壓電流等級和頻率標準化技術委員會.電壓電流頻率和電能質(zhì)量國家標準應用手冊[M].北京:中國電力出版社,2001.
[6]蘇士美,楊鵬.基于 DSP和 ARM的新型電力諧波監(jiān)測儀設計[J].電測與儀表,2009,46(11):52-55.