www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件

摘要:本文是針對(duì)當(dāng)前礦業(yè)安全事故頻繁,設(shè)計(jì)了這樣一個(gè)能在惡劣環(huán)境下正常工作的安全系統(tǒng)。首先介紹了嵌入式系統(tǒng)的相關(guān)概念和軟硬件環(huán)境,闡明煤礦井上監(jiān)控終端的嵌入式系統(tǒng)需求和Windows CE 嵌入式操作系統(tǒng)選擇;接著,從嵌入式數(shù)據(jù)庫(kù)的相關(guān)概念和煤礦井上

監(jiān)控終端的嵌入式數(shù)據(jù)庫(kù)需求及特點(diǎn)出發(fā),詳細(xì)研究Berkeley DB 數(shù)據(jù)庫(kù)的關(guān)鍵技術(shù)特性以及在煤礦井上監(jiān)控系統(tǒng)中的適用性,并介紹Berkeley DB 數(shù)據(jù)庫(kù)的基本概念和基本API 函數(shù)操作。

引言

嵌入式數(shù)據(jù)庫(kù)不僅在功能概念及系統(tǒng)特點(diǎn)上與傳統(tǒng)的數(shù)據(jù)庫(kù)有著很大的差別,而且在它的應(yīng)用方式上也是不同的。嵌入式數(shù)據(jù)庫(kù)并不是直接銷售給用戶,而是提供給設(shè)備的生產(chǎn)商或應(yīng)用的開發(fā)商,以便直接生成在嵌入式系統(tǒng)和應(yīng)用之中,嵌入式數(shù)據(jù)庫(kù)在許多領(lǐng)域擁有廣泛的應(yīng)用前景,如手持式計(jì)算和移動(dòng)計(jì)算,智能設(shè)備,在本文中便提供了較好的應(yīng)用。

1 系統(tǒng)需求分析

前端數(shù)據(jù)采集、監(jiān)控、發(fā)送等嵌入式系統(tǒng)軟件開發(fā)工作。為了滿足前端嵌入式監(jiān)控系統(tǒng)對(duì)井下實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)、查詢、顯示等大量處理要求,必須安裝數(shù)據(jù)庫(kù)管理系統(tǒng),而傳統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)顯然因其資源占用大、數(shù)據(jù)管理效率低等特點(diǎn)不能適用與嵌入式礦場(chǎng)監(jiān)控系統(tǒng),因此,探索一種適用于礦場(chǎng)惡劣環(huán)境下的嵌入式監(jiān)控終端的數(shù)據(jù)庫(kù)系統(tǒng)成為本文進(jìn)展的關(guān)鍵。

嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)是隨著嵌入式應(yīng)用的發(fā)展而興起的一類嵌入式應(yīng)用軟件,已經(jīng)成為數(shù)據(jù)庫(kù)技術(shù)研究的一個(gè)重要分支,在移動(dòng)計(jì)算平臺(tái)(如HPC,PDA)、家庭信息環(huán)境(如機(jī)頂盒和數(shù)字電視)、通訊計(jì)算平臺(tái)、汽車電子平臺(tái)、電子商務(wù)平臺(tái)(如智能卡應(yīng)用)等領(lǐng)域得到廣泛的應(yīng)用。

為解決這些問(wèn)題,提出了嵌入式系統(tǒng)在煤礦井上監(jiān)控系統(tǒng)中的應(yīng)用,嵌入式系統(tǒng)技術(shù)的小體積、高可靠性、低功耗和低成本等特點(diǎn)滿足井上監(jiān)控系統(tǒng)設(shè)備的嚴(yán)格要求及現(xiàn)場(chǎng)惡劣生產(chǎn)環(huán)境的適應(yīng)性,并且監(jiān)控終端移植嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng),滿足傳統(tǒng)煤礦安全監(jiān)控系統(tǒng)的主要功能需求:

1.數(shù)據(jù)通信功能需求。

