<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 以太網(wǎng)遠(yuǎn)程監(jiān)控系統(tǒng)實現(xiàn)遠(yuǎn)程監(jiān)測控制和管理技術(shù)設(shè)計開發(fā)

          以太網(wǎng)遠(yuǎn)程監(jiān)控系統(tǒng)實現(xiàn)遠(yuǎn)程監(jiān)測控制和管理技術(shù)設(shè)計開發(fā)

          作者: 時間:2009-12-25 來源:網(wǎng)絡(luò) 收藏

            LwIP中需要使用信號量通信,所以在sys_arch.h、sys_arch.c中應(yīng)信號量結(jié)構(gòu)體sys_sem_t,和相關(guān)的信號量處理函數(shù):包括創(chuàng)建一個信號量結(jié)構(gòu)sys_sem_new(),釋放一個信號量結(jié)構(gòu)sys_sem_free(),發(fā)送信號量sys_sem_signal(),請求信號量sys_arch_sem_wait()。

            LwIP使用消息隊列來緩沖、傳遞數(shù)據(jù)報文,因此要在sys_arch.h、sys_arch.c中消息隊列結(jié)構(gòu)體sys_mbox_t,以及相應(yīng)的操作函數(shù):包括創(chuàng)建一個消息隊列sys_mbox_new(),釋放一個消息隊列sys_mbox_free(),向消息隊列發(fā)送消息sys_mbox_post(),從消息隊列中獲取消息sys_arch_mbox_fetch()。

            LwIP中每個與外界連接的線程都有自己的timeout屬性,即等待超時時間,移植工作需要sys_arch_timeouts()函數(shù),返回當(dāng)前正處于運行態(tài)的線程所對應(yīng)的timeout隊列指針。

            LwIP中數(shù)據(jù)的處理需要線程來操作,所以需要實現(xiàn)創(chuàng)建新線程函數(shù)sys_thread_new()。而在μC/OS-Ⅱ中,沒有線程的概念,只有任務(wù)。因此必須要把創(chuàng)建新任務(wù)的函數(shù)OSTaskCreate()封裝一下,才可以實現(xiàn)sys_thread_new()。

           ?。?) 相關(guān)庫函數(shù)的實現(xiàn)

            LwIP協(xié)議棧中用到了8個外部函數(shù),主要是來完成16位數(shù)據(jù)的高低字節(jié)交換、32位數(shù)據(jù)的大小頭對調(diào)、返回字符串長度、字符串比較、內(nèi)存數(shù)據(jù)塊拷貝、指定長度的數(shù)據(jù)塊清零等功能,與系統(tǒng)或編譯器有關(guān),需要用戶實現(xiàn)。

            (4) 設(shè)備驅(qū)動程序

            在LwIP中可以有多個網(wǎng)絡(luò)接口,每個網(wǎng)絡(luò)接口都對應(yīng)了一個netif結(jié)構(gòu),這個netif包含了相應(yīng)網(wǎng)絡(luò)接口的屬性、收發(fā)函數(shù)。在網(wǎng)絡(luò)設(shè)備驅(qū)動程序中主要就是實現(xiàn)四個網(wǎng)絡(luò)接口函數(shù):網(wǎng)卡初始化、網(wǎng)卡接收數(shù)據(jù)、網(wǎng)卡發(fā)送數(shù)據(jù)以及網(wǎng)卡中斷處理函數(shù)。

            3.2 PC機上客戶端程序的設(shè)計

            VC++6.0環(huán)境下客戶端程序?qū)崿F(xiàn)包括以下幾個部分:

           ?。?) 建立客戶端的Socket:客戶端應(yīng)用程序首先構(gòu)造一個CAsyncSocket[7]對象CltSock,然后調(diào)用CltSock.Create()函數(shù)來建立CltSock實體。

           ?。?) 提出連接請求:客戶端套接字CltSock通過調(diào)用CltSock.Connect(strAddr,nPort)函數(shù)向服務(wù)器套接字提出連接請求。

           ?。?) 傳輸數(shù)據(jù):在客戶端應(yīng)用程序中重載消息處理函數(shù)OnReceive()和OnSend()。在OnReceive()中通過調(diào)用CltSock.Receive()函數(shù)從服務(wù)器端接收數(shù)據(jù);在OnSend()中通過調(diào)用CltSock.Send()函數(shù)向服務(wù)器端發(fā)送數(shù)據(jù)。

           ?。?) 關(guān)閉連接:客戶端套接字CltSock通過調(diào)用CltSock.Close()函數(shù)來關(guān)閉連接。

          4 液位監(jiān)控應(yīng)用程序的開發(fā)

            本文設(shè)計完成的基于液位繼電自整定PID系統(tǒng),其算法在遠(yuǎn)端主機(客戶機)上實現(xiàn),兩端通過TCP協(xié)議通信,本地的嵌入式系統(tǒng) (服務(wù)器)上一方面實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的處理,一方面完成對液位高度的采集與;遠(yuǎn)端PC機上一方面處理網(wǎng)絡(luò)上的實時數(shù)據(jù),一方面通過PID計算出控制量,顯示相關(guān)參數(shù)。實時液位變化狀況如圖2所示,從圖中可以看出,實際液位(紅色曲線)能夠穩(wěn)定在液位設(shè)定值(藍(lán)色曲線)處。同時,從用戶界面上既可以讀出液位高度值,PID自整定參數(shù)等,還可以改變液位高度設(shè)定值,從而真正實現(xiàn)了液位對象的監(jiān)控。

          圖片點擊可在新窗口打開查看

          圖2 遠(yuǎn)程液位繼電自整定PID控制效果圖

            本文設(shè)計解決了在嵌入式系統(tǒng)中實現(xiàn)網(wǎng)絡(luò)功能的問題,引入并實現(xiàn)了一種新的設(shè)計方案,即采用三星ARM7處理器S3C44B0X+Realtek的10M網(wǎng)卡RTL8019AS硬件組合,通過在μC/OS-Ⅱ操作系統(tǒng)內(nèi)核的支持下,添加嵌入式TCP/IP協(xié)議棧LwIP,來實現(xiàn)網(wǎng)絡(luò)通信的功能,與PC機客戶端的Socket通信,在此基礎(chǔ)上開發(fā)了基于的遠(yuǎn)程液位,達(dá)到了良好的控制效果??梢钥闯?,這類系統(tǒng)在遠(yuǎn)程監(jiān)控中的具有良好的應(yīng)用前景。

            本文作者創(chuàng)新點:本文將嵌入式網(wǎng)絡(luò)引入到工業(yè)過程遠(yuǎn)程監(jiān)控領(lǐng)域,提出了自己的設(shè)計方案,并成功開發(fā)了一個遠(yuǎn)程液位。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();