姚文俊,劉春力,裴煥斗
(1.中北大學(xué),太原030051;2.山西百得科技開發(fā)有限公司,太原030006)
近年來我國機械設(shè)備行業(yè)發(fā)展迅猛,各式移動裝備廣泛應(yīng)用于建筑、港口和農(nóng)業(yè)等眾多領(lǐng)域。由于移動裝備現(xiàn)場工況復(fù)雜且極其惡劣,對裝備的安全監(jiān)控與管理提出了更高的要求。對移動裝備的監(jiān)控管理不再滿足于故障事后處理,而是更加強調(diào)對裝備自身工況信息的實時采集和分析。工業(yè)運行中的許多現(xiàn)代化大型設(shè)備,為了安全、穩(wěn)定、長周期、滿負(fù)荷優(yōu)質(zhì)運行,設(shè)備制造商往往會在產(chǎn)品中安裝一些傳感器,方便的告知客戶設(shè)備的運行狀況,以降低因設(shè)備故障造成的損失。然而設(shè)備制造方限于種種原因,并不掌握設(shè)備在用戶處的運行工況,難以根據(jù)設(shè)備的運行參數(shù)幫助用戶實時診斷和分析故障及故障預(yù)測。因此可通過一套數(shù)據(jù)傳送終端來將設(shè)備的運行參數(shù)通過遠程監(jiān)控技術(shù)發(fā)送給制造商,有效地進行故障診斷分析,降低客戶的故障損失,更好的開展售后服務(wù)。
遠程監(jiān)控技術(shù)主要包括專線遠程監(jiān)控技術(shù)、電話網(wǎng)遠程監(jiān)控技術(shù)、以太網(wǎng)遠程監(jiān)控技術(shù)和無線通信遠程監(jiān)控技術(shù)。特別是對于工作點多、通信距離遠、環(huán)境惡劣且實時性和可靠性要求比較高的場合,可以利用無線網(wǎng)絡(luò)通信來實現(xiàn)主控站與各個子站之間的數(shù)據(jù)通信,采用這種無線通信遠程監(jiān)控技術(shù)有利于解決復(fù)雜連線的問題,無須鋪設(shè)各種線纜,降低環(huán)境成本。隨著GPRS的推廣和應(yīng)用,采用GPRS技術(shù)來解決上述問題成為一種較好的方案。GPRS是利用“包交換”的概念所發(fā)展出的一套無線傳輸方式,采用包交換的好處在于只有在有資料需要傳送時才會占用頻寬,使若干移動用戶能夠同時共享一個無線信道,一個移動用戶也可以使用多個無線信道。
通過應(yīng)用GPRS網(wǎng)絡(luò)實現(xiàn)了計算機或手機與ARM嵌入式處理器終端的遠程通信。系統(tǒng)整體上可分為數(shù)據(jù)采集模塊、數(shù)據(jù)傳輸控制模塊、無線傳輸網(wǎng)絡(luò)及數(shù)據(jù)處理終端模塊。其中數(shù)據(jù)傳輸終端的核心部分為Atmel公司的AT91SAM9263和SIMCOM公司的SIM300 GPRS模塊。圖1所示為系統(tǒng)的整體框圖,其中數(shù)據(jù)傳輸終端模塊的設(shè)計為主要任務(wù),包含ARM最小系統(tǒng)、無線傳輸模塊及一些通信接口(如232串口、USB接口、網(wǎng)口)。
圖1 系統(tǒng)整體框圖
選用Atmel公司的AT91SAM9263,其通信功能非常強大,是目前功能最強大的ARM芯片之一。設(shè)計中用到的外圍通信接口包括用于下載燒寫bootstrap、uboot、Linux內(nèi)核等的USB Device接口和具有網(wǎng)絡(luò)調(diào)試下載功能的以太網(wǎng)接口,用于調(diào)試程序的JTAG接口以及用于與GPRS模塊和PC機連接通信的兩個UART接口(UART0、UART1)。除了通信接口外,還有組成ARM最小系統(tǒng)所必須的電源模塊、時鐘模塊、DataFlash、NandFlash以及SDRAM等。其中UART0與GPRS模塊連接,UART1與PC機串口連接。電路硬件原理框圖如圖2所示。
在無線模塊SIM300與ARM芯片的接口設(shè)計中,TXD0(PA26)和 RXD0(PA27)接到 GPRS對應(yīng)的 RXD與 TXD引腳上,RTS0(PA28)和 CTS0(PA29)可在GPRS上網(wǎng)時連接。電源部分因GPRS或GSM發(fā)射需要很大的電流,故應(yīng)最大能提供到2A電流,工作電壓應(yīng)保證在3.4V-4.5V之間。模塊啟動方式是通過控制PWRKEY(PE11)管腳即在該管腳上產(chǎn)生一個一段時間的低電平,然后為高阻態(tài)即可啟動模塊。模塊關(guān)閉也可通過PWRKEY管腳,操作方法與開啟時的操作方法一樣。
圖2 ARM終端功能框圖
基于AT91SAM9263的嵌入式Linux系統(tǒng)的基本組成為 Bootstrap、U-boot、Kernel、Rootfs,同時移植也是按這個順序來進行的,并且是按dataflash啟動的方式進行移植。圖3為dataflash和nandflash存儲空間的資源分配情況。各部分的分區(qū)大小是在uboot下指定的,將 bootstrap、uboot、linux kernel存放于dataflash中,將文件系統(tǒng)存放于nandflash中,而nandflash分為兩個分區(qū),分區(qū)0作為rootfs(Cramfs格式),分區(qū)1用于自定義。具體的程序修改不再贅述,主要說明映像文件的編譯方法和燒寫過程。
圖3 Dataflash啟動存儲器映射圖
首先安裝windows下的交叉編譯工具鏈armnone-eabi-gcc,然后分別運行:cd board/at91sam9263ek/dataflash/、make clean 和 make生成dataflash_at91sam9261ek.bin文件。打開燒寫工具SAM-BA軟件,使用USB口燒寫。選擇DataFlash標(biāo)簽,在下拉菜單中選擇Enable Dataflash on CS0,按Execute按鈕,接著選擇Send boot file,按Execute按鈕,最后選擇dataflash_at91sam9261ek.bin打開燒寫。
在Linux系統(tǒng)下安裝交叉工具鏈arm-linuxgcc,然后在/etc/profile文件中修改環(huán)境變量路徑為交叉工具鏈的路徑,再用命令service/etc/profile使路徑生效,這樣以后就可以直接使用make命令了。最后執(zhí)行make at91sam9263ek_config和make命令生成u-boot.bin文件,通過sam-ba工具燒錄到dataflash的0x8400地址。具體步驟為在DataFlash標(biāo)簽下的Address處寫入 uboot的燒寫地址0x8400,按Send File Name按鈕,打開u-boot.bin,按Send File按鈕,等待燒寫完成。
解壓Linux內(nèi)核,cd到根目錄下,利用mkimage工具編譯內(nèi)核來生成uImage內(nèi)核鏡像,具體步驟及命令為:①make distclean→②→make at91sam9263ek_defconfig→③→./mkimage-A arm-O linux-C none-T kernel-a 20008000-e 20008000-n linux-2.6-d arch/arm/boot/zImage uImage。即可編譯生成支持uboot格式的uImage映像文件。燒寫方法與uboot相同,只需在Address處寫入Linux內(nèi)核燒寫地址0x42000即可。
首先用mkdir命令建立roofs根文件夾并參考Linux系統(tǒng)建立根文件系統(tǒng)目錄樹,然后編譯安裝busybox到根文件下,最后利用mkcramfs工具制作文件系統(tǒng),即用命令./mkcramfs rootfs rootfs_cramfs生成根文件的映像文件,最后將此文件通過sam-ba燒寫到nandflas。選擇nandflash標(biāo)簽,在Address處寫入根文件系統(tǒng)的燒寫地址0x400000進行燒寫。
至此嵌入式Linux系統(tǒng)在AT91SAM9263平臺上的移植已經(jīng)完成。
在終端軟件應(yīng)用程序的設(shè)計中,由于有多個外部設(shè)備(不同功能的傳感器及GPRS模塊)需要操作,所以采用多進程編程實現(xiàn)。這些設(shè)備以設(shè)備文件的形式進行訪問,而訪問設(shè)備文件時,采用阻塞方式。用fork()函數(shù)分別創(chuàng)建GPRS_PID、FIRE_PID、Temp_PID、Smog_PID、Speed_PID等進程。進程間通信采用消息隊列方式,當(dāng)GPRS模塊接收和發(fā)送消息時用msgget()創(chuàng)建和打開消息隊列,用msgsnd()添加要發(fā)送的消息內(nèi)容,用msgrcv()讀取消息內(nèi)容。在判斷消息類型及是否異常消息時采用switch()case語句分情況比較消息內(nèi)容與程序已設(shè)定的標(biāo)號來調(diào)用相應(yīng)的函數(shù)進行處理。其中GPRS功能函數(shù)是通過編寫串口應(yīng)用程序來實現(xiàn)短信息的接收和發(fā)送等功能。通過手機或電腦發(fā)送AT指令來控制ARM終端模塊對數(shù)據(jù)進行操作,以實現(xiàn)相應(yīng)的功能。每個指令執(zhí)行成功與否都有相應(yīng)的返回,模塊將有對應(yīng)的一些信息提示,接收端可做相應(yīng)的處理。圖4為應(yīng)用程序的整體流程圖。
圖4 應(yīng)用程序整體流程圖
選用ARM芯片AT91SAM9263和SIM300 GPRS無線通信模塊設(shè)計的一種遠距離數(shù)據(jù)通信模塊可廣泛應(yīng)用于建筑、港口和農(nóng)業(yè)等眾多領(lǐng)域中現(xiàn)場狀況的監(jiān)控,以及工業(yè)中許多現(xiàn)代化大型設(shè)備運行狀態(tài)的實時檢測等等。同時由于GPRS具有“高速”和“永遠在線”的優(yōu)點,使用GPRS技術(shù)傳輸效率更高,功耗更低,而且應(yīng)用無線傳輸更能節(jié)省成本。系統(tǒng)可長時間穩(wěn)定的監(jiān)控工況信息以及設(shè)備的運行狀態(tài)等,便于及時做出維修改進,確保機器設(shè)備的正常運行。
[1] 李俊.嵌入式LINUX設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008.
[2] 華清遠見嵌入式培訓(xùn)中心編著.嵌入式Linux應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社,2009.
[3] 張向濤,朱紅.基于GSM和ARM的遠程監(jiān)控系統(tǒng)的研究[J].廣西通信技術(shù),2006,9(3):13-16.
[4] 黃強,陶正蘇,宋浩,等.基于ARM的GPRS遠程數(shù)據(jù)傳輸模塊設(shè)計[J].電子器件,2008,31(4):1214-1218.