2.實(shí)時(shí)查詢及顯示需求。

3.用戶登錄管理需求。

2 系統(tǒng)總體設(shè)計(jì)

嵌入式礦場(chǎng)安全系統(tǒng)的核心是數(shù)據(jù)處理。監(jiān)控終端實(shí)時(shí)采集礦場(chǎng)各類傳感器的模擬信號(hào)(如瓦斯?jié)舛?、一氧化碳濃度、風(fēng)速、溫度、濕度、粉塵、壓力等)和現(xiàn)場(chǎng)設(shè)備控制設(shè)備的開關(guān)量信號(hào)(如風(fēng)機(jī)啟、停狀態(tài)等),實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)顯示、實(shí)時(shí)/歷史曲線顯示、查詢和報(bào)表打印、聲光報(bào)警、手動(dòng)/自動(dòng)控制,以及網(wǎng)絡(luò)通信等功能。而所有這些功能的實(shí)現(xiàn)都是以數(shù)據(jù)管理為基礎(chǔ)的,嵌入式數(shù)據(jù)庫(kù)系統(tǒng)可以有效地組織和管理煤礦場(chǎng)下各類數(shù)據(jù),從而達(dá)到礦場(chǎng)監(jiān)控系統(tǒng)實(shí)時(shí)查詢、控制等功能的設(shè)計(jì)要求。圖1 是一個(gè)典型的采用了嵌入式數(shù)據(jù)庫(kù)的礦場(chǎng)安全系統(tǒng)的結(jié)構(gòu)圖:


系統(tǒng)采用 Windows CE 嵌入式操作系統(tǒng)和Berkeley DB 嵌入式數(shù)據(jù)庫(kù)作為礦場(chǎng)井上監(jiān)控系統(tǒng)終端應(yīng)用程序的開發(fā)平臺(tái);以現(xiàn)有的礦場(chǎng)安全監(jiān)測(cè)監(jiān)控系統(tǒng)為數(shù)據(jù)源,以文件共享的方式實(shí)時(shí)采集現(xiàn)場(chǎng)安全生產(chǎn)數(shù)據(jù),進(jìn)行數(shù)據(jù)的處理和發(fā)送。

3.系統(tǒng)主要功能模塊實(shí)現(xiàn)

3.1 數(shù)據(jù)采集模塊

數(shù)據(jù)采集模塊實(shí)現(xiàn)煤礦數(shù)據(jù)源傳感器實(shí)時(shí)數(shù)據(jù)的讀取,并設(shè)計(jì)成一定格式的數(shù)據(jù)結(jié)構(gòu),以便數(shù)據(jù)庫(kù)和應(yīng)用程序操作。本系統(tǒng)以現(xiàn)有的礦場(chǎng)安全系統(tǒng)(MSUS )為數(shù)據(jù)源,安全系統(tǒng)按照協(xié)議規(guī)定的文件格式組織傳感器數(shù)據(jù),存儲(chǔ)在指定本地磁盤路徑中。

1.設(shè)備安裝信息文件(dev.xml )

傳感器設(shè)備文件分為數(shù)據(jù)頭和數(shù)據(jù)體,數(shù)據(jù)頭格式規(guī)定如下:

<礦場(chǎng)編號(hào)><礦井名稱><日期><傳感器個(gè)數(shù)><其他><保留>

2.實(shí)時(shí)數(shù)據(jù)文件(rtdata. xml )

實(shí)時(shí)數(shù)據(jù)文件分為數(shù)據(jù)頭和數(shù)據(jù)體,數(shù)據(jù)頭格式規(guī)定如下:

<礦場(chǎng)編號(hào)><數(shù)據(jù)上傳時(shí)間><傳感器數(shù)目>

數(shù)據(jù)體格式規(guī)定如下:

<傳感器編號(hào)><數(shù)據(jù)值><數(shù)據(jù)狀態(tài)>

