技術(shù)頻道

      嵌入式狀態(tài)監(jiān)測(cè)與故障診斷裝置的設(shè)計(jì)

      1 引 言

        傳統(tǒng)的狀態(tài)監(jiān)測(cè)與故障診斷裝置通常采用現(xiàn)場(chǎng)總線方式,但此方式具有很大局限性:現(xiàn)場(chǎng)總線類(lèi)型多樣,相互之間差異較大,不能實(shí)現(xiàn)互操作,彼此連接困難,系統(tǒng)的信息共享和實(shí)時(shí)性不盡如人意。為了更好地搭起終端設(shè)備和遠(yuǎn)程監(jiān)控系統(tǒng)通信的橋梁,本文提出并設(shè)計(jì)了基于工業(yè)以太網(wǎng)的嵌入式狀態(tài)監(jiān)測(cè)與故障診斷裝置,和傳統(tǒng)裝置相比,它有以下優(yōu)勢(shì):實(shí)現(xiàn)了系統(tǒng)的高效、統(tǒng)一;用戶可以通過(guò)Internet隨時(shí)隨地監(jiān)控大范圍的終端設(shè)備,取代了大量前置PC,具有更好的實(shí)時(shí)、實(shí)效性[1,2]。本裝置將現(xiàn)場(chǎng)采集到的實(shí)時(shí)數(shù)據(jù)通過(guò)以太網(wǎng)直接傳送到內(nèi)嵌的Web服務(wù)器上,服務(wù)器生成用于遠(yuǎn)程監(jiān)測(cè)和遠(yuǎn)程故障診斷的web頁(yè)面,用戶通過(guò)鍵入設(shè)備的IP地址,就可以隨時(shí)瀏覽到被監(jiān)測(cè)設(shè)備的現(xiàn)場(chǎng)運(yùn)行情況、數(shù)據(jù)采集信息以及報(bào)警信息等。

      2 裝置結(jié)構(gòu)與特點(diǎn)

        目前,機(jī)電設(shè)備的狀態(tài)監(jiān)測(cè)與故障診斷的整個(gè)系統(tǒng)結(jié)構(gòu)如圖1所示:


      圖1 嵌入式狀態(tài)監(jiān)測(cè)與故障診斷系統(tǒng)結(jié)構(gòu)

        本文設(shè)計(jì)開(kāi)發(fā)了此體系的核心裝置——嵌入式機(jī)電設(shè)備監(jiān)控裝置,主要分為3個(gè)模塊:

        (1)數(shù)據(jù)采集模塊:包括多個(gè)現(xiàn)場(chǎng)數(shù)據(jù)采集單元。主要完成現(xiàn)場(chǎng)數(shù)據(jù)的檢測(cè)、采集。

        (2)數(shù)據(jù)存儲(chǔ)與處理模塊:包括嵌入式現(xiàn)場(chǎng)總線/以太網(wǎng)監(jiān)控工控機(jī)和數(shù)據(jù)庫(kù)。它通過(guò)EtherNet/IP協(xié)議,和現(xiàn)場(chǎng)總線數(shù)據(jù)采集單元進(jìn)行通信,實(shí)現(xiàn)靈敏檢測(cè)和數(shù)據(jù)存儲(chǔ)。

        (3)在線監(jiān)測(cè)模塊:包括嵌入式Web服務(wù)器和監(jiān)測(cè)網(wǎng)站。服務(wù)器生成用于遠(yuǎn)程監(jiān)測(cè)和故障診斷的web頁(yè)面。網(wǎng)絡(luò)用戶可以隨時(shí)掌握現(xiàn)場(chǎng)運(yùn)轉(zhuǎn)情況,使遠(yuǎn)程監(jiān)控真正實(shí)現(xiàn)。

        本裝置擁有以下三個(gè)先進(jìn)的特征:

        1)應(yīng)用工業(yè)以太網(wǎng),使Ethernet/IP設(shè)備和現(xiàn)場(chǎng)設(shè)備能夠通信。為了實(shí)現(xiàn)這個(gè)功能,我們將以太網(wǎng)協(xié)議移植進(jìn)嵌入式Linux。

        2)通過(guò)瀏覽器支持機(jī)電設(shè)備狀態(tài)的監(jiān)控。我們?cè)谇度胧絃inux中移植了BOA,設(shè)計(jì)了動(dòng)態(tài)網(wǎng)頁(yè)實(shí)時(shí)監(jiān)控機(jī)電設(shè)備。

        3)支持大容量數(shù)據(jù)存儲(chǔ),用一個(gè)黑匣子對(duì)設(shè)備的實(shí)時(shí)數(shù)據(jù)資源進(jìn)行監(jiān)控。通過(guò)大容量IDE總線的擴(kuò)展,連接IDE系統(tǒng)硬盤(pán),存儲(chǔ)大量數(shù)據(jù)[3]。

      3 裝置的硬件設(shè)計(jì)

        AT91RM9200是ATMEL針對(duì)系統(tǒng)控制及通信領(lǐng)域推出的基于ARM920T內(nèi)核的新微型控制器。它具有獨(dú)立的16KB指令和16KB數(shù)據(jù) cache、全功能的MMU虛擬內(nèi)存管理單元、16KB SRAM和128KB ROM、64MB NAND Flash 存儲(chǔ)器、LCD控制器、EBI 接口控制器、4個(gè)32位的PIO控制器、20通道的外設(shè)數(shù)據(jù)控制器(DMA)、3個(gè)同步串行控制器(SSC)、4個(gè)通用同步/異步接收/發(fā)送器(USART)、主/從串行設(shè)備接口SPI、16路12位ADC、1通道16位DAC、多媒體卡接口(MCI)、以太網(wǎng)10/100 Base-T 以太網(wǎng)媒體訪問(wèn)控制器(MAC)、觸摸屏接口、IDE接口等。

        在處理器豐富資源的基礎(chǔ)上,本裝置對(duì)其進(jìn)行了相關(guān)的配置和擴(kuò)展,將處理器通過(guò)16路12位ADC接口對(duì)機(jī)電設(shè)備的電壓或電流信號(hào)進(jìn)行采集,IDE接口外掛大容量IDE硬盤(pán),用于存儲(chǔ)web、采集的數(shù)據(jù)等。通過(guò)DM9161芯片,該微處理器把EMAC接口外擴(kuò)為以太網(wǎng)接口RJ45,與工業(yè)以太網(wǎng)連接 [4]。AT91RM9200通過(guò)SPI接口連接CAN控制器SJA1000,CAN控制器與CAN收發(fā)器PCA82C250相連,用于連接 DeviceNet。硬件結(jié)構(gòu)如圖2所示:


      圖2 硬件結(jié)構(gòu)圖

      4 裝置的軟件架構(gòu)

        軟件結(jié)構(gòu)如圖3所示:


      圖3 軟件架構(gòu)圖

        4.1移植工業(yè)以太網(wǎng)協(xié)議

        工業(yè)以太網(wǎng)EtherNet/IP,是一種適用于工業(yè)環(huán)境的通訊體系,能夠在廣闊的區(qū)域中支持大量現(xiàn)場(chǎng)設(shè)備的連接。它采用通用工業(yè)協(xié)議(CIP)作為其應(yīng)用層協(xié)議。CIP協(xié)議支持各種控制、配置和信息處理服務(wù),包括顯式報(bào)文(用于信息傳輸,靈活的報(bào)文交換)以及隱式報(bào)文(用于控制和實(shí)時(shí)I/O數(shù)據(jù)的傳輸),支持輪詢、周期和狀態(tài)改變數(shù)據(jù)傳輸觸發(fā)機(jī)制,點(diǎn)對(duì)點(diǎn)單播和廣播數(shù)據(jù)傳輸方式[5,6]。OE服務(wù)的設(shè)計(jì)簡(jiǎn)化了EtherNet/IP的移植,只需要修改操作環(huán)境文件來(lái)適合ARM Linux操作體系。

        4.2 移植BOA

        從www.boa.org下載一個(gè)主流版本的BOA源碼包,本系統(tǒng)用的是boa-0.94.13.tar.gz。

        第一步:修改Makefile文件,編譯BOA源碼,生成BOA可執(zhí)行文件。

        修改Makefile文件,因?yàn)槲覀円幾g的是基于ARM的二進(jìn)制代碼,所以必須修改Makefile中的CC和CPP,分別將其改為交叉編譯器安裝的路徑:CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc

        CPP=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc -E

        然后運(yùn)行make進(jìn)行編譯,得到可執(zhí)行程序boa。

        第二步:配置BOA。

        BOA啟動(dòng)時(shí)將加載一個(gè)配置文件boa.conf,在boa程序運(yùn)行前,必須首先編輯該文件。在Boa源碼目錄下已有一個(gè)示例boa.conf,可以在其基礎(chǔ)上修改。配置好的主要內(nèi)容如下:

        User nobody

        Group 0

        ServerName AT91RM9200

        ErrorLog /var/log/boa/error_log

        AccessLog /var/log/boa/access_log

        DocumentRoot /var/www

        MimeTypes /etc/mime.types

        ScriptAlias /cgi-bin/ /var/www/cgi-bin/

        據(jù)此配置,需要?jiǎng)?chuàng)建日志文件目錄/var/log/boa,HTML文檔的主目錄/var/www,將靜態(tài)網(wǎng)頁(yè)存入該目錄下,CGI腳本所在目錄/var/www/cgi-bin,將cgi的腳本存放在該目錄下。

        4.3 CGI網(wǎng)頁(yè)設(shè)計(jì)

        CGI(通用網(wǎng)關(guān)接口)提供Web服務(wù)器一個(gè)執(zhí)行外部程序的通道,這種服務(wù)端技術(shù)建立了Web瀏覽器與Web服務(wù)器之間的交互。首先,瀏覽器將遠(yuǎn)程客戶端發(fā)送的請(qǐng)求送到Web服務(wù)器,Web服務(wù)器將數(shù)據(jù)使用STDIN送給CGI程序,執(zhí)行CGI程序后獲得緩沖區(qū)中的設(shè)備信息,最后,使用STDOUT輸出包含工業(yè)設(shè)備信息的HTML形式的結(jié)構(gòu)文件,經(jīng)Web服務(wù)器送回瀏覽器,顯示給遠(yuǎn)程客戶端。

        CGI程序可以用C語(yǔ)言編寫(xiě),并且能夠嵌入HTML腳本。它使用ARM-GCC編譯。CGI程序可以使用GET、POST或直接的URL參數(shù)傳遞方法與遠(yuǎn)程客戶端通信。以下是將采集到的設(shè)備數(shù)據(jù)顯示到網(wǎng)頁(yè)上的一段CGI程序,其中用到的數(shù)據(jù)庫(kù)是SQLite。SQLite是用一個(gè)小型C庫(kù)實(shí)現(xiàn)的一種強(qiáng)有力的嵌入式關(guān)系數(shù)據(jù)庫(kù)管理體制,它在體積與功能之間做到了較好的平衡,是理想的嵌入式數(shù)據(jù)庫(kù)。

        #include

        #include "sqlite3.h"

        main(){

        …

        sqlite3* p_db;

        sqlite3_open("mydb", &p_db);/*打開(kāi)數(shù)據(jù)庫(kù)*/

        /*執(zhí)行SQL語(yǔ)句選擇alarm表中的所有記錄,并在查詢結(jié)果的每一行上執(zhí)行回調(diào)函*/

        ret=sqlite3_exe c(p_db, "sel ect * from alarm;", callback,0, &errmsg);

        …

        sqlite3_close(p_db); /* 關(guān)閉數(shù)據(jù)庫(kù)*/

        }

        int callback(void *p_data, int n_columns, char **column_names, char **column_values){ /*回調(diào)函數(shù)*/

        int i;

        for(i=0; i < n_columns; i++)

        printf("%s=%s\n",column_names[i],column_values[i]? column_values[i]:"NULL");/*打印出查詢結(jié)果*/

        return 0;

        }

        4.4動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)

        服務(wù)器端為嵌入式ARM,只能運(yùn)行基于TCP/IP協(xié)議的ARM-GCC編譯的Linux下的C++服務(wù)程序,本文使用嵌入式C++實(shí)現(xiàn)的 UDP socket技術(shù)與客戶端通信。客戶端使用flash或Java Applet和服務(wù)程序通信,提供動(dòng)態(tài)網(wǎng)頁(yè)。本文使用flash完成動(dòng)態(tài)刷新,動(dòng)態(tài)刷新采用線程機(jī)制,后臺(tái)數(shù)據(jù)通過(guò)UDP socket技術(shù)與服務(wù)器端通信來(lái)獲取。

        服務(wù)器端和客戶端間的通信采用先進(jìn)B/S結(jié)構(gòu),用戶不需要在客戶機(jī)一端安裝診斷軟件即可以在遠(yuǎn)程進(jìn)行設(shè)備的監(jiān)測(cè)與故障診斷,形成一個(gè)開(kāi)放式的遠(yuǎn)程監(jiān)測(cè)與故障診斷系統(tǒng)。基于UDP協(xié)議的Socket通信B/S架構(gòu)如圖4所示:


      圖4 UDP Socket通信B/S架構(gòu)

        系統(tǒng)動(dòng)態(tài)頁(yè)面如圖5所示:


      圖5 狀態(tài)監(jiān)測(cè)與故障診斷系統(tǒng)主界面

      5 結(jié)束語(yǔ)

        本文作者創(chuàng)新點(diǎn):將工業(yè)以太網(wǎng)技術(shù)、嵌入式Web Server技術(shù)、CGI技術(shù)、動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)應(yīng)用于嵌入式狀態(tài)監(jiān)測(cè)與故障診斷裝置中,用戶通過(guò) URL就可以隨時(shí)查看現(xiàn)場(chǎng)設(shè)備的運(yùn)行情況和報(bào)警信息,與傳統(tǒng)監(jiān)控裝置相比,提高了監(jiān)控的實(shí)時(shí)性,縮短了檢修時(shí)間,節(jié)省了檢修費(fèi)用,真正實(shí)現(xiàn)了維修制度從事故維修、定期維修向視情維修的轉(zhuǎn)變。

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 无码人妻精品一区二区在线视频| 成人区人妻精品一区二区不卡视频| 日韩一区二区a片免费观看| 日本国产一区二区三区在线观看| 女女同性一区二区三区四区| 久久久不卡国产精品一区二区| 亚洲Av无码国产一区二区| 国产成人精品无码一区二区三区| 亚洲综合一区二区三区四区五区 | 中文字幕在线视频一区| 亚洲av无码片vr一区二区三区| 少妇激情一区二区三区视频| 亚洲av高清在线观看一区二区 | 射精专区一区二区朝鲜| 精品亚洲一区二区三区在线播放| 亚洲乱色熟女一区二区三区蜜臀| 国产精品高清一区二区三区| 中文字幕亚洲一区二区三区| 亚洲性日韩精品一区二区三区| 亚洲AV无码国产精品永久一区| 亚洲国产一区二区三区在线观看 | 亚洲AV香蕉一区区二区三区| 亚洲视频一区二区在线观看| 一区二区在线观看视频| 亚洲福利一区二区| 国模吧一区二区三区精品视频| 国产精品亚洲一区二区在线观看| 国产精品无码一区二区在线| 国产激情一区二区三区在线观看| 福利一区在线视频| 免费av一区二区三区| 最新欧美精品一区二区三区| 国产在线观看一区二区三区四区 | 精品久久一区二区| 日韩一区二区视频在线观看| 午夜视频久久久久一区| 美女一区二区三区| 一区二区日韩国产精品| 无码精品黑人一区二区三区| 成人在线一区二区| 无码丰满熟妇一区二区|