嵌入式網絡數據轉換系統(tǒng)的研究與開發(fā)
關鍵詞 網絡數據轉換 TINI Java DP83846A DS80C400
為了達到利用Internet強大的網絡功能,實現(xiàn)遠程監(jiān)控的目的,需要研究合理的網絡接人方案。利用基于TINI平臺的嵌入式系統(tǒng),搭建不同設備接人計算機網絡的橋梁。利用嵌入式系統(tǒng)強大的軟硬件功能,可以支持不同的設備,實現(xiàn)接入方案的通用性。由于嵌入式系統(tǒng)具備較好的數據處理能力,不僅可以作為簡單的網絡接口,還可以擴展接人設備的網絡功能,甚至于還可以對通信的數據進行加密等處理。
嵌入式系統(tǒng)包括專用的硬件和軟件部分,硬件提供性能的支持,而軟件則為用戶提供廣泛的靈活性。嵌入式系統(tǒng)的軟件包括其自身的操作系統(tǒng)和編程環(huán)境。Java所具有的各種特性使它成為嵌入式設備理想的軟件開發(fā)工具。針對Java有很多免費開放的資源,Java獨立于硬件平臺,具備可移植性。這一切都可以降低嵌入式設備開發(fā)和使用的成本。其中TINI平臺就是一種具備Java開發(fā)功能的嵌入式系統(tǒng)。
1 系統(tǒng)硬件組成
基于TINI數據轉換系統(tǒng)的硬件系統(tǒng)如圖1所示。系統(tǒng)與外界的接口主要是RS232的串口和RJ45的以太網接口,其功能就是將串口設備接人到局域網絡甚至于Interne。
2 網絡數據轉換系統(tǒng)的Java程序
2.1 軟件開發(fā)工具包——TlNI SDK
為了在編程中實現(xiàn)對硬件的訪問,Dallas公司開發(fā)的TINI SDK將DS80C400中的硬件部分虛擬為Java的類。通過調用相關的方法來實現(xiàn)對硬件的操作。SDK中包含Dallas公司開發(fā)的嵌入式操作系統(tǒng)。它是多任務、多線程、具有跨平臺的能力、擁有高度優(yōu)化的Java運行環(huán)境的操作系統(tǒng)。
在TINI SDK的支持下開發(fā)應用程序,主要采用Java進行,通常不直接面對匯編語言,但是TINI運行環(huán)境提供了使用本地方法的機制。為了優(yōu)化嚴格要求速度的通道或訪問底層硬件,可以使用本地語言(主要是匯編語言)來編寫子程序,這樣增加了系統(tǒng)的靈活性。
利用SDK中提供的API可以簡化編程。利用SDK中提供的JavaKit和TINIConvertor等工具,在PC上進行程序的開發(fā)調試工作,生成適用于TINI運行環(huán)境的目標應用程序。通過JayaKit向TINI硬件存儲器中裝載TINI的運行環(huán)境(包括TINI的操作系統(tǒng)),配置好網絡參數,即可通過FTP、TELNET等下載用戶程序到TINI硬件上并控制運行。TINI的Java虛擬機將Java字節(jié)碼轉換成為機器硬件系統(tǒng)能夠執(zhí)行的代碼。
2.2系統(tǒng)程序的設計方法
為了實現(xiàn)串口數據和以太網絡數據之間的交換,設計了基于TINI系統(tǒng)的網絡數據轉換程序。該程序的主要功能是,從串口設備讀取數據,將所得到的數據進行TcP/IP協(xié)議封裝,通過RJ45的接口發(fā)送到上位機,與上位機的服務器程序進行交互;同時,將上位機發(fā)送給TINI的數據轉發(fā)到RS232的串口,進而可通過網絡遠程監(jiān)控現(xiàn)場的串口設備。本設計中,TINI印刷電路板上有兩個串口,分別定義為串口O和串口4。單片機內部集成UART,串口0用來串口啟動TINl,下載TINI運行環(huán)境,以及作為TINI的輸出終端。本程序中,利用串口4和上位機服務器程序交互。
數據轉換由兩個進程來實現(xiàn),它們分別是SerialWriter和SerialReader。SerialWritel的功能是從上位機服務器讀取數據流,再把數據寫到串口輸出數據流;SeriaReader的功能是把串口緩沖區(qū)中的可用數據讀到輸入緩沖區(qū),通過向網絡輸出流寫數據把串口數據發(fā)送到網絡服務器,并且更新串口數據量;同時監(jiān)視這兩個進程有無異常。如果捕捉到異常,便關閉數據流并中斷維持線程,結束程序。
SerialToEthernet本身繼承了一個線程類。它是一個維持線程,功能是判斷系統(tǒng)通信狀態(tài)。如果正常,則每隔6 s打印輸出數據流量;如果連接的服務器被關閉,則關閉串口socket及相關的流。它的線程程序中,是一個有系統(tǒng)運行狀態(tài)標志控制的循環(huán),維持程序運行,每一次循環(huán)中首先使該進程睡眠6 000 ms,然后打印輸出此時的數據流量。程序的流程如圖2、圖3、圖4所示。
3 系統(tǒng)調試方案
系統(tǒng)調試的主要目的是模擬現(xiàn)場設備與以太網之間的數據轉換,將PC機通過串口與以太網接口與系統(tǒng)相連,接線方式如圖5所示;用PC機模擬現(xiàn)場的設備,同時,利用PC機作為上位機監(jiān)控系統(tǒng)運行。
實驗中除了運行SerialToEthernet外,還準備了兩個簡單的用戶程序,用于系統(tǒng)調試,分別是HelloWorld和Blinky。
第一步,下載運行HelloWorld。其功能是在以JavaKit作為TINI的系統(tǒng)輸出終端(類似于PC機的顯示器),打印輸出“Hello World”的字符串,用于檢驗串口O。
第二步,下載運行Blinky。它的功能是與P3.5相連的LED不停閃爍,用于檢驗I/0口的功能。
第三步,下載運行SerialToEthernet,同時運行上位機上服務器程序TINlServer。TINI系統(tǒng)上運行Serial-ToEthernet,用于實現(xiàn)數據轉發(fā)功能。為了驗證上位機與TINI問的串口通信,上位機上運行串口調試程序,從而用上位機模擬實際的現(xiàn)場串口設備。運行串口調試程序時,在其中把串口設為與TINI的串口參數相同,發(fā)送模式設為連續(xù)發(fā)送。在這樣的模擬情況下,從串口調試程序窗口輸入的數據,通過串口發(fā)送給TINI系統(tǒng),經過TINI的轉發(fā),通過RJ45接口發(fā)往上位機。上位機運行服務器程序TINIServer,它將TINI發(fā)來的數據不經處理直接通過輸出流發(fā)送給TINI。經過TINI的轉發(fā),數據再次由串口返回上位機,顯示在串口調試程序的“接收區(qū)”中。數據流向如圖6所示。
4 結論
與傳統(tǒng)的工業(yè)控制數據轉換系統(tǒng)相比,TINI更加廉價,更加緊湊,消耗功率更低,并且易于維護。此外,TINI還支持許多底層的通信接口,具有足夠的靈活性,可以適應不同聯(lián)網的要求?;赥INI的網絡數據轉換系統(tǒng)方案是低成本而且可靠的。利用Java編程可以提高嵌入式系統(tǒng)軟件開發(fā)的效率。在本系統(tǒng)的開發(fā)過程中。利用Java軟件很方便地實現(xiàn)對底層硬件的訪問;利用Java自身的特性,可以實現(xiàn)強大的網絡功能。
對于設備來說,通過本系統(tǒng)可以利用現(xiàn)有的網絡擴展其功能;同時也可以利用以太網絡實現(xiàn)對設備的遠程診斷控制,實現(xiàn)更加廣泛意義上的網絡化。