• 
    <ul id="auswy"><sup id="auswy"></sup></ul>
  • <ul id="auswy"></ul>
    ABB
    關注中國自動化產業(yè)發(fā)展的先行者!
    CAIAC 2025
    2025工業(yè)安全大會
    OICT公益講堂
    當前位置:首頁 >> 案例 >> 案例首頁

    案例頻道

    基于TINI平臺的網絡開關設計
    • 企業(yè):控制網    
    • 點擊數:1993     發(fā)布時間:2006-07-20 11:09:22
    • 分享到:
    提出一種基于TINI平臺的網絡ON/OFF開關系統設計方案,介紹以D S 8 0 C 4 0 0 單片機為核心的系統硬件構成和基于T I N I 運行環(huán)境的應用程序設計方法。該方案可以實現網絡開關的開關控制。
    引言
            為了達到利用Internet強大的網絡功能,實現遠程控制的目的,需要研究合理的網絡接入方案。利用基于TINI平臺的嵌入式系統,搭建不同設備接入計算機網絡的橋梁。利用嵌入式系統強大的軟硬件功能,可以支持不同的設備,實現接入方案的通用性。由于嵌入式系統具備較好的數據處理能力,不僅可以作為簡單的網絡接口,還可以擴展接入設備的網絡功能。
            本次設計方案,IP網絡繼電器所需的TCP/IP棧和本地控制全部可由TINI平臺提供。JAVA運行環(huán)境極大地降低了這項任務的復雜性,利用它可以實現通過網絡遠程訪問和控制小型傳感器和執(zhí)行器。本次設計的IP ON/OFF開關,采用一個簡單的繼電器和微控制器DS80C400構建,它還可以延伸到其他遠程監(jiān)視和控制應用中。本電路由一個成為TINIWebServer的應用進行控制,它直接由TINI運行環(huán)境執(zhí)行,applet服務于主工作站,為了命令和狀態(tài)返回到TINI運行環(huán)境而打開雙向通信,并且顯示一個用于遙控繼電器的圖形用戶界面。
       
    一、系統軟件概述
            Com.dalsemi.tininet.http.HTTPServer類屬于JAVAKIT里的一個擴展類,它允許開關控制應用程序充當簡單的web服務器,其唯一的目的是將applet傳遞給遠端主機,在被主機內部瀏覽器執(zhí)行后,該applet就建立了一個于TINI應用程序交換命令和狀態(tài)的雙向TCP連接,它也為顯示控制和狀態(tài)提供了一個圖形用戶界面。圖1描述了整個軟件系統的原理圖。


    1 系統軟件原理圖

    二、系統硬件概述

        在圖2中,基于DS80C400芯片的ON/OFF控制電路構成了開關接口。DS80C400芯片提供了以太網接口能力,以及通過引腳P5.0(其他引腳也可以等效工作)控制開關。N溝道MOSFET通過開關流過繼電器的電流,來控制繼電器。用戶可以根據繼電器和FET的大小要求,供給不同的電壓和電流;如果不需要隔離外部電路于TINI驗證模塊的電源,則可以去掉繼電器。在開關狀態(tài)改變時,二極管抑制繼電器線圈的感生電壓。為了可能實現某些新的服務,如網絡開關控制,在TINI芯片組參考設計中,采用基于標準的因特網技術,集成了所需要的軟硬件組件。


    2 系統硬件原理圖

    三、網絡開關控制原理
        由四個類構成了該應用的開關控制和web服務器接口部分。Power-Switch類通過采用TINI類中的com.dalsemi.system.BitPort  API類,直接接口至硬件。WebWorker類直接來由Software Developer’s Kit (TINI SDK)中的TINIWebServer,負責為到來的HTTP連接提供服務。SwitchWorker類管理applet和TINI應用之間的所有命令和狀態(tài)通信。TINIWebServer類通過綁定各個類的操作,來實現本應用。
        PowerSwitch類是一個連接硬件的接口,在其構造器內為引腳P5.0創(chuàng)建一個BitPort目標。在該類中,可以執(zhí)行兩種函數,ON函數設定的引腳端口狀態(tài)是接通繼電器線圈的電壓;而OFF函數通過清零端口狀態(tài),來斷開繼電器線圈的電壓。在圖2中的單刀雙擲(SPDT)繼電器能夠工作于常閉或常開位置,即在這兩種位置之間切換外部電壓源。ON和OFF函數假設電路工作于常開狀態(tài),且必須能夠被改變至常閉電路狀態(tài)。為了指示ON/OFF是否對應于BitPort的位置或clear函數,則在該類中引入了一個外部的布爾變量(invert)。另一個函數(setInvert)要求用來初始化invert變量。硬件圖描述的是常開電路。
        WebWorker類提供了網絡和應用之間的接口。它簡單地建立和驅動一個目標(com.dalsemi.tininet.http.HTTPServer),該目標依次產生線程,為每一個到來的HTTP連接提供服務,該類取自于上述的TINIWebserver,無須作任何修改,可以在網絡上的任何地方接入,HTTPServer能夠提供輸入密碼,或者接受任何其他形式的控制,僅允許那些授權的用號接入。
        通過將網絡和硬件接口組合在一起(圖3所示),TINIWebServer允許遠程開關控制。例如,drive()函數通過創(chuàng)建一個WebWorker線程和網頁“index.html”,建立此web服務器,網頁的主要目的是為了在主機工作站上,下載并執(zhí)行該applet。如果提示網頁僅包含靜態(tài)信息,該應用就沒有必要創(chuàng)建網頁。該索引只需要包含applet的jar文件一起,拷貝至web服務器的根目錄下即可。


    3 網絡與硬件接口連接流程

        CODEBASE是一個在每個TINI芯片組設計中可以改變的網頁參數。Applet使用該信息,以返回連接至某個獨立的服務器插件中的TINI應用程序,可以創(chuàng)建并上傳一個定制的網頁至任何一個安裝在現場的TINI芯片組參考設計。一個簡單的方法是由應用程序在每次運行時,創(chuàng)建該網頁。通過三次寫操作,createIndexPage函數可以創(chuàng)建文件index.html,并將IP地址插入CODEBASE部分:
    1)  index.write(indexTop.getBytes(),0,indexTop.length());
    2)  index.write(InetAddress.getLocalHost().getHostAddress().getBytes());
    3)  index.write(indexBottom.getBytes (), 0, indexBottom.length ());
        第一次和第三此寫操作是將網頁的靜態(tài)部分拷貝至文件中,而第二次寫操作是將IP地址拷貝至文件的CODEBASE部分,在應用程序建立web服務器和創(chuàng)建網頁后,就啟動了web服務器。它創(chuàng)建一個服務器插件,用來處理來自下載applet的鍵入連接,并且在applet每次連接TINI應用時,調用serviceConnection函數。
        serviceConnection函數創(chuàng)建了一個新例程SwitchWorker,并將這個插件傳給該類,SwitchWorker構造器創(chuàng)建一個新的線程,以處理主機applet 和TINI應用之間的連接,SwitchWorker 函數也處理下一個進入連接,接著將控制傳給drive函數。
        SwitchWorker類管理applet和Web服務器之間的所有通信(圖4),在連接被斷開之前,它不斷地循環(huán),執(zhí)行下列步驟:
    1)  停留在read(),等待一個來自applet的命令字節(jié);
    2)  如果命令字節(jié)為0,則斷開開關;如果為1,則閉合開關;
    3)  讀入當前開關狀態(tài),回傳至applet。


    4 applet與web服務器通信狀態(tài)圖

        通過分配每個命令字節(jié)的低7位來表示不同開關的狀態(tài)(圖 5),該運算法則可以適用于更多的開關。保留最高位,用來指示只讀操作。該運行法則也可以被擴展,以允許在同一時刻多個applet連接至單個TINI web服務器應用。SwitchWorker只是簡單地保持一個“監(jiān)聽向量”(” vector of  listerners”)。每次applet發(fā)出一個修改開關狀態(tài)的命令,web服務器就將其狀態(tài)回傳至當前之連接的所有applet。


    圖5 網絡開關控制流程圖

        將applet應用在主機上,是因為它提供了一套豐富的、用于顯示控制和狀態(tài)的圖形對象以及允許雙向通信。TINI類中的com.dalsemi.tininet.http.HTTPServer類是一種小巧而快速的類,但僅支持HTTP GET操作。由此產生是數據只能從TINI應用到主機單向傳遞。然而,該應用要求雙向數據傳輸。命令由主機發(fā)送至TINI web服務器,而狀態(tài)由web服務器發(fā)送至所有相連的主機。主機和TINI應用之間的通信無協議開銷,單字節(jié)命令和單字節(jié)狀態(tài)允許極快的控制和狀態(tài)響應。
        主機applet包括兩個類:主類(SwitchControl)處理主機端的網絡通信和創(chuàng)建網頁上所有的顯示圖形單元(圖6);另一個類(ImageButton)創(chuàng)建一個圖形撥動按鈕,顯示對應于按鈕狀態(tài)的兩種位圖之一。撥動按鈕用于開關的控制和狀態(tài)指示應該是足夠的,但applet的表現會因瀏覽器的不同而異。因此,加入簡單的ON/OFF按鈕將完成相同的控制功能,位圖和狀態(tài)窗完成相同的狀態(tài)指示功能而已。


    6 SwitchControl控制流程圖

        在創(chuàng)建圖形單元后,SwitchControl類將創(chuàng)建一個狀態(tài)監(jiān)測線程。該線程接著進入休眠模式,停留于讀命令狀態(tài),等待來自于TINI應用的狀態(tài)信息。當線程向下運行時,ImageButton的位圖和狀態(tài)窗被刷新,接著又循環(huán)到程序的頂部,等待下一次的狀態(tài)字節(jié)。Applet事件線程驅動actionPerformed函數,該函數在每次按下圖形按鈕后被調用,如果調用由ImageButton或ON/OFF按鈕觸發(fā),則它翻轉當前狀態(tài),并向TINI發(fā)出一個開或關的命令,ImageButton類只是一個簡單的采用AWT(Abstract Window Toolkit)組件編程的范例。
     
    四、結論
        由上述可知,采用TINI運行環(huán)境,JAVA程序和簡單的繼電器電路,實行遠程控制ON/OFF開關時非常容易的。挑選合適的現有電路元件使得許多應用成為可能,可以控制任何事物(從任何位置的網絡接入),從照明燈到任何工業(yè)設備。
     
     
     
     
     
    參考文獻
    1 DS80C400 Network Microcontroller 1999
    2 High-Speed Microcontroller User Guide: DS80C400Supplement 1999
    3 Exploring Tiny InterNet Interface 1999
    4 The TINI Specification and Developer Guide 1999

    熱點新聞

    推薦產品

    x
    • 在線反饋
    1.我有以下需求:



    2.詳細的需求:
    姓名:
    單位:
    電話:
    郵件: