1 引 言
本文提出并設計了基于工業(yè)以太網(wǎng)的嵌入式狀態(tài)監(jiān)測與故障診斷裝置,和傳統(tǒng)裝置相比,它有以下優(yōu)勢:實現(xiàn)了系統(tǒng)的高效、統(tǒng)一;用戶可以通過Internet隨時隨地監(jiān)控大范圍的終端設備,取代了大量前置PC,具有更好的實時、實效性[1,2]。本裝置將現(xiàn)場采集到的實時數(shù)據(jù)通過以太網(wǎng)直接傳送到內(nèi)嵌的Web服務器上,服務器生成用于遠程監(jiān)測和遠程故障診斷的web頁面,用戶通過鍵入設備的IP地址,就可以隨時瀏覽到被監(jiān)測設備的現(xiàn)場運行情況、數(shù)據(jù)采集信息以及報警信息等。
2 裝置結構與特點
目前,機電設備的狀態(tài)監(jiān)測與故障診斷的整個系統(tǒng)結構如圖1所示:

?
本文設計開發(fā)了此體系的核心裝置——嵌入式機電設備監(jiān)控裝置,主要分為3個模塊:
(1)數(shù)據(jù)采集模塊:包括多個現(xiàn)場數(shù)據(jù)采集單元。主要完成現(xiàn)場數(shù)據(jù)的檢測、采集。
(2)數(shù)據(jù)存儲與處理模塊:包括嵌入式現(xiàn)場總線/以太網(wǎng)監(jiān)控工控機和數(shù)據(jù)庫。它通過EtherNet/IP協(xié)議,和現(xiàn)場總線數(shù)據(jù)采集單元進行通信,實現(xiàn)靈敏檢測和數(shù)據(jù)存儲。
(3)在線監(jiān)測模塊:包括嵌入式Web服務器和監(jiān)測網(wǎng)站。服務器生成用于遠程監(jiān)測和故障診斷的web頁面。網(wǎng)絡用戶可以隨時掌握現(xiàn)場運轉情況,使遠程監(jiān)控真正實現(xiàn)。
本裝置擁有以下三個先進的特征:
1)應用工業(yè)以太網(wǎng),使Ethernet/IP設備和現(xiàn)場設備能夠通信。為了實現(xiàn)這個功能,我們將以太網(wǎng)協(xié)議移植進嵌入式Linux。
2)通過瀏覽器支持機電設備狀態(tài)的監(jiān)控。我們在嵌入式Linux中移植了BOA,設計了動態(tài)網(wǎng)頁實時監(jiān)控機電設備。
3)支持大容量數(shù)據(jù)存儲,用一個黑匣子對設備的實時數(shù)據(jù)資源進行監(jiān)控。通過大容量IDE總線的擴展,連接IDE系統(tǒng)硬盤,存儲大量數(shù)據(jù)[3]。
3 裝置的硬件設計
AT91RM9200是ATMEL針對系統(tǒng)控制及通信領域推出的基于ARM920T內(nèi)核的新微型控制器。它具有獨立的16KB指令和16KB數(shù)據(jù) cache、全功能的MMU虛擬內(nèi)存管理單元、16KB SRAM和128KB ROM、64MB NAND Flash 存儲器、LCD控制器、EBI 接口控制器、4個32位的PIO控制器、20通道的外設數(shù)據(jù)控制器(DMA)、3個同步串行控制器(SSC)、4個通用同步/異步接收/發(fā)送器(USART)、主/從串行設備接口SPI、16路12位ADC、1通道16位DAC、多媒體卡接口(MCI)、以太網(wǎng)10/100 Base-T 以太網(wǎng)媒體訪問控制器(MAC)、觸摸屏接口、IDE接口等。
在處理器豐富資源的基礎上,本裝置對其進行了相關的配置和擴展,將處理器通過16路12位ADC接口對機電設備的電壓或電流信號進行采集,IDE接口外掛大容量IDE硬盤,用于存儲web、采集的數(shù)據(jù)等。通過DM9161芯片,該微處理器把EMAC接口外擴為以太網(wǎng)接口RJ45,與工業(yè)以太網(wǎng)連接 [4]。AT91RM9200通過SPI接口連接CAN控制器SJA1000,CAN控制器與CAN收發(fā)器PCA82C250相連,用于連接 DeviceNet。硬件結構如圖2所示:

?
4 裝置的軟件架構
軟件結構如圖3所示:

