專利名稱:一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)采集和設備控制領域。
背景技術:
在電信機房及基站、交通、石油、化工、冶金等各種行業(yè)中都需要進行環(huán)境監(jiān)控,數(shù)據(jù)采集和設備控制。在不同行業(yè),甚至相同行業(yè)的不同環(huán)境下,需要采集的數(shù)據(jù)種類不同, 如電流、電壓、溫度、濕度、流量、壓力等;需要控制的設備也不同,有連接繼電器的報警燈和揚聲器等簡單設備,也有連接串口的智能空調和UPS等智能設備。目前單一的嵌入式數(shù)據(jù)采集和設備控制產(chǎn)品已經(jīng)很難滿足日漸復雜的應用需求,且重復開發(fā)又會導致技術復用率低等問題。這就要求數(shù)據(jù)采集與設備控制系統(tǒng)在穩(wěn)定工作的前提下,具有靈活的軟硬件配置功能,良好的可擴展性能和方便的遠程升級功能。于2009年2月18日公開,名為基于嵌入式平臺的遠程I/O數(shù)據(jù)采集系統(tǒng)及方法的中國發(fā)明專利200810200985. 7,采用32位ARM微處理器和μ C/0S-II實時操作系統(tǒng)內核,主要用于生產(chǎn)過程中各種模擬量信號的采集,采集的模擬信號經(jīng)A/D轉換后變成數(shù)字信號,可在本地LCD液晶屏中顯示,也可通過RS-485或以太網(wǎng)通信方式將數(shù)字信號傳輸?shù)竭h程計算機。該發(fā)明能夠穩(wěn)定可靠地完成各種模擬信號的采集和傳輸工作,但是存在如下不足1.基于yC/OS-II的程序采用傳統(tǒng)C語言開發(fā),程序開發(fā)、維護難度大,修改困難;2.如果要增加開關量的采集,或者增加智能設備控制功能,需要重新設計硬件和軟件,可擴展性差;3.數(shù)據(jù)采集只有A/D端口,只能采集模擬信號;4.只有數(shù)據(jù)采集功能,沒有設備控制功能;5.沒有服務器模塊,不具備遠程升級功能。Python語言作為一種解釋性語言,具有程序易讀、無需編譯、開發(fā)簡單、內置豐富的程序庫、可擴展性好、可跨平臺等特性,使得PC機軟件的開發(fā)效率大幅提升。如今嵌入式設備的處理速度提高迅猛,各種硬件資源豐富,已經(jīng)具備引入Python解析器的條件,以降低嵌入式產(chǎn)品的軟件開發(fā)維護成本,提高開發(fā)效率。圖2是傳統(tǒng)開發(fā)流程與Python開發(fā)流程的對比。在傳統(tǒng)開發(fā)流程中,需要使用C/ C++語言開發(fā)應用程序,源代碼編輯好之后需要編譯才可調試/運行。在嵌入式應用軟件開發(fā)中編譯是很復雜的,不同的芯片和硬件環(huán)境,不同的嵌入式操作系統(tǒng),不同的集成開發(fā)環(huán)境使用的編譯工具鏈都不相同,這就要求二次開發(fā)技術人員了解產(chǎn)品的芯片、硬件環(huán)境和操作系統(tǒng),還要學會C/C++語言,并且能使用各種編譯工具鏈來編譯源代碼,如果集成開發(fā)環(huán)境不是免費的,還要花費一定的成本購買集成開發(fā)環(huán)境??梢钥吹?,傳統(tǒng)的開發(fā)方式技術門檻高,開發(fā)難度大,技術復用率低,每進行一次二次開發(fā)都可能引入新的不穩(wěn)定性。如果在嵌入式開發(fā)中引入Python技術,二次開發(fā)技術人員無需了解產(chǎn)品的芯片、硬件環(huán)境和操作系統(tǒng),也無需學會C/C++語言,無需學會使用任何編譯工具鏈,更不需要花費成本購買集成開發(fā)環(huán)境,就可以進行快速開發(fā)和修改,降低了開發(fā)和維護的難度,提高了開發(fā)效率,節(jié)省了人力成本。
發(fā)明內容
為了克服以上不足,本發(fā)明提出一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),如圖1所示為本發(fā)明框圖,該系統(tǒng)包含了模擬量端口、數(shù)字量端口、1 端口、串口、繼電器端口、以太網(wǎng)、GPRS/3G網(wǎng)絡、Flash存儲器、看門狗和IXD顯示器,能采集多種類型的信號,具有對繼電器和智能設備進行控制聯(lián)動的能力。軟件部分由數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、設備控制模塊、數(shù)據(jù)存儲模塊、數(shù)據(jù)傳輸模塊、數(shù)據(jù)顯示模塊、看門狗模塊和嵌入式Web Server模塊組成,并且各模塊采用Python語言實現(xiàn),運行于Python解析器中,開發(fā)、維護的難度和成本低,容易擴展。下面介紹軟件部分各模塊的功能數(shù)據(jù)采集模塊采集連接到模擬量端口、數(shù)字量端口、1 端口和串口的各種傳感器和智能設備的實時數(shù)據(jù);設備控制模塊對連接到串口和繼電器端口的智能及非智能設備進行控制聯(lián)動;數(shù)據(jù)存儲模塊在斷網(wǎng)時將實時數(shù)據(jù)保存到本地Flash存儲器;數(shù)據(jù)傳輸模塊將采集到的實時數(shù)據(jù)通過以太網(wǎng)或GPRS/3G網(wǎng)絡傳送到遠程計算機;數(shù)據(jù)顯示模塊在本地 LCD顯示器顯示實時數(shù)據(jù);數(shù)據(jù)處理模塊對采集的實時數(shù)據(jù)進行過濾和處理,并根據(jù)靈活設置的報警和設備聯(lián)動條件,決定報警的產(chǎn)生、設備的聯(lián)動、數(shù)據(jù)的存儲或者遠程傳輸以及本地顯示;嵌入式Web krver模塊進行遠程配置,設置系統(tǒng)參數(shù)、報警及設備聯(lián)動條件,操作簡單、靈活;看門狗模塊保證系統(tǒng)運行出錯時快速恢復。本系統(tǒng)還有遠程升級功能,可基于模塊升級系統(tǒng),速度快,穩(wěn)定性好,可用于各種需要傳感器采集數(shù)據(jù)并根據(jù)實時數(shù)據(jù)控制設備的場合。數(shù)據(jù)采集模塊、設備控制模塊、數(shù)據(jù)傳輸模塊、數(shù)據(jù)顯示模塊和看門狗模塊需要與硬件或端口進行交互,交互的方式通過Python的C語言擴展庫實現(xiàn)。各模塊要操作硬件或端口時,直接調用對應的Python的C語言擴展庫即可,Python的C語言擴展庫中封裝了對應硬件或端口的底層驅動操作,最終由底層驅動對硬件或端口進行控制。
以下描述一個Led的PythonC語言擴展的實現(xiàn) 1)新建一個ledmodule. c文件,填入以下內容 #include<stdlib. h> include“ Python, h"
static PyOb ject 氺led—on(PyObject 氺self, PyObject *args)
{
PyObject 氺out ;
//調用底層驅動,打開led
return out ;
}
static PyMethodDef LedMethods [] = {{ ‘‘ led ‘‘ , led_on, METH_ VARARGS, “ on (η) - > turn on led" },{NULL, NULL, O, NULL}};PyMODINIT_FUNCinitled(void){(void)Py_InitModule(" led" , LedMethods);}2)根據(jù)特定嵌入式平臺的編譯方式,將ledmodule. c文件編譯成led.pyd文件,并將該文件放在Python的系統(tǒng)路徑中。3)最后,就可以通過如下Pyhton語句調用模塊import ledled. on (1000) #led 點亮 1000ms根據(jù)上述方法編寫模擬量端口、數(shù)字量端口、1 端口、串口、繼電器端口、GPRS、 3G、IXD顯示器、看門狗的Python C語言擴展(Python內置了以太網(wǎng)庫),實現(xiàn)各模塊對相應硬件和端口的交互。Python的C語言擴展部分由我們(方案提供者)提供給用戶,如果以后硬件出現(xiàn)其他數(shù)據(jù)采集的端口,我們以同樣的方式編寫該端口的Python C語言擴展, 并將該擴展文件發(fā)給用戶,用戶遠程升級該擴展后即可直接使用。這樣,用戶無需了解底層 1/0操作的具體實現(xiàn),只要會調用相應的Python庫函數(shù)即可,開發(fā)簡單,并且Python的C語言擴展以模塊的形式存在,擴展能力強。數(shù)據(jù)存儲模塊以嵌入式數(shù)據(jù)庫的形式將實時數(shù)據(jù)保存到本地Flash存儲器中。 Python內置了對sqlite數(shù)據(jù)庫的支持,如果要使用其他類型的數(shù)據(jù)庫,可以通過編寫 Python的C語言擴展來封裝對應數(shù)據(jù)庫的操作接口來實現(xiàn)。數(shù)據(jù)處理模塊獲取數(shù)據(jù)采集模塊采集到的實時數(shù)據(jù)之后,進行一系列處理,并調用其它模塊完成功能,其處理步驟如下1)異常數(shù)據(jù)過濾由于電子產(chǎn)品本身的精確度、穩(wěn)定性及抗干擾能力有限,數(shù)據(jù)采集過程有可能出現(xiàn)異常數(shù)據(jù),而且不同采集環(huán)境下,各種實時數(shù)據(jù)的允許值范圍也不太相同,通過對各種實時數(shù)據(jù)設定允許值范圍,對數(shù)據(jù)采集模塊傳入的各種實時數(shù)據(jù)進行過濾,濾除允許值之外的異常數(shù)據(jù);2)數(shù)值轉換通過數(shù)據(jù)采集模塊獲得的電信號,往往不是所需的實際數(shù)據(jù),如通過模擬量端口采集溫度數(shù)據(jù)時,模擬量端口獲得的是電壓值,但是所需的是溫度值,這就需要設定轉換規(guī)則,對允許值范圍內的原始數(shù)據(jù)進行轉換,轉換成有意義的值;3)嚴重等級判斷根據(jù)設定的嚴重等級范圍,對轉換過的有意義的實時數(shù)據(jù)進行嚴重等級判斷;4)設備聯(lián)動觸發(fā)根據(jù)設定的設備聯(lián)動規(guī)則,結合各實時數(shù)據(jù)當前所處的嚴重等級,判斷是否有設備聯(lián)動事件被觸發(fā),如果是則調用設備控制模塊控制相應的設備進行聯(lián)動;5)數(shù)據(jù)傳輸/存儲控制根據(jù)當前的聯(lián)網(wǎng)狀況,決定調用數(shù)據(jù)傳輸模塊將實時數(shù)據(jù)通過以太網(wǎng)或GPRS/3G網(wǎng)絡傳輸?shù)竭h程計算機,或者調用數(shù)據(jù)存儲模塊將實時數(shù)據(jù)保存在本地Flash存儲器;6)本地顯示調用數(shù)據(jù)顯示模塊將采集到的實時數(shù)據(jù)顯示在本地IXD顯示器上。數(shù)據(jù)處理模塊在不同的應用環(huán)境下需求會有所不同,采用Python語言編寫該模塊,可以保證配置、維護和擴展的靈活性,使其能適應各種場合的需求。嵌入式ffeb krver模塊,包括了實時數(shù)據(jù)監(jiān)控頁面、采集參數(shù)配置頁面、控制邏輯配置頁面、系統(tǒng)參數(shù)配置頁面和遠程升級頁面1)實時數(shù)據(jù)監(jiān)控頁面通過AJAX技術動態(tài)獲取各實時數(shù)據(jù)的值以及所處的嚴重等級,并將結果顯示在頁面上;2)采集參數(shù)配置頁面對各采集端口的采集使能狀態(tài)、采集頻率、允許值范圍、數(shù)值轉換規(guī)則及嚴重等級范圍的設置;3)控制邏輯配置頁面包括聯(lián)動的設置,聯(lián)動的條件為各種實時數(shù)據(jù)所處的嚴重等級范圍的與、或邏輯關系組合,聯(lián)動的動作包括繼電器的開閉以及串口的協(xié)議包發(fā)送,每個聯(lián)動動作可以同時觸發(fā)多個設備;4)系統(tǒng)參數(shù)配置頁面設備IP,服務及傳輸端口號,遠程計算機IP,系統(tǒng)時間的設置;5)遠程升級頁面包括對單個模塊的升級、整個程序的升級、Python擴展庫的升級。
圖1本發(fā)明框2傳統(tǒng)開發(fā)流程與Python開發(fā)流程對比圖3具體實施方案軟件架構4具體實施方案硬件連線5具體實施方案程序流程圖
具體實施例方式如圖3所示,選擇一塊運行WinCE5. 0/6. 0且?guī)в心M量端口、數(shù)字量端口、1 端口、多個串口(含RS-232/RS-485)、繼電器端口、IXD顯示器端口、看門狗、以太網(wǎng)口等接口的ARM9工控板,首先將Python解析器及其內置的庫移植到WinCE5. 0/6. 0上,并實現(xiàn) Python的C語言模擬量端口庫、數(shù)字量端口庫、1 端口庫,串口庫、繼電器端口庫、IXD庫、 看門狗庫、GPRS庫、3G庫。這樣就完成了底層平臺的構建。如圖4所示,依次連接好硬件設備 溫度傳感器連接到1 端口 ; 濕度傳感器連接到模擬量端口 ; 煙感傳感器連接到數(shù)字量端口 ; 水浸傳感器連接到數(shù)字量端口 ; UPS 連接到串口 (RS-232); 智能空調連接到串口(RS-485); GPRS調制解調器連接到串口(RS-232);
報警燈連接到繼電器端口 ; 揚聲器連接到繼電器端口 ; IXD顯示器連接到IXD顯示器端口 ; hternet 接入以太網(wǎng)口;遠程計算機通過hternet與工控板相連。如圖5所示,為該嵌入式數(shù)據(jù)采集與設備控制系統(tǒng)的流程圖,其處理流程為1)系統(tǒng)初始化,Python解析器的啟動及初始化,各端口初始化,網(wǎng)絡連接初始化, 嵌入式ffeb krver啟動,看門狗啟動,并加載各種系統(tǒng)配置參數(shù);2)實時數(shù)據(jù)采集,數(shù)據(jù)采集模塊根據(jù)設定的采集頻率及使能狀態(tài)采集各種實時數(shù)據(jù),主要有a) 1 端口的溫度b)模擬量端口的濕度c)數(shù)字量端口的煙感和水浸d)串口(連接UPS的RS-232)的市電電壓、電流、頻率、UPS負載和狀態(tài)等。3)異常數(shù)據(jù)過濾,根據(jù)允許值范圍過濾數(shù)據(jù),例如溫度的允許值為-50 100°C, 如果采集到的對應值超出了這個范圍,就過濾掉該數(shù)據(jù),停止對它的進一步處理; 4)數(shù)值轉換,對允許值范圍內的原始數(shù)據(jù)進行轉換,轉換成有意義的值,例如濕度傳感器經(jīng)過模擬量端口采集到的數(shù)據(jù)為0 5V的電壓值,它與濕度0 100%相對應,這就需要把電壓值轉換為濕度;5)嚴重等級判斷,對轉換后的數(shù)值進行嚴重等級判斷,例如表1濕度嚴重等級示例
權利要求
1.一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于該系統(tǒng)的軟件部分由數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、設備控制模塊、數(shù)據(jù)存儲模塊、數(shù)據(jù)傳輸模塊、數(shù)據(jù)顯示模塊、看門狗模塊和嵌入式Web Server模塊組成,并且各模塊采用Python語言實現(xiàn),運行于Python解析器中。
2.根據(jù)權利要求1所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的數(shù)據(jù)采集模塊與模擬量端口、數(shù)字量端口、1 端口和串口連接;所述的設備控制模塊與繼電器端口和串口連接;所述的數(shù)據(jù)傳輸模塊與以太網(wǎng)或GPRS/3G網(wǎng)絡連接;所述的數(shù)據(jù)顯示模塊與LCD顯示器連接;所述的看門狗模塊與看門狗電路連接;各模塊與硬件或端口的連接方式是各硬件或端口由嵌入式操作系統(tǒng)的底層驅動控制,用Python語言C擴展封裝各底層驅動操作形成Python擴展庫,各模塊通過調用Python擴展庫控制相應的硬件或端口。
3.根據(jù)權利要求1所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的數(shù)據(jù)存儲模塊以嵌入式數(shù)據(jù)庫的形式將實時數(shù)據(jù)保存到本地Flash存儲器中。
4.根據(jù)權利要求1所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的數(shù)據(jù)處理模塊,其處理步驟如下1)異常數(shù)據(jù)過濾,根據(jù)設定的允許值范圍,對數(shù)據(jù)采集模塊傳入的各種實時數(shù)據(jù)進行過濾,濾除允許值之外的異常數(shù)據(jù);2)數(shù)值轉換,將在允許值范圍內的原始數(shù)據(jù)通過一定的轉換規(guī)則,轉換成具有特定含義的數(shù)據(jù);3)嚴重等級判斷,根據(jù)設定的嚴重等級范圍,對轉換過的具有特定含義的數(shù)據(jù)進行嚴重等級判斷;4)設備聯(lián)動觸發(fā),根據(jù)設定的設備聯(lián)動規(guī)則,結合各實時數(shù)據(jù)當前所處的嚴重等級,判斷是否有設備聯(lián)動事件被觸發(fā),并根據(jù)結果決定是否調用設備控制模塊控制相應的設備進行聯(lián)動;5)數(shù)據(jù)傳輸/存儲控制,根據(jù)當前的聯(lián)網(wǎng)狀況,決定調用數(shù)據(jù)傳輸模塊將實時數(shù)據(jù)通過以太網(wǎng)或GPRS/3G網(wǎng)絡傳輸?shù)竭h程計算機,或者調用數(shù)據(jù)存儲模塊將實時數(shù)據(jù)保存在本地Flash存儲器;6)本地顯示,調用數(shù)據(jù)顯示模塊將采集到的實時數(shù)據(jù)顯示在本地IXD顯示器上。
5.根據(jù)權利要求1所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的嵌入式ffeb krver模塊包括實時數(shù)據(jù)監(jiān)控頁面、采集參數(shù)配置頁面、控制邏輯配置頁面、系統(tǒng)參數(shù)配置頁面和遠程升級頁面。
6.根據(jù)權利要求1或5所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的嵌入式Web krver模塊的實時數(shù)據(jù)監(jiān)控頁面通過AJAX技術動態(tài)獲取各實時數(shù)據(jù)的值以及所處的嚴重等級,并將結果顯示在頁面上。
7.根據(jù)權利要求1或5所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的嵌入式Web krver模塊的采集參數(shù)配置頁面包括對各采集端口的采集使能狀態(tài)、采集頻率、允許值范圍、數(shù)值轉換規(guī)則及嚴重等級范圍的設置。
8.根據(jù)權利要求1或5所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的嵌入式Web krver模塊的控制邏輯配置頁面包括聯(lián)動的設置,聯(lián)動的條件為各種實時數(shù)據(jù)所處的嚴重等級范圍的與、或邏輯關系組合,聯(lián)動的動作包括繼電器的開閉以及串口的協(xié)議包發(fā)送,每個聯(lián)動動作可以同時觸發(fā)多個設備。
9.根據(jù)權利要求1或5所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于所述的嵌入式Web krver模塊的系統(tǒng)參數(shù)配置頁面包括設備IP,服務及傳輸端口號,遠程計算機IP,系統(tǒng)時間的設置。
10.根據(jù)權利要求1或5所述的一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng),其特征在于 所述的嵌入式Web krver模塊的遠程升級頁面包括單個模塊的升級、整個程序的升級、 Python擴展庫的升級。
全文摘要
本發(fā)明公開了一種嵌入式數(shù)據(jù)采集與設備控制系統(tǒng)。該系統(tǒng)軟件部分由數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、設備控制模塊、數(shù)據(jù)存儲模塊、數(shù)據(jù)傳輸模塊、數(shù)據(jù)顯示模塊、看門狗模塊和嵌入式Web Server模塊組成。各軟件模塊采用Python語言開發(fā),運行于Python解析器中,程序的開發(fā)和維護難度小,修改簡單,可擴展性好。本系統(tǒng)能夠采集數(shù)字量、模擬量、I2C以及智能設備等多種信號,具有對繼電器和智能設備進行控制聯(lián)動的能力,嵌入式Web Server模塊使得系統(tǒng)的配置簡單、靈活,還可基于模塊對系統(tǒng)進行遠程升級,適用于各種需要采集數(shù)據(jù)并根據(jù)實時數(shù)據(jù)控制設備的場合。
文檔編號G05B19/418GK102402209SQ20101028258
公開日2012年4月4日 申請日期2010年9月14日 優(yōu)先權日2010年9月14日
發(fā)明者周立功 申請人:廣州致遠電子有限公司