時間:2009-10-27 09:22:04來源:yangliu
圖3 軟件架構圖[/align]
4.1移植工業以太網協議
工業以太網EtherNet/IP,是一種適用于工業環境的通訊體系,能夠在廣闊的區域中支持大量現場設備的連接。它采用通用工業協議(CIP)作為其應用層協議。CIP協議支持各種控制、配置和信息處理服務,包括顯式報文(用于信息傳輸,靈活的報文交換)以及隱式報文(用于控制和實時I/O數據的傳輸),支持輪詢、周期和狀態改變數據傳輸觸發機制,點對點單播和廣播數據傳輸方式[5,6]。OE服務的設計簡化了EtherNet/IP的移植,只需要修改操作環境文件來適合ARM Linux操作體系。
4.2 移植BOA
從www.boa.org下載一個主流版本的BOA源碼包,本系統用的是boa-0.94.13.tar.gz。
第一步:修改Makefile文件,編譯BOA源碼,生成BOA可執行文件。
修改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進行編譯,得到可執行程序boa。
第二步:配置BOA。
BOA啟動時將加載一個配置文件boa.conf,在boa程序運行前,必須首先編輯該文件。在Boa源碼目錄下已有一個示例boa.conf,可以在其基礎上修改。配置好的主要內容如下:
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/
據此配置,需要創建日志文件目錄/var/log/boa,HTML文檔的主目錄/var/www,將靜態網頁存入該目錄下,CGI腳本所在目錄/var/www/cgi-bin,將cgi的腳本存放在該目錄下。
4.3 CGI網頁設計
CGI(通用網關接口)提供Web服務器一個執行外部程序的通道,這種服務端技術建立了Web瀏覽器與Web服務器之間的交互。首先,瀏覽器將遠程客戶端發送的請求送到Web服務器,Web服務器將數據使用STDIN送給CGI程序,執行CGI程序后獲得緩沖區中的設備信息,最后,使用STDOUT輸出包含工業設備信息的HTML形式的結構文件,經Web服務器送回瀏覽器,顯示給遠程客戶端。
CGI程序可以用C語言編寫,并且能夠嵌入HTML腳本。它使用ARM-GCC編譯。CGI程序可以使用GET、POST或直接的URL參數傳遞方法與遠程客戶端通信。以下是將采集到的設備數據顯示到網頁上的一段CGI程序,其中用到的數據庫是SQLite。SQLite是用一個小型C庫實現的一種強有力的嵌入式關系數據庫管理體制,它在體積與功能之間做到了較好的平衡,是理想的嵌入式數據庫。
#include
#include "sqlite3.h"
main(){
…
sqlite3* p_db;
sqlite3_open("mydb", &p_db);/*打開數據庫*/
/*執行SQL語句選擇alarm表中的所有記錄,并在查詢結果的每一行上執行回調函*/
ret=sqlite3_exec(p_db, "select * from alarm;", callback,0, &errmsg);
…
sqlite3_close(p_db); /* 關閉數據庫*/
}
int callback(void *p_data, int n_columns, char **column_names, char **column_values){ /*回調函數*/
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;
}
4.4動態網頁技術
服務器端為嵌入式ARM,只能運行基于TCP/IP協議的ARM-GCC編譯的Linux下的C++服務程序,本文使用嵌入式C++實現的UDP socket技術與客戶端通信。客戶端使用flash或Java Applet和服務程序通信,提供動態網頁。本文使用flash完成動態刷新,動態刷新采用線程機制,后臺數據通過UDP socket技術與服務器端通信來獲取。
服務器端和客戶端間的通信采用先進B/S結構,用戶不需要在客戶機一端安裝診斷軟件即可以在遠程進行設備的監測與故障診斷,形成一個開放式的遠程監測與故障診斷系統。基于UDP協議的Socket通信B/S架構如圖4所示:
[align=center]
圖4 UDP Socket通信B/S架構[/align]
系統動態頁面如圖5所示:
[align=center]
圖5 狀態監測與故障診斷系統主界面[/align]
5 結束語
本文作者創新點:將工業以太網技術、嵌入式Web Server技術、CGI技術、動態網頁技術應用于嵌入式狀態監測與故障診斷裝置中,用戶通過URL就可以隨時查看現場設備的運行情況和報警信息,與傳統監控裝置相比,提高了監控的實時性,縮短了檢修時間,節省了檢修費用,真正實現了維修制度從事故維修、定期維修向視情維修的轉變。
參考文獻
[1] 王堅,張浩,嚴雋薇,等.基于Internet/lntranet的數字化遠程故障診斷系統[J].計算機工程,2000,26(10):28-29
[2] 金真,唐明浩,蔣琳.Internet遠程監控系統的嵌入式實現方法[J].計算機工程2006.1(32):245-247
[3] 胡昌林,劉鵬遠,李永軍,魏保華.某裝備狀態監測與故障預測系統總體設計[J].微計算機信息,2006,22(9-1):189-191
[4] ATMEL.ARM920TTM-based Microcontroller AT91RM9200 User’s Mannual[R].August 2003.
[5] Rinaldi,John.EtherNet/IP–An application-layer protocol for industial automation[J]. Sensors(Peterborough,NH),May,2003,20(5):43-45.
標簽:
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-12-10
2025-11-20
2025-11-10
2025-11-10
2025-11-07
2025-10-31