其中,數(shù)據(jù)狀態(tài)按位來(lái)表示數(shù)據(jù)的狀態(tài)(用二進(jìn)制定義,使用時(shí)轉(zhuǎn)換為整數(shù)),其文本對(duì)應(yīng)關(guān)系如下:


(二)數(shù)據(jù)采集程序設(shè)計(jì)

數(shù)據(jù)采集模塊程序使用了 ReadFile.h 和ReadFile.cpp 文件,因此本文設(shè)計(jì)了CReadFile 類,該類封裝了對(duì)dev.xml 和rtdata.xml 交換文件所有的數(shù)據(jù)采集操作。根據(jù) dev.xml 和rtdata.xml 交換文件的構(gòu)成,以及數(shù)據(jù)庫(kù)存儲(chǔ)操作上的考慮,程序?yàn)槊總€(gè)傳感器設(shè)計(jì)了DEVDATA 和REALDATA 結(jié)構(gòu)體,分別用來(lái)保存dev.xml 和rtdata.xml 文件的數(shù)據(jù)信息。DEVDATA 結(jié)構(gòu)體如下所示:

typedef struct devdata

{ TCHAR m_str_devSubstation[MAXLENGTH];//分站

TCHAR m_str_devID[MAXID];//傳感器編號(hào)

TCHAR m_str_devPlace[MAXLENGTH];//安裝地點(diǎn)

TCHAR m str_devName[MAX];//檢測(cè)類別

TCHAR m str_devType[MAX];//傳感器類型

TCHAR m str_devUnit[MAX];//單位

float m_data_up;//量程上限

float mes_data_down;//量程下限

float m_alarrn_up;//報(bào)警上限

float m_alarm_down;//報(bào)警下限

float m_power_off;//斷電值

float m_power_on;//復(fù)電值

}DEVDATA;

REALDATA 結(jié)構(gòu)體如下所示:

typedef struct realdata

{TCHAR m_str_devID[MAXID];//傳感器編號(hào)

float m_data;//傳感器數(shù)值

TCHAR m_str_dataStatus[MAXSTATUS];//數(shù)據(jù)狀態(tài)

}REALDATA;

CReadFile 類使用了CPtrList 鏈表數(shù)據(jù)結(jié)構(gòu),用以管理交換文件的所有傳感器信息,數(shù)據(jù)節(jié)點(diǎn)為DEVDATA 和REALDATA 結(jié)構(gòu)體。

3.2 數(shù)據(jù)存儲(chǔ)模塊

將傳感器設(shè)備上傳時(shí)間作為 key,封裝在DEVDATA 結(jié)構(gòu)體中的設(shè)備安裝信息和封裝在REALDATA 結(jié)構(gòu)體中的實(shí)時(shí)數(shù)據(jù)信息分別構(gòu)成數(shù)據(jù)庫(kù)的data,從而構(gòu)成兩組Key 到Data對(duì)。因此,該方案將形成兩張表,分別存儲(chǔ)在兩個(gè)數(shù)據(jù)庫(kù)文件中。將傳感器設(shè)備安裝信息和實(shí)時(shí)數(shù)據(jù)信息形成兩個(gè)數(shù)據(jù)庫(kù)文件分別存儲(chǔ),只在設(shè)備安裝信息改變的時(shí)候才會(huì)進(jìn)行設(shè)備文件的存儲(chǔ)操作,這樣大大減少了數(shù)據(jù)庫(kù)文件的磁盤占用空間。

Berkeley DB 用Key/Data(關(guān)鍵詞/數(shù)據(jù))來(lái)區(qū)分?jǐn)?shù)據(jù)庫(kù)中的數(shù)據(jù),Key/Data 對(duì)是BerkeleyDB 用來(lái)進(jìn)行數(shù)據(jù)庫(kù)管理的基礎(chǔ),由這兩者構(gòu)成的Key/Data 對(duì)組成了數(shù)據(jù)庫(kù)中的一個(gè)基本結(jié)構(gòu)單元,而整個(gè)數(shù)據(jù)庫(kù)實(shí)際上就是由許多這樣的結(jié)構(gòu)單元所構(gòu)成的。也就是說(shuō),調(diào)用數(shù)據(jù)庫(kù)接口實(shí)際上就是提供了相應(yīng)的關(guān)鍵詞,通過(guò)該關(guān)鍵詞來(lái)查找要操作的數(shù)據(jù)。

