曹正陽,田夢君,楊 寧,楊 融
(西北工業大學機電學院,西安 710072)
RS-232 串行通信是目前異步通信中應用最廣泛的標準總線,在工業控制、樓宇安全系統等領域中,大多數設備的通信接口都符合RS-232 通信標準,但是這種通信方式的傳輸半徑十分有限,所以在遠程控制上會有明顯的不足[1]。而以太網作為當今應用最廣泛的網絡,具有很強的遠程通信能力及數據傳輸能力。為了能夠融合兩種技術的優勢,對串口設備進行有效地改進,需要設計一種以太網到RS-232的協議轉換器[2]。
對現有產品進行更新,一般是通過RS-232 總線將更新的內容傳輸到產品中;若采用HTTP 服務直接從WEB 服務器上更新產品,無論從實時性上還是從靈活性上都得到了提高[3]。將產品接入到以太網的方法有兩種:一種方法是對原有系統進行重新布局,采用能夠接入因特網的新產品[4],但是高成本和長周期成為其最大的弊端;另一種方法是在原有設備中接入HTTP 到RS-232 協議轉換器,只要當前產品中包含RS-232 接口就可以實現以太網接入,這就使系統的復雜程度和開發成本都有所降低,因此這種方法更具有應用價值。
協議轉換器主要由以太網通信模塊、協議轉換模塊、串行通信模塊以及數據存儲模塊構成。鑒于PIC18F97J60 高性能8 位網絡單片機的低功耗、低成本、高集成度以及高穩定性的這些優良特性,本系統采用該單片機作為主控制芯片。
協議轉換器完成的主要功能是:用戶通過以太網進入到協議轉換器指定的服務器,利用HTTP 服務把數據或文件傳輸到協議轉換器中;接著由PIC18F97J60 單片機對數據包進行處理,將HTTP 協議數據包轉換成RS-232 協議數據包;最后把RS-232 協議數據包發送至終端設備,至此實現了以太網接入以及數據傳輸。
HTTP 與RS-232 協議轉換器的硬件系統主要包括以下三部分:以太網通信模塊接口電路,串行通信模塊接口電路,數據存儲模塊。系統的基本結構框圖如圖1 所示。

圖1 系統基本結構框圖
PICl8F97J60 單片機的嵌入式以太網控制器模塊,完全實現了介質訪問控制和物理層收發器模塊,并且在模塊內部實現了數據包過濾機制,用于限制傳入的數據包,同時也提供了一個用于實現快速數據吞吐的內置DMA 模塊以及硬件IP 校驗和計算。
在模塊接口電路設計中,利用單片機提供的四個專用信號接口TPIN +、TPIN-、TPOUT+和TPOUT-連接至RJ-45 連接器,并在它們之間連接一個1:1 中心抽頭脈沖變壓器,這樣就實現了以太網的接入;為了使收發器正常工作,通過一個電阻將RBIAS 引腳接地,使其獲得來自外部的偏置電流。Ethernet 接口電路如圖2 所示。
在PIC18F97J60 單片機的內部集成了兩個EUSART(增強型通用同步/異步收發器)模塊,用戶既可以將EUSART 配置成能夠與PC 機等終端設備通信的全雙工異步系統,也可以將其配置成能夠與串行EEPROM 等外設通信的半雙工同步系統。

圖2 以太網模塊接口電路
為了使單片機的TTL 電平能夠驅動RS-232標準規定的邏輯電平,在它們接口之間必須加一個電平轉換芯片,這里采用MAX3232 串口驅動芯片,它保證了在120Kbps 數據速率下維持RS-232 電平的輸出。
系統中采用Microchip 公司SPI 串行EEPROM系列中的25LC256 作為數據存儲器。該器件具有32KB的存儲容量,64 byte的頁操作功能;它的工作電壓在2.2V 至5.5V 之間,其SPI 總線讀寫最高速率可達到10MHz,相對于I2C 總線的數據傳輸速率有很大提高。
在設計接口電路時,MISO 引腳接入上拉電阻以提高數據的可靠性;在考慮PCB 布線時,MISO、MOSI以及SCK 三根線盡量保持同向、等長,以提高數據的實時性。數據存儲器的主要目的是儲存以太網信息,使用戶能訪問到指定的服務器地址。
Microchip 公司提供的免費TCP/IP 協議??梢苑奖愕膶⒒赑IC18F97J60的整個系統接入以太網,它適用于不需要很高數據量的以太網接入應用系統。Microchip TCP/IP 協議棧是按照模塊化方式編寫,應用哪個協議只需修改相應模塊的功能,其它模塊無需改動。與TCP/IP參考模型不同的是,此協議棧中的很多層可以直接訪問下面的一層或多層[5],因此用戶不需要對TCP/IP 協議棧中的所有細節有深入的了解,只需將精力集中在應用上[6-7]。為此,Microchip TCP/IP 協議棧在實現方法上添加了StackTask 和ARPStack 兩個模塊。StackTask 用來管理協議棧及其所有模塊的操作,而ARPStack 管理地址解析協議層的服務。
系統的目標是將本地計算機作為HTTP 服務器,局域網中的其它計算機能夠訪問服務器并且可將數據通過串口下載到本機中。服務程序主要包括兩個函數:一個是MainDemo.C 函數,負責初始化各種軟硬件環境并在循環函數中循環調用HTTP 函數;另一個是CustomHTTPApp 函數,實現發送和解釋收到的網頁代碼,生成網頁的功能。
在MainDemo.C 文件中,首先對系統進行初始化,在TickInit 函數中通過配置TMR0H、TMR0L 以及T0CON 寄存器對Timer0 進行設置,把定時器0作為TCP 連接、HTTP 連接等網絡連接的定時計數器,用于判斷超時連接;對串口數據的收發、工作方式以及波特率的配置,主要工作集中在TXSTA1、RCSTA1 以及BAUDCON1 這三組寄存器中;Stack-Init 函數的調用實現了TCP/IP 協議棧的初始化,為以太網的連接提供了支持。初始化程序流程圖如圖3 所示。

