目前測(cè)量?jī)x表正向網(wǎng)絡(luò)化方向發(fā)展每一個(gè)單獨(dú)的嵌入式儀表都將成為Internet上的一個(gè)節(jié)點(diǎn)。本系統(tǒng)在ARM+RTOS的方式下實(shí)現(xiàn)了電子式電能表的網(wǎng)絡(luò)化硬件平臺(tái)以ARM核微控制器LPC2104為核心軟件系統(tǒng)則是在uC/OS-II操作系統(tǒng)下開發(fā)的。
系統(tǒng)硬件設(shè)計(jì)
LPC2104是Philips公司推出的一款以ARM7TDMI-S為核心的32位微控制器。LPC2104內(nèi)部集成了很多功能包括128k字節(jié)的高速Flash存儲(chǔ)器、雙UART、多個(gè)32位定時(shí)器以及SPI、I2C串行接口和RTC等。其中UART1帶有完全的調(diào)制解調(diào)器接口可以用于網(wǎng)絡(luò)產(chǎn)品。
CS5460是CirrusLogic公司的單相功率/電能計(jì)量芯片帶有串行接口。CS5460集成度很高里面包含了兩個(gè)ADC、高/低通數(shù)字濾波器、能量計(jì)算單元、串行接口和數(shù)字-頻率轉(zhuǎn)換器等。CS5460將它測(cè)得和計(jì)算出的結(jié)果分別保存在它的各個(gè)寄存器中而能量值則通過(guò)脈沖輸出給CPU還可以驅(qū)動(dòng)計(jì)度器。
該網(wǎng)絡(luò)化儀表的工作原理是:首先由采樣電路將輸入的大電流/電壓轉(zhuǎn)化為CS5460能夠接收的小電壓信號(hào)。CS5460根據(jù)采樣的電流/電壓計(jì)算出電能然后將電流、電壓、電能和功率等通過(guò)三線雙向串行接口傳送給CPU(能量值通過(guò)脈沖輸出)CPU根據(jù)鍵盤的輸入指令在液晶顯示器上顯示結(jié)果或者通過(guò)串口將結(jié)果傳送到Internet上。LPC2104本身既作為CS5460的控制器又作為嵌入式網(wǎng)關(guān)實(shí)現(xiàn)了電能表的遠(yuǎn)程通信功能。本系統(tǒng)的硬件結(jié)構(gòu)圖參見(jiàn)《電子設(shè)計(jì)應(yīng)用》2004.8。
CS5460只能接收小于150mV的小電壓信號(hào)在采樣電路部分應(yīng)選擇適當(dāng)?shù)碾娏?電壓互感器將輸入的電流/電壓轉(zhuǎn)換到CS5460能夠接收的電壓范圍。
在電壓采樣電路中取入的電壓經(jīng)過(guò)電壓互感器降壓、隔離然后通過(guò)低通濾波。最后端的電容C1表現(xiàn)出很大的阻抗用于取電壓。電流采樣電路比電壓采樣電路多了取樣電阻R5。R5用于將從電流互感器出來(lái)的電流轉(zhuǎn)換為電壓。采樣電路圖參見(jiàn)《電子設(shè)計(jì)應(yīng)用》2004.8。
CS5460與LPC2104以標(biāo)準(zhǔn)SPI接口非常容易。由于CS5460是以定寬變脈沖輸出能量值因此將其能量輸出引腳與LPC2194的一個(gè)外部中斷引腳相連用來(lái)收集能量值。
由于電能的累計(jì)值以及校準(zhǔn)常數(shù)需要保存到EEPROM中所以擴(kuò)展一片24C16用來(lái)保存這些數(shù)值。LPC2104本身帶有I2C接口擴(kuò)展EEPROM非常容易。
LPC210的4UART1口帶有完全的調(diào)制解調(diào)器接口。由于電能表接入Internet所需要傳輸?shù)臄?shù)據(jù)量不大因此可以選用低速的modem芯片這里選用OKI公司的MSM7512B。MSM7512B是1200bps半雙工的FSK調(diào)制解調(diào)器。采用3-5V單電源工作功耗較低。
另外需要注意的是CS5460輸入/輸出信號(hào)均為5V而LPC2104的信號(hào)為3.3V因此兩者之間需要加上電平轉(zhuǎn)換電路。
系統(tǒng)軟件設(shè)計(jì)
ARM應(yīng)用系統(tǒng)可以基于嵌入式操作系統(tǒng)平臺(tái)也可以不使用操作系統(tǒng)直接通過(guò)啟動(dòng)代碼啟動(dòng)。為了方便實(shí)現(xiàn)網(wǎng)絡(luò)化功能本系統(tǒng)選擇基于嵌入式操作系統(tǒng)平臺(tái)的方式。嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-II在裁減之后僅有128K的Flash存儲(chǔ)器故可以選擇在其中移植uC/OS-II。
首先需要將uC/OS-II操作系統(tǒng)移植到LPC2104微處理器上。為了便于移植uC/OS-II的源代碼大部分是用C語(yǔ)言寫的移植過(guò)程中只需要重寫少數(shù)幾個(gè)與處理器直接相關(guān)的文件就可以了。LPC2104上移植uC/OS-II已經(jīng)有成功的實(shí)例可以從網(wǎng)上得到。
uC/OS-II本身并不支持網(wǎng)絡(luò)功能。為了實(shí)現(xiàn)電能表的網(wǎng)絡(luò)化還需要移植TCP/IP協(xié)議。由于此嵌入式系統(tǒng)本身的功能比較單一因此可以選擇簡(jiǎn)單的嵌入式協(xié)議棧將不需要用到的協(xié)議去掉。由于電能表需要傳輸?shù)臄?shù)據(jù)量不大但可靠性要求較高因此在傳輸層應(yīng)該選用可靠數(shù)據(jù)傳輸控制協(xié)議TCP在網(wǎng)絡(luò)層選用基本數(shù)據(jù)傳輸協(xié)議IP。
軟件部分主要實(shí)現(xiàn)以下功能:
1.數(shù)據(jù)采集及計(jì)算。計(jì)算部分主要由CS5460完成當(dāng)發(fā)出啟動(dòng)轉(zhuǎn)換的命令之后延時(shí)適當(dāng)?shù)臅r(shí)間就可以從相應(yīng)的寄存器中讀出所需要的測(cè)量值。電能值是以脈沖形式傳送給CPU的。有效功率的測(cè)量是通過(guò)對(duì)1秒的脈沖進(jìn)行計(jì)數(shù)實(shí)現(xiàn)的。例如可以編程控制CS5460每轉(zhuǎn)換10焦耳的能量時(shí)產(chǎn)生一個(gè)脈沖然后以脈沖計(jì)數(shù)乘以10計(jì)算出有效功率。每隔幾分鐘電流累計(jì)能量會(huì)被寫入24C16串行EEPROM。這樣可以保存經(jīng)過(guò)的時(shí)間內(nèi)的所有能量。校準(zhǔn)常數(shù)也保存在24C16中。但系統(tǒng)重新上電的時(shí)候這些校準(zhǔn)常數(shù)會(huì)被從24C16中讀出并且寫回CS5460。
2.按鍵管理及液晶顯示。由于LPC2104的總線不開發(fā)給驅(qū)動(dòng)液晶顯示帶來(lái)一定的不便但可以以普通I/O口模擬總線時(shí)序進(jìn)行操作。
3.系統(tǒng)校準(zhǔn)。在校準(zhǔn)之前應(yīng)該使CS5460處于有效操作狀態(tài),并且通過(guò)SPI接收有效命令清除狀態(tài)寄存器中的數(shù)據(jù)準(zhǔn)備就緒位(DRDY);然后,給電壓和電流的輸入通道施加相應(yīng)的校準(zhǔn)信號(hào);接著通過(guò)SPI接口向CS5460發(fā)送8位的校準(zhǔn)命令字;最后在相應(yīng)的校準(zhǔn)寄存器中保存校準(zhǔn)結(jié)果,德圖PH計(jì)并且置位DRDY位以通知CS5460校準(zhǔn)結(jié)束。校準(zhǔn)模塊主要提供一個(gè)管理界面用戶可以通過(guò)這個(gè)界面對(duì)電流表的電壓、電流、功率等參數(shù)進(jìn)行校正并把校正后的數(shù)據(jù)保存。
4.網(wǎng)絡(luò)通信。需要發(fā)出AT指令對(duì)modem進(jìn)行控制并且產(chǎn)生符合通信協(xié)議的數(shù)據(jù)流。發(fā)送數(shù)據(jù)時(shí)應(yīng)用程序發(fā)送的數(shù)據(jù)經(jīng)TCP/IP協(xié)議封裝之后再利用下層的PPP協(xié)議封裝為PPP幀然后通過(guò)異步串行口驅(qū)動(dòng)程序?qū)PP幀發(fā)送出去。接收數(shù)據(jù)時(shí)由異步串口驅(qū)動(dòng)程序負(fù)責(zé)接收數(shù)據(jù)。然后由TCP模塊和IP協(xié)議模塊對(duì)數(shù)據(jù)進(jìn)行處理將用戶數(shù)據(jù)交給應(yīng)用程序。
uC/OS-II屬于搶先式剝奪型實(shí)時(shí)內(nèi)核永遠(yuǎn)保證優(yōu)先級(jí)最高的就緒任務(wù)的運(yùn)行。uC/OS-II可以完成各任務(wù)之間的調(diào)度和同步協(xié)調(diào)硬件資源。各個(gè)任務(wù)之間通過(guò)信號(hào)量、郵箱、消息隊(duì)列等通信機(jī)制進(jìn)行數(shù)據(jù)共享及任務(wù)通信;趗C/OS-II嵌入式操作系統(tǒng)平臺(tái)編程的關(guān)鍵在于任務(wù)的劃分以及優(yōu)先級(jí)的確定。該任務(wù)的任務(wù)劃分圖見(jiàn)《電子設(shè)計(jì)應(yīng)用》2004.8。
各任務(wù)的優(yōu)先級(jí)為:過(guò)流過(guò)壓保護(hù)>數(shù)據(jù)處理>實(shí)時(shí)時(shí)鐘>數(shù)據(jù)存儲(chǔ)>遠(yuǎn)程通信。
結(jié)語(yǔ)
本文介紹的網(wǎng)絡(luò)化電能表軟件系統(tǒng)是在嵌入式操作系統(tǒng)平臺(tái)下開發(fā)的便于單個(gè)任務(wù)調(diào)試單個(gè)任務(wù)的錯(cuò)誤不會(huì)導(dǎo)致整個(gè)系統(tǒng)的崩潰。傳統(tǒng)的嵌人式網(wǎng)絡(luò)產(chǎn)品需要專門的網(wǎng)關(guān)以實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸本系統(tǒng)則實(shí)現(xiàn)了嵌入式網(wǎng)關(guān)與測(cè)量控制部分感到一體化這是以后實(shí)現(xiàn)嵌入式產(chǎn)品上網(wǎng)的趨勢(shì)。