如果把一組相關(guān)的 Key/Data 對(duì)也看作一個(gè)表的話,那么每一個(gè)數(shù)據(jù)庫(kù)只允許存放一個(gè)table,因此,一般一種類型的Key/Data 對(duì)構(gòu)成一個(gè)數(shù)據(jù)庫(kù)文件。數(shù)據(jù)庫(kù)存儲(chǔ)代碼設(shè)計(jì)主要分為設(shè)備安裝信息(key/data 對(duì)為設(shè)備上傳時(shí)間/DEVDATA 結(jié)構(gòu)體)存儲(chǔ)代碼設(shè)計(jì)和實(shí)時(shí)數(shù)據(jù)信息(key/data 對(duì)為設(shè)備一上傳時(shí)間/REALDATA 結(jié)構(gòu)體)存儲(chǔ)代碼設(shè)計(jì)。Berkeley DB 是以文件為單位進(jìn)行數(shù)據(jù)庫(kù)管理的,由于設(shè)備安裝信息只在數(shù)據(jù)改變的時(shí)候才進(jìn)行數(shù)據(jù)庫(kù)存儲(chǔ)操作,并且其間隔周期較長(zhǎng),因此作者設(shè)計(jì)了dev.db 文件實(shí)現(xiàn)安裝信息的存儲(chǔ)管理;由于實(shí)時(shí)數(shù)據(jù)信息的更新周期較短,數(shù)據(jù)庫(kù)存儲(chǔ)操作頻繁,并且每天都會(huì)有數(shù)據(jù)的采集和更新,因此作者以每天的日期為單位設(shè)計(jì)了實(shí)時(shí)數(shù)據(jù)庫(kù)文件,系統(tǒng)將會(huì)獲取當(dāng)天的日期,并以之為文件名形成數(shù)據(jù)庫(kù)文件進(jìn)行數(shù)據(jù)庫(kù)操作,例如當(dāng)天的日期為2007 年2 月8 日,那么數(shù)據(jù)庫(kù)文件名為 2007-02-08.db 。

設(shè)備安裝信息和實(shí)時(shí)數(shù)據(jù)信息的存儲(chǔ)代碼具有一定的相似性,作者以實(shí)時(shí)數(shù)據(jù)信息的存儲(chǔ)代碼為例說(shuō)明其設(shè)計(jì)過(guò)程,程序流程如下所示:


圖 2 設(shè)備安裝信息數(shù)據(jù)庫(kù)存儲(chǔ)程序流程

3.3 數(shù)據(jù)查詢模塊

實(shí)時(shí)/歷史數(shù)據(jù)查詢模塊設(shè)計(jì)主要就是GetDevKey、DataQueryByRealTime 和DataQuery函數(shù)設(shè)計(jì)。

1. DataQueryByRealTime 函數(shù)設(shè)計(jì)

若用戶輸入的查詢時(shí)間段內(nèi)設(shè)備安裝信息沒(méi)有改變,GetDevKey 函數(shù)會(huì)直接返回FALSE,程序接著會(huì)調(diào)用DataQueryByRealTime 函數(shù)查詢實(shí)時(shí)數(shù)據(jù)庫(kù)文件,設(shè)備安裝信息直接從m-devList 結(jié)構(gòu)體鏈表中獲得,函數(shù)設(shè)計(jì)包括如下:

①根據(jù)用戶輸入的查詢?nèi)掌?,形成?shí)時(shí)數(shù)據(jù)庫(kù)文件如2007-02-09.db,打開實(shí)時(shí)數(shù)據(jù)庫(kù)。

