摘 要: 利用ADμC831和TMS320F206的片上資源定義了完整的TEDS,并通過(guò)μIP協(xié)議建立了帶有CGI功能的嵌入式" title="的嵌入式">的嵌入式Web服務(wù)器,利用兩個(gè)芯片豐富的外部接口定義了TII標(biāo)準(zhǔn)接口,從而實(shí)現(xiàn)了基于IEEE1451.2標(biāo)準(zhǔn)的嵌入式Web接口模塊" title="接口模塊">接口模塊,為基于IEEE1451標(biāo)準(zhǔn)的嵌入式Web應(yīng)用提供了一種簡(jiǎn)單的實(shí)現(xiàn)方法。
關(guān)鍵詞: IEEE1451.2標(biāo)準(zhǔn) TEDS TII接口 μIP協(xié)議 嵌入式Web服務(wù)器
為了實(shí)現(xiàn)控制總線的統(tǒng)一,在1997年和1999年IEEE先后頒布了IEEE1451.2標(biāo)準(zhǔn)和IEEE1451.1標(biāo)準(zhǔn)。IEEE1451.1標(biāo)準(zhǔn)定義了網(wǎng)絡(luò)獨(dú)立的信息模型,使傳感器/執(zhí)行器" title="執(zhí)行器">執(zhí)行器通過(guò)網(wǎng)絡(luò)匹配處理器NCAP(Network Capable Application Processor)連接到控制網(wǎng)絡(luò);IEEE1451.2標(biāo)準(zhǔn)定義了一個(gè)智能變送器接口模塊STIM(Smart Transducer Interface Module),主要包括電子數(shù)據(jù)表單TEDS(Transducer Electronic Data Sheet)和與傳感器無(wú)關(guān)的標(biāo)準(zhǔn)接口TII(Transducer Independent Interface)。
目前,市場(chǎng)上基于IEEE1451標(biāo)準(zhǔn)的傳感器/執(zhí)行器不多,僅有的產(chǎn)品也只是借用了IEEE1451標(biāo)準(zhǔn)的部分內(nèi)容,例如定義了部分的TEDS或是沒(méi)有完全按照標(biāo)準(zhǔn)定義TII接口。本設(shè)計(jì)嚴(yán)格按照IEEE1451.2標(biāo)準(zhǔn),在ADμC831和TMS320F206上分別實(shí)現(xiàn)STIM模塊和NCAP模塊,并且定義了標(biāo)準(zhǔn)的TII接口。
1 接口模塊的硬件設(shè)計(jì)
1.1 ADμC831芯片
ADμC831單片機(jī)是美國(guó)AD公司出品的高性能微轉(zhuǎn)換器,集成了8通道的自校準(zhǔn)12位ADC、2個(gè)支持PWM輸出的12位DAC以及與8051兼容的可編程8位MCU。片內(nèi)資源為62KB的閃速" title="閃速">閃速程序存儲(chǔ)器、4KB的閃速數(shù)據(jù)存儲(chǔ)器以及2304B的RAM。片內(nèi)集成看門(mén)狗定時(shí)器(WDT)、電源監(jiān)視器(PSM)和可用于溫度補(bǔ)償?shù)臏囟葌鞲衅?。另外,為多處理器接口和I/O擴(kuò)展提供了32條可編程的I/O線、I2C兼容的SPI和標(biāo)準(zhǔn)UART串行端口。
1.2 TMS320F206
TMS320F206芯片是美國(guó)TI公司生產(chǎn)的一款16位定點(diǎn)DSP,采用高性能靜態(tài)CMOS集成電路工藝制造。它操作靈活、性價(jià)比高,已廣泛應(yīng)用于圖形圖像處理、語(yǔ)音處理、通信及儀器儀表等領(lǐng)域。
F206采用先進(jìn)的改進(jìn)型哈佛結(jié)構(gòu),其程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器具有各自的總線結(jié)構(gòu),結(jié)合四級(jí)流水線操作,兩條總線獨(dú)立編址、獨(dú)立訪問(wèn),可允許同時(shí)讀取數(shù)據(jù)和指令,從而使數(shù)據(jù)的吞吐率提高了一倍。F206集成了一個(gè)4.5K字的片內(nèi)RAM存儲(chǔ)器、32K字的閃速FLASH存儲(chǔ)器,可用于存儲(chǔ)程序和數(shù)據(jù)文件。
1.3 總體設(shè)計(jì)
本設(shè)計(jì)嚴(yán)格遵循IEEE1451.2標(biāo)準(zhǔn),采用高性能的單片機(jī)ADμC831實(shí)現(xiàn)STIM模塊的功能,在其上建立完整的TEDS,可以同時(shí)控制8路傳感器和2路執(zhí)行器;采用TMS320F206和以太網(wǎng)控制芯片RTL8019AS實(shí)現(xiàn)NCAP模塊的功能,在其上建立嵌入式Web服務(wù)器以響應(yīng)遠(yuǎn)程訪問(wèn);在兩個(gè)模塊之間設(shè)計(jì)2×5的標(biāo)準(zhǔn)TII接口,以實(shí)現(xiàn)兩個(gè)模塊的連接。其設(shè)計(jì)原理圖如圖1所示。
1.4 TII接口設(shè)計(jì)
TII是用于連接NCAP和STIM的點(diǎn)對(duì)點(diǎn)、時(shí)鐘同步的標(biāo)準(zhǔn)接口,共有10個(gè)引腳。本設(shè)計(jì)按照IEEE1451.2標(biāo)準(zhǔn)的定義,利用ADμC831、TMS320F206的I/O和中斷接口,實(shí)現(xiàn)了TII標(biāo)準(zhǔn)接口,其具體含義如表1所示。
其中NIOE在ADμC831端為從機(jī)選擇信號(hào),當(dāng)其低電平有效時(shí)表示處于從機(jī)狀態(tài),接收外部串行時(shí)鐘信號(hào)以實(shí)現(xiàn)數(shù)據(jù)同步傳輸,所以F206應(yīng)通過(guò)IO3輸出低電平;F206通過(guò)IO2觸發(fā)ADμC831的INT0,在中斷程序中實(shí)現(xiàn)數(shù)據(jù)采集和執(zhí)行器控制;F206的/INT2端與STIM模塊斷開(kāi)時(shí)為高電平,當(dāng)與STIM模塊連接時(shí),在STIM模塊上通過(guò)10kΩ電阻接地將之拉至低電平,從而觸發(fā)中斷,而在中斷程序中改寫(xiě)標(biāo)志位,使NCAP確認(rèn)STIM的存在;當(dāng)STIM模塊需要服務(wù)時(shí),通過(guò)NINT通知F206的IO1,在NCAP模塊的主程序中會(huì)查詢此端口的狀態(tài)以判斷是否需要對(duì)STIM模塊服務(wù)。
2 STIM模塊中TEDS的定義
TEDS是IEEE1451.2標(biāo)準(zhǔn)的核心,它完整詳細(xì)地描述了STIM所支持的傳感器/執(zhí)行器的類型、操作和屬性,并具有自動(dòng)識(shí)別這些傳感器/執(zhí)行器的能力。鑒于ADμC831內(nèi)置了62KB的閃速程序存儲(chǔ)器、4KB的閃速數(shù)據(jù)存儲(chǔ)器以及2304B的RAM,資源豐富,所以在TEDS.c文件中完整地定義了TEDS的8個(gè)部分,具體定義如表2所示。
3 NCAP模塊的軟件設(shè)計(jì)
3.1 軟件設(shè)計(jì)方法
為了實(shí)現(xiàn)因特網(wǎng)連接,使用μIP協(xié)議實(shí)現(xiàn)底層網(wǎng)絡(luò)設(shè)備與上層應(yīng)用程序之間的連接。本設(shè)計(jì)中μIP協(xié)議將ARP協(xié)議、IP協(xié)議、ICMP協(xié)議和TCP協(xié)議合為一個(gè)有機(jī)的整體,通過(guò)一系列接口函數(shù)" title="接口函數(shù)">接口函數(shù)與底層網(wǎng)絡(luò)設(shè)備和上層應(yīng)用程序通信。μIP提供了μip_input()和μip_periodic()兩個(gè)接口函數(shù)給底層網(wǎng)絡(luò)設(shè)備,結(jié)合RTL8019AS建立與因特網(wǎng)的連接及數(shù)據(jù)傳輸;μIP向應(yīng)用程序提供了一個(gè)接口函數(shù)UIP_APPCALL(),將其定義為嵌入式Web服務(wù)器程序,從而可以在處理網(wǎng)絡(luò)數(shù)據(jù)包時(shí)調(diào)用Web服務(wù)器程序,使遠(yuǎn)端用戶通過(guò)Web瀏覽器(例如IE)便可對(duì)NCAP模塊上的數(shù)據(jù)進(jìn)行讀取和改寫(xiě),從而實(shí)現(xiàn)對(duì)STIM模塊上的傳感器/執(zhí)行器的數(shù)據(jù)采集和控制。
為了實(shí)現(xiàn)對(duì)傳感器/執(zhí)行器的互動(dòng)操作,在Web服務(wù)器上需要有運(yùn)行外部程序的接口,即CGI(Common Gate Intergace),以便提供動(dòng)態(tài)網(wǎng)頁(yè)。μIP提供的源代碼中包括一個(gè)WebServer示例,其中一個(gè)很小的腳本語(yǔ)言可以實(shí)現(xiàn)CGI的功能。這個(gè)腳本語(yǔ)言規(guī)定每一個(gè)腳本行以一個(gè)命令字符開(kāi)頭,例如“i”、“t”、“c”、“?!被蛘摺?”,其語(yǔ)法規(guī)則是:
(1)“i”命令通知腳本解釋器從文件系統(tǒng)取出一個(gè)靜態(tài)文件并輸出到瀏覽器;
(2)“t”命令表示將隨后的一段文字輸出到瀏覽器;
(3)“c”命令用來(lái)從cgi.c中調(diào)用一個(gè)C函數(shù);
(4)“?!泵畋硎颈拘袨樽⑨屝?;
(5)“.”命令表示本行是最后一行腳本語(yǔ)言。
利用這個(gè)腳本語(yǔ)言生成的動(dòng)態(tài)網(wǎng)頁(yè)的代碼示例如下:
/code /*表示代碼開(kāi)始*/
i/ header.html /*將header.html文件輸出到瀏覽器*/
t〈H1〉測(cè)試頁(yè)面〈/H1〉 /*將“測(cè)試頁(yè)面”作為標(biāo)題輸出到瀏覽器*/
c open /index.html /*調(diào)用open函數(shù),對(duì)index.html文件操作*/
./*表示本行是最后一行腳本語(yǔ)言,退出腳本解釋器*/
/endcode /*表示代碼結(jié)束*/
3.2 主程序的實(shí)現(xiàn)
NCAP模塊沒(méi)有使用嵌入式操作系統(tǒng),可以進(jìn)一步節(jié)約資源。主程序采用中斷加輪詢的方式,除了看門(mén)狗WDT外,其余中斷(包括STIM模塊的觸發(fā)中斷)只設(shè)定標(biāo)志位以控制程序流程。
在程序中輪詢有無(wú)網(wǎng)絡(luò)數(shù)據(jù)包輸入。如果沒(méi)有則檢測(cè)定時(shí)輪詢中斷是否發(fā)生,如果發(fā)生則調(diào)用μip_periodic()輪詢各連接,檢查是否有數(shù)據(jù)要發(fā)送,如果有則構(gòu)造IP包并發(fā)送出去。
如果有數(shù)據(jù)包輸入則判斷數(shù)據(jù)包的種類,如果是ICMP包只需要把類型字段從“echo”類型改變?yōu)椤癳cho reply”類型,調(diào)整ICMP 校驗(yàn)和,并互換IP 數(shù)據(jù)包頭中的目的地址和源地址,把包發(fā)回到發(fā)送方,從而實(shí)現(xiàn)對(duì)ping功能的支持。如果是TCP包,則利用μIP的μip_input()做相(接上頁(yè))
應(yīng)處理,并通過(guò)調(diào)用函數(shù)UIP_APPCALL()訪問(wèn)Web服務(wù)器,在Web服務(wù)器上判斷是傳送靜態(tài)網(wǎng)頁(yè)還是通過(guò)CGI對(duì)傳感器/執(zhí)行器進(jìn)行操作。
主程序的流程圖如圖2所示。
經(jīng)過(guò)實(shí)驗(yàn)證明,合理利用ADμC831和F206的片上資源以及μIP協(xié)議的接口函數(shù),可以實(shí)現(xiàn)一個(gè)基于IEEE1451.2標(biāo)準(zhǔn)的、功能較為完善的嵌入式Web接口模塊。此模塊適用于智能儀器儀表和遠(yuǎn)程控制系統(tǒng),為建立網(wǎng)絡(luò)測(cè)控系統(tǒng)提供一種簡(jiǎn)便的實(shí)現(xiàn)方案。
參考文獻(xiàn)
1 The ADμC812 as an IEEE1451.2 STIM.MicroConverterTM Technical Note-uC003.www.analog.com/microconverter
2 鄧治國(guó),張維新.μIP TCP/IP協(xié)議棧在51系列單片機(jī)上的應(yīng)用.微計(jì)算機(jī)信息,2004;20(3):88~90
3 μIP0.9.協(xié)議棧網(wǎng)絡(luò)站點(diǎn).http://dunkels.com/adam/uip/