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