?
4.1移植工業(yè)以太網(wǎng)協(xié)議
工業(yè)以太網(wǎng)EtherNet/IP,是一種適用于工業(yè)環(huán)境的通訊體系,能夠在廣闊的區(qū)域中支持大量現(xiàn)場設備的連接。它采用通用工業(yè)協(xié)議(CIP)作為其應用層協(xié)議。CIP協(xié)議支持各種控制、配置和信息處理服務,包括顯式報文(用于信息傳輸,靈活的報文交換)以及隱式報文(用于控制和實時I/O數(shù)據(jù)的傳輸),支持輪詢、周期和狀態(tài)改變數(shù)據(jù)傳輸觸發(fā)機制,點對點單播和廣播數(shù)據(jù)傳輸方式[5,6]。OE服務的設計簡化了EtherNet/IP的移植,只需要修改操作環(huán)境文件來適合ARM Linux操作體系。
4.2 移植BOA
從www.boa.org下載一個主流版本的BOA源碼包,本系統(tǒng)用的是boa-0.94.13.tar.gz。
第一步:修改Makefile文件,編譯BOA源碼,生成BOA可執(zhí)行文件。
修改Makefile文件,因為我們要編譯的是基于ARM的二進制代碼,所以必須修改Makefile中的CC和CPP,分別將其改為交叉編譯器安裝的路徑:CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc
CPP=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc -E
然后運行make進行編譯,得到可執(zhí)行程序boa。
第二步:配置BOA。
BOA啟動時將加載一個配置文件boa.conf,在boa程序運行前,必須首先編輯該文件。在Boa源碼目錄下已有一個示例boa.conf,可以在其基礎上修改。配置好的主要內(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ù)此配置,需要創(chuàng)建日志文件目錄/var/log/boa,HTML文檔的主目錄/var/www,將靜態(tài)網(wǎng)頁存入該目錄下,CGI腳本所在目錄/var/www/cgi-bin,將cgi的腳本存放在該目錄下。
4.3 CGI網(wǎng)頁設計
CGI(通用網(wǎng)關接口)提供Web服務器一個執(zhí)行外部程序的通道,這種服務端技術建立了Web瀏覽器與Web服務器之間的交互。首先,瀏覽器將遠程客戶端發(fā)送的請求送到Web服務器,Web服務器將數(shù)據(jù)使用STDIN送給CGI程序,執(zhí)行CGI程序后獲得緩沖區(qū)中的設備信息,最后,使用STDOUT輸出包含工業(yè)設備信息的HTML形式的結構文件,經(jīng)Web服務器送回瀏覽器,顯示給遠程客戶端。
CGI程序可以用C語言編寫,并且能夠嵌入HTML腳本。它使用ARM-GCC編譯。CGI程序可以使用GET、POST或直接的URL參數(shù)傳遞方法與遠程客戶端通信。以下是將采集到的設備數(shù)據(jù)顯示到網(wǎng)頁上的一段CGI程序,其中用到的數(shù)據(jù)庫是SQLite。SQLite是用一個小型C庫實現(xiàn)的一種強有力的嵌入式關系數(shù)據(jù)庫管理體制,它在體積與功能之間做到了較好的平衡,是理想的嵌入式數(shù)據(jù)庫。
#include
#include "sqlite3.h"
main(){
…
sqlite3* p_db;
sqlite3_open("mydb", &p_db);/*打開數(shù)據(jù)庫*/
/*執(zhí)行SQL語句選擇alarm表中的所有記錄,并在查詢結果的每一行上執(zhí)行回調函*/
ret=sqlite3_exec(p_db, "select * from alarm;", callback,0, &errmsg);
…
sqlite3_close(p_db); /* 關閉數(shù)據(jù)庫*/
}
int callback(void *p_data, int n_columns, char **column_names, char **column_values){ /*回調函數(shù)*/
int i;
for(i=0; i < n_columns; i++)
printf("%s=%s\n",column_names[i],column_values[i]? column_values[i]:"NULL");/*打印出查詢結果*/
return 0;
?。?/p>
4.4動態(tài)網(wǎng)頁技術
服務器端為嵌入式ARM,只能運行基于TCP/IP協(xié)議的ARM-GCC編譯的Linux下的C++服務程序,本文使用嵌入式C++實現(xiàn)的 UDP socket技術與客戶端通信??蛻舳耸褂胒lash或Java Applet和服務程序通信,提供動態(tài)網(wǎng)頁。本文使用flash完成動態(tài)刷新,動態(tài)刷新采用線程機制,后臺數(shù)據(jù)通過UDP socket技術與服務器端通信來獲取。
服務器端和客戶端間的通信采用先進B/S結構,用戶不需要在客戶機一端安裝診斷軟件即可以在遠程進行設備的監(jiān)測與故障診斷,形成一個開放式的遠程監(jiān)測與故障診斷系統(tǒng)?;赨DP協(xié)議的Socket通信B/S架構如圖4所示:
?
系統(tǒng)動態(tài)頁面如圖5所示:

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