引言
目前,很多功能強(qiáng)大的嵌入式處理器都基于ARM內(nèi)核構(gòu)建。這樣的配置系統(tǒng)性價比高,可擴(kuò)展性能強(qiáng)。
工業(yè)檢測系統(tǒng)應(yīng)用中,作為一種主要的測溫元件,熱電偶具有結(jié)構(gòu)簡單、制造容易、使用方便、測溫范圍寬、測溫精度高等特點,可以廣泛應(yīng)用于工業(yè)溫度控制過程中。但是熱電偶輸出電勢極其微弱,而且存在冷端溫度誤差和輸出電勢與被測溫度的非線性問題,易引起較大測量誤差,需要極其復(fù)雜的信號處理電路。MAX6675是Maxim公司推出的K型熱電偶串行模數(shù)轉(zhuǎn)換器,該型號芯片能夠獨立完成信號放大、冷端補(bǔ)償、線性化、A/D轉(zhuǎn)換及SPI串口數(shù)字化輸出功能,能夠簡化熱電偶測量智能裝置的軟硬件模塊的設(shè)計。
移動檢測終端可以快速投入現(xiàn)場,系統(tǒng)調(diào)試周期短。隨著無線3G業(yè)務(wù)的普及,各種基于無線通信的傳輸成本快速下降,無線、移動、遠(yuǎn)程測溫控制系統(tǒng)將更加普及。國內(nèi)外基于無線通信的相關(guān)研究也開始變得很熱門,有相關(guān)產(chǎn)品投入市場。本文根據(jù)溫度監(jiān)控領(lǐng)域的發(fā)展趨勢,開發(fā)一套基于ARM7處理器和GPRS無線傳輸模塊的嵌入式無線熱電偶測溫控制系統(tǒng)。
1 系統(tǒng)的構(gòu)成和工作原理
溫度遠(yuǎn)程無線監(jiān)控系統(tǒng)以應(yīng)用為中心,由SPI接口連接MAX6675采集溫度數(shù)據(jù),通過串口發(fā)送到華為GTM900A無線傳輸模塊。由于GPRS網(wǎng)絡(luò)(2.5G移動通信技術(shù))支持TCP/IP協(xié)議,這使得無線數(shù)據(jù)傳輸變得更加輕松,而且相對價格比短消息等要便宜許多。為了能夠遠(yuǎn)程設(shè)置參數(shù),系統(tǒng)支持通過短信的方式設(shè)置相關(guān)核心參數(shù)。終端設(shè)備系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
本系統(tǒng)的終端設(shè)備采用模塊化的結(jié)構(gòu)設(shè)計思想,將終端設(shè)備分為主控模塊和各個功能模塊。主控模塊和各功能模塊之間有統(tǒng)一的或者特定的接口形式,用戶可根據(jù)實際情況選用不同的功能模塊。各種類型的數(shù)據(jù)可以在系統(tǒng)中同時傳輸而不相互干擾,同時也可根據(jù)市場變換的需求繼續(xù)擴(kuò)展其他功能模塊。
溫度遠(yuǎn)程無線監(jiān)控系統(tǒng)的幾個主要模塊功能如下:
①傳感器數(shù)據(jù)處理模塊。根據(jù)實際需要,采集熱電偶溫度傳感器數(shù)據(jù)。當(dāng)采集到的數(shù)據(jù)值高于或者低于報警值時,啟動自動報警模塊,提醒巡查人員注意。
②LCD顯示模塊。顯示檢測到的溫度數(shù)據(jù)及相關(guān)的系統(tǒng)核心參數(shù),以便相關(guān)工作人員觀測數(shù)據(jù)。
③自動報警模塊。在系統(tǒng)檢查到有效報警信息后,該模塊馬上使嵌入式設(shè)備上的蜂鳴器發(fā)出警報聲,與此同時發(fā)送報警信息。該信息通過GPRS網(wǎng)絡(luò)及時傳回遠(yuǎn)端的監(jiān)控管理中心,以便工作人員及時發(fā)現(xiàn)并采取相應(yīng)的處理措施。
④參數(shù)配置模塊。系統(tǒng)的核心參數(shù)配置通過I2C總線保存在Atmel AT24C01芯片里,系統(tǒng)啟動時讀取相關(guān)參數(shù)。參數(shù)的設(shè)置可以通過多種方式(串口、短信和網(wǎng)絡(luò))實現(xiàn)。
⑤ARM7核心控制模塊。采用低功耗、高性能嵌入式SoC芯片Samsung S3C4480X以及8MB RAM和2 MBFlash ROM。
⑥熱電偶溫度采集處理模塊。通用I/O口用軟件來模擬SPI操作,實現(xiàn)ARM7與MAX6675的通信。
⑦GPRS無線數(shù)據(jù)傳輸模塊??紤]到系統(tǒng)的實際需求,采用華為GTM900A模塊。該模塊支持AT指令,模塊的控制、數(shù)據(jù)的傳輸可以通過AT指令發(fā)送或者讀取該設(shè)備的串口。
⑧遠(yuǎn)程監(jiān)控軟件模塊。遠(yuǎn)程監(jiān)控軟件采集端和控制端。采集端需要連接到Internet上,有固定的IP地址,負(fù)責(zé)遠(yuǎn)程終端數(shù)據(jù)的接收和發(fā)送??刂贫擞刹僮魅藛T使用,在界面上顯示各個終端的運行情況、當(dāng)前的實時溫度數(shù)據(jù),操作人員的指令通過控制端下發(fā)到采集端,最后通過采集端發(fā)送到各個對應(yīng)的終端。
2 系統(tǒng)的軟件設(shè)計流程
系統(tǒng)啟動時,為支持通過串口設(shè)置相關(guān)參數(shù),按照順序提示用戶輸入相關(guān)配置參數(shù)。如果用戶超過了一定的時間不操作,系統(tǒng)就進(jìn)入初始化模塊,啟動GPRS模塊,對短信命令進(jìn)行處理(初始化自有點到點協(xié)議模塊)。主應(yīng)用程序的流程如圖2所示。
系統(tǒng)運行中,TimerO的中斷處理程序處理自有的點到點協(xié)議,包括處理“登陸”、“心跳”和“退出”命令。在系統(tǒng)的發(fā)送數(shù)據(jù)緩沖隊列中讀取數(shù)據(jù),將數(shù)據(jù)打包成“數(shù)據(jù)”命令,通過串口發(fā)送到GPRS模塊。如果GPRS模塊有數(shù)據(jù),再在串口中讀出遠(yuǎn)程監(jiān)控中心發(fā)送過來自有協(xié)議的各種命令,只將“數(shù)據(jù)”命令解析后存入接收數(shù)據(jù)緩沖隊列中,其他協(xié)議維持命令由相應(yīng)的子程序進(jìn)行處理。
主應(yīng)用程序通過少數(shù)幾個系統(tǒng)狀態(tài)全局變量、發(fā)送數(shù)據(jù)緩沖隊列和接收數(shù)據(jù)緩沖隊列與數(shù)據(jù)通信模塊進(jìn)行交互,也就是與TimerO的中斷處理程序進(jìn)行交互。主應(yīng)用程序不需要了解自有點到點協(xié)議的編解碼過程以及數(shù)據(jù)鏈路的維護(hù)工作,使模塊直接的耦合度降低。主應(yīng)用程序通過SPI總線實時地讀取MAX6675采集到的熱電偶溫度數(shù)據(jù),實時檢查GPRS模塊狀態(tài)(如果GPRS模塊錯誤超過規(guī)定次數(shù),重新啟動GPRS模塊),實時地將報警數(shù)據(jù)存入發(fā)送數(shù)據(jù)緩沖隊列中并同時啟動報警模塊,實時地處理接收數(shù)據(jù)緩沖隊列中的數(shù)據(jù),實時處理GPRS模塊短信命令數(shù)據(jù),實時顯示系統(tǒng)采集的溫度數(shù)據(jù)和狀態(tài)信息,定時地將采集到的數(shù)據(jù)存入發(fā)送數(shù)據(jù)緩沖隊列中。
3 MAX6675與S3C4480X的接口實現(xiàn)
MAX6675芯片內(nèi)部集成了冷端補(bǔ)償電路。該芯片有簡單的3位串行SPI接口,可將溫度信號轉(zhuǎn)換成12位的數(shù)字量,溫度分辨率達(dá)O.25℃。芯片內(nèi)部含有熱電偶斷線檢測電路。其冷端補(bǔ)償溫度范圍為-20~80℃,應(yīng)用的環(huán)境溫度范圍比較寬,可以測量0~1 023.75℃的被測溫度,基本符合工業(yè)溫度測量的實際需要。當(dāng)MAX6675的CS引腳從高電平變?yōu)榈碗娖綍r,芯片將停止任何信號轉(zhuǎn)換并在時鐘SCK的作用下通過S0引腳向外輸出已轉(zhuǎn)化的數(shù)據(jù),此數(shù)據(jù)是經(jīng)過放大了的A/D轉(zhuǎn)換后的數(shù)字量與冷端補(bǔ)償之和;相反,當(dāng)芯片的CS引腳從低電平變回高電平時,MAX-6675芯片將進(jìn)行新的溫度數(shù)字化工作。CS引腳從高電平變?yōu)榈碗娖綍r,第1個字節(jié)D15出現(xiàn)在引腳SO上。該系列芯片的1個完整的數(shù)據(jù)讀過程需要16個時鐘周期,數(shù)據(jù)的讀取通常在SCK的下降沿完成。需要指出的是,此芯片的A/D轉(zhuǎn)換耗時在O.17~0.22 s之間,比一般的A/D轉(zhuǎn)換芯片μs級的轉(zhuǎn)換時間要長許多,相應(yīng)的溫度轉(zhuǎn)換模塊需要進(jìn)行相應(yīng)的優(yōu)化設(shè)計,不能占用太多CPU資源。
MAlX6675采用標(biāo)準(zhǔn)的SPI串行外設(shè)總線與ARM7進(jìn)行對接,因此該芯片只能作為從設(shè)備(即串行接口芯片)。SPI(SeriaI Peripheral Int-erface)總線系統(tǒng)是一種同步串行外設(shè)接口,是Motorola公司推出的總線標(biāo)準(zhǔn),它可以使ARM7單片機(jī)與各種外圍設(shè)備以串行方式進(jìn)行通信。由于S3C44BOX單片機(jī)不具有SPI串行總線接口,在芯片對接時可以使用通用I/O口,用軟件來模擬SPI操作,包括串行時鐘、數(shù)據(jù)輸入/輸出。
4 GPRS無線數(shù)據(jù)傳輸模塊
溫度采集處理模塊采集到的數(shù)據(jù)通過SPI總線傳送到處理器,經(jīng)過串口AT指令傳輸?shù)紾PRS模塊,然后由GPRS模塊通過GPRS網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)將數(shù)據(jù)傳送到遠(yuǎn)端接在互聯(lián)網(wǎng)上的控制中心主機(jī),在控制中心的網(wǎng)絡(luò)上可以通過組態(tài)軟件建立小型集散控制系統(tǒng)。至于組態(tài)軟件的選擇,可以根據(jù)需要選用商業(yè)組態(tài)軟件,或者像筆者碩士畢業(yè)論文所做的小型集散控制系統(tǒng)控制軟件。
有關(guān)利用AT命令操作GPRS模塊在相關(guān)文獻(xiàn)中已有描述,這里以華為GTM900A模塊為例說明相關(guān)操作。表1描述了華為GPRS模塊AT指令基本功能指令集,通過對這些指令的運用就可以進(jìn)行GPRS模塊的初始化、打開鏈路、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉鏈路等一些常用的操作。
基于ARM系列的32位單片機(jī)RAM資源比較豐富,利用C、C++等高級語言就能夠編寫應(yīng)用軟件。在這里選用C語言開發(fā)GPRS模塊功能程序。利用ARM7S3C4480X芯片上提供的16字節(jié)的FIFO串口,向串口傳送AT命令對GPRS模塊進(jìn)行操作。下面是一段用C語言編寫的打開TCP連接的模塊程序:
GPRS模塊是具有登陸GPRS網(wǎng)絡(luò)功能的芯片加上相應(yīng)的協(xié)助處理數(shù)字電路,在模塊內(nèi)部裝上開通GPRS功能的移動電話卡,通過串行協(xié)議與ARM7處理器進(jìn)行通信。將數(shù)據(jù)以數(shù)據(jù)包的形式,先通過PPP和運營商的Internet接入服務(wù)器連接,然后把數(shù)據(jù)包發(fā)送到Internet上,最后到達(dá)控制中心主機(jī)。數(shù)據(jù)的發(fā)送和接收遵循自有的點到點傳輸協(xié)議,保證數(shù)據(jù)安全、可靠的發(fā)送和接收。
GPRS無線數(shù)據(jù)傳輸模塊軟件結(jié)構(gòu)設(shè)計總體可分為4個部分:
①參數(shù)配置部分。投入安裝前,通過串口將系統(tǒng)與PC機(jī)連接起來,在PC機(jī)上的超級終端設(shè)置遠(yuǎn)程監(jiān)控中心主機(jī)IP地址、端口、設(shè)備ID以及心跳時間等參數(shù),在系統(tǒng)運行中也可以通過串口、GPRS或者短信命令來設(shè)置系統(tǒng)相關(guān)參數(shù)。
②連接遠(yuǎn)程監(jiān)控中心主機(jī)。在這一部分,系統(tǒng)將發(fā)起1個TCP或UDP連接到遠(yuǎn)程監(jiān)控中心。本系統(tǒng)選用基于TCP的自有點到點協(xié)議處理通信。
③自有協(xié)議處理。這個協(xié)議包括“登陸”、“數(shù)據(jù)”、“心跳”、“退出”及應(yīng)答命令。“登陸”、“心跳”、“退出”命令及應(yīng)答命令是協(xié)議的狀態(tài)維持部分,系統(tǒng)與監(jiān)控中心主機(jī)的雙向溝通通過“數(shù)據(jù)”命令傳遞。基于ARM7處理器的內(nèi)存配置可以達(dá)到8 MB,因此在軟件設(shè)計中可以維護(hù)好基于TCP的點到點自有協(xié)議,使數(shù)據(jù)的傳輸更安全,確保關(guān)鍵數(shù)據(jù)不丟失。
④數(shù)據(jù)傳輸。處理器首先判斷接收的數(shù)據(jù)是溫度數(shù)據(jù)還是報警信號:如果是報警數(shù)據(jù),則立刻停止其他數(shù)據(jù)的傳輸,將報警數(shù)據(jù)迅速發(fā)送出去;如果是溫度數(shù)據(jù),則按照一定的間隔傳回監(jiān)控中心。系統(tǒng)還通過GPRS模塊讀出從控制中心傳來的各種命令,進(jìn)行相應(yīng)的處理。
5 遠(yuǎn)程監(jiān)控軟件模塊
監(jiān)控端位于監(jiān)控管理中心,分為數(shù)據(jù)采集端和控制端兩部分。數(shù)據(jù)采集端使用高性能PC機(jī)或者商業(yè)服務(wù)器,運行Windows XP/2000/2003Server系統(tǒng)或者Linux系統(tǒng)。在這里采用Delphi7語言編寫基于CLX組件的數(shù)據(jù)采集系統(tǒng),基于CLX組件的軟件可以方便地移植到Linux系統(tǒng)中。數(shù)據(jù)采集系統(tǒng)將采集到數(shù)據(jù)存儲在Oracle 9i數(shù)據(jù)庫中,以便日后查詢和制作報表。同時將數(shù)據(jù)通過TCP協(xié)議實時發(fā)送到各個控制端。
控制端模塊采用筆者自己用Delphi7語言編寫的組態(tài)軟件。通過相關(guān)接口,組態(tài)軟件與數(shù)據(jù)采集端進(jìn)行數(shù)據(jù)交換。工作人員通過控制端查看系統(tǒng)中多個終端的溫度采集數(shù)據(jù)和系統(tǒng)狀態(tài),也可以根據(jù)實際情況發(fā)送相關(guān)的命令到數(shù)據(jù)采集端,最后到達(dá)溫度檢測終端執(zhí)行??刂贫吮O(jiān)控主界面運行圖如圖3所示。
結(jié)語
基于ARM7處理器的嵌入式溫度遠(yuǎn)程無線監(jiān)控系統(tǒng),通過SPI接口連接MAX6675,不斷地采集現(xiàn)場的監(jiān)控溫度,并通過自有點到點協(xié)議基于GPRS網(wǎng)絡(luò)發(fā)送數(shù)據(jù)給遠(yuǎn)端的監(jiān)控管理中心。在溫度數(shù)據(jù)超過或者低于臨界值時,及時發(fā)出報警,并將報警信號傳回監(jiān)控中心,實現(xiàn)了溫度的無線遠(yuǎn)程監(jiān)控,推進(jìn)了工業(yè)溫度監(jiān)控的無線化、智能化,極大地減少了現(xiàn)場的硬件布線時間,同時也可作為移動在線檢測終端使用。