圖3 初始化程序流程圖
當用戶進行HTTP 連接時,在循環函數里通過周期性的調用StackApplications 函數以保證服務器及時的響應,從而能夠進入到HTTP 服務程序中;當連接次數不大于設置的HTTP 最大連接次數時,在HTTPProcess 函數中就可以對HTTP 服務器的狀態進行處理。
當用戶在服務器上進行數據下載時,相當于產生一個GET 請求,HTTPExecuteGet 函數會根據filename 找到對應的HTML 文件,通過HTTPGetROMArg 函數得到用戶所請求的數據;如果用戶要修改服務器的IP 地址,也就是把表單中的數據提交給服務器,為了達到此目的可以采用Post 方法,通過調用HTTPExecutePost 函數來實現。單片機的協議轉換程序設計流程如圖4 所示。

圖4 協議轉換程序流程圖
在應用系統中,服務器端網頁的設計主要涉及三項網頁開發技術:HTML 編碼、AJAX 和CGI。其中config.htm 文件將WEB 網頁中相關服務與TCP/IP 協議棧聯系在一起,部分代碼如下:

由于傳統的Web 網頁在表單獲取的過程中傳遞了兩次HTML 編碼基本相同的頁面,這樣既浪費了頻寬又增加了系統響應時間;為了減少服務器的處理工作,獲得更快的響應速度,利用AJAX 技術中基于XML的web service 接口以及在客戶端上的JavaScript 來處理來自服務器的回應。在設計實例中,首先用戶在頁面輸入IP、DNS 等信息,通過HTTP服務把這些請求提交到協議轉換器中,同時把信息放到CGI 目錄下指定的CGI 程序中;接著CGI 程序對這些信息進行處理,并把處理結果傳送到協議轉換器中;最后協議轉換器把結果返回到用戶頁面,這樣用戶就可以實時地與服務器進行交互。
系統基于PIC18F97J60 單片機設計并實現了HTTP 到RS-232的協議轉換器。本系統已在局域網調試成功,調試結果如圖5 所示。

圖5 協議轉換器調試結果
由圖5 可以看出,實現了HTTP 協議到RS-232 協議數據包的轉換,并且可以通過表單的方式對服務器的配置進行管理,若在系統中加入上層數據庫,那么該協議轉換器就具有一定的通用性,滿足讀卡系統、工業自動化系統等領域要求。
[1]蘇義鑫,王軍,何力,羅佳佳.基于單片機的CAN-以太網協議轉換器的設計[J].電子技術應用,2008(8):130-132.
[2]戴力,劉篤仁.一種基于PIC 單片機的嵌入式Internet實現[J].中國集成電路,2005(8):58-61.
[3]劉海英,杜曉通.PIC 微處理器低成本的以太網解決方案[J].新器件新技術,2007(11):49-51.
[4]Luis F Caro,Jose L Marzo.Enhancing label space usage for Ethernet VLAN- label switching[J].Computer Networks,2009,53:1050-1061.
[5]W Richard Stevens.TCP/IP 詳解一卷h 協議[M].北京:機械工業出版社,2005.
[6]Akihiko Ishida,Takahiro Yoshikawa,Masamichi Natsume,Tamio Kamidate:Reversed- phase liquid chromatography on a microchip with sample injector and monolithic silica column.Journal of Chromatography A[J].Issues 1-2,3,2006(11):90-98.
[7]Sergio Scaglia.嵌入式Internet TCP/IP 基礎、實現及應用[M].北京:北京航空航天大學出版社,2008.