②構(gòu)建游標(biāo)cursor,使用get 方法,以查詢時(shí)間為key,flag 標(biāo)簽為DB_ SET_ RANGE 游標(biāo)定位到數(shù)據(jù)庫(kù)文件多重記錄的首一記錄。

③遍歷數(shù)據(jù)庫(kù)文件擁有相同 kev 的多重記錄,將data 中傳感器ID 號(hào)與用戶輸入ID 號(hào)相等的REALDATA 結(jié)構(gòu)體與相應(yīng)的m devList 鏈表節(jié)點(diǎn)DEVDATA 結(jié)構(gòu)體在列表框控件(CC1istCtrl)中顯示出來(lái)。

2. DataQuery 函數(shù)設(shè)計(jì)

若設(shè)備查詢時(shí)間對(duì)應(yīng)的安裝信息相對(duì)于當(dāng)前時(shí)間段己經(jīng)改變,GetDevKey 函數(shù)會(huì)返回正確的設(shè)備安裝信息查詢時(shí)間devKey,這個(gè)查詢時(shí)間可能跟用戶輸入的傳感器查詢時(shí)間不同;程序接著會(huì)調(diào)用DataQuery 函數(shù),并將這個(gè)正確的設(shè)備查詢時(shí)間devKey、用戶輸入的傳感器實(shí)時(shí)數(shù)據(jù)查詢時(shí)間realKey、傳感器ID 號(hào)strDevID 以及實(shí)時(shí)數(shù)據(jù)庫(kù)文件名strRealDbName以形參方式傳給DataQuery 函數(shù),其函數(shù)設(shè)計(jì)包括如下:

①打開設(shè)備數(shù)據(jù)庫(kù) dev.db 文件,根據(jù)形參strRealDbName 打開實(shí)時(shí)數(shù)據(jù)庫(kù)文件。

②構(gòu)建游標(biāo) cursor,使用get 方法,分別以devKey 和realKey 為數(shù)據(jù)庫(kù)的key, flag標(biāo)簽為DB_ SET_ RANGE,游標(biāo)定位到設(shè)備數(shù)據(jù)庫(kù)文件和實(shí)時(shí)數(shù)據(jù)庫(kù)文件的首記錄。

③遍歷數(shù)據(jù)庫(kù)文件擁有相同key 的多重記錄,若設(shè)備數(shù)據(jù)庫(kù)文件記錄的data 中(DEVDATA 結(jié)構(gòu)體)傳感器ID 號(hào)與實(shí)時(shí)數(shù)據(jù)庫(kù)文件記錄的data 中(REALDATA 結(jié)構(gòu)體)傳感器ID 號(hào)相等,則將這兩個(gè)data 信息在列表框控件(CC1istCtrl)中顯示出來(lái)。

4.總結(jié)

本文的創(chuàng)新點(diǎn):分析嵌入式煤礦井上監(jiān)控系統(tǒng)的功能需求,開發(fā)設(shè)計(jì)了基于Berkeley DB數(shù)據(jù)庫(kù)和Windows CE 的礦場(chǎng)安全系統(tǒng),實(shí)現(xiàn)了窗口登錄、數(shù)據(jù)采集、系統(tǒng)界面、數(shù)據(jù)庫(kù)存儲(chǔ)、實(shí)時(shí)/歷史數(shù)據(jù)查詢、實(shí)時(shí)曲線顯示等功能模塊,深入討論研究了系統(tǒng)的數(shù)據(jù)采集方法、數(shù)據(jù)庫(kù)KEY/DATA 對(duì)存儲(chǔ)方案及實(shí)時(shí)/歷史傳感器數(shù)據(jù)的數(shù)據(jù)庫(kù)查詢策略。在實(shí)際生產(chǎn)中工作穩(wěn)定,查詢速度快,達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。



liren

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