<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 機器人遙操作網(wǎng)絡(luò )通信平臺的設計

機器人遙操作網(wǎng)絡(luò )通信平臺的設計

作者: 時(shí)間:2009-04-07 來(lái)源:網(wǎng)絡(luò ) 收藏

  圖4(a)顯示的是服務(wù)器端運行之后的界面。服務(wù)器端是該程序的核心端,所有客戶(hù)端的數據都將傳輸到服務(wù)器端,客戶(hù)端之間通信需要通過(guò)服務(wù)器端進(jìn)行中轉。而本文所的程序中的服務(wù)器端不僅可以實(shí)現以廣播的形式向所有連接到該服務(wù)器的客戶(hù)端發(fā)送信息,還可以以單對單通信的方式向單個(gè)的客戶(hù)端進(jìn)行通信。在圖 4(a)中就顯示了服務(wù)器端分別利用這兩種方式進(jìn)行了通信。點(diǎn)擊界面中的發(fā)送按鈕就采取廣播式發(fā)送信息,而點(diǎn)擊界面中的1和2兩個(gè)按鈕則是對特定客戶(hù)端發(fā)送數據。

  本文的程序可以支持多個(gè)不同的

通信平臺運行界面

(a)

通信平臺運行界面

(b)

通信平臺運行界面

(c)

圖4 通信運行界面

  客戶(hù)端和服務(wù)器進(jìn)行連接并通信。圖4(b)顯示的是IP為“192.168.0.106”的客戶(hù)端和服務(wù)器建立連接之后的通信,而圖4(c)則是IP為“192.168.0.110”的客戶(hù)端和服務(wù)器通信的界面。

  3 實(shí)驗性能分析

  1.時(shí)延和數據的丟失問(wèn)題

  要求數據傳輸要具備可靠性和次序性,TCP協(xié)議提供了可靠而有序的傳輸,基于這一特性,可以在傳輸過(guò)程中使用超時(shí)重傳、分段、重組等檢錯糾錯策略,通過(guò)這些檢錯糾錯策略可以保證在數據傳輸過(guò)程中的可靠性和有序性,可以有效的防止數據的丟失。

  遠端遙控制的采用并不意味著(zhù)實(shí)時(shí)控制作用被上移到網(wǎng)絡(luò ),實(shí)時(shí)控制依然由現場(chǎng)的控制單元來(lái)完成,而網(wǎng)絡(luò )遙更關(guān)注的是對現場(chǎng)信息的監視和管理以及對的非實(shí)時(shí)控制,所以TCP通信在傳輸過(guò)程中存在的時(shí)延問(wèn)題也就顯得影響不大。
 2.數據共享問(wèn)題及其解決方案

  由于本文中程序是多任務(wù)多線(xiàn)程的,當多個(gè)客戶(hù)端同時(shí)連接到服務(wù)器時(shí),多任務(wù)、多線(xiàn)程就極易造成數據共享問(wèn)題。數據共享問(wèn)題可以解釋如下:假定有多個(gè)函數(或者ISR、任務(wù))共享一個(gè)變量,如果在某一時(shí)刻存在對該變量的數值的操作,并且在對其施加操作的的過(guò)程中,僅有部分操作完成,還有一部分沒(méi)有完成,若在此時(shí)產(chǎn)生一個(gè)中斷,如果此時(shí)還有另一個(gè)函數也在共享該變量,且前面的操作已經(jīng)完成,該變量的數值可能與預期的不同。因此,當一個(gè)函數與另一個(gè)函數共享某變量時(shí),所調用的ISR或者另一個(gè)函數都有可能改變此變量,是變量的數值發(fā)生變化,在返回時(shí)此變量的新數值將從堆棧轉載到四個(gè)寄存器中,未完成的操作將按照寄存器中的新數值執行,程序就會(huì )發(fā)生錯誤。

  在本文中,利用了以下措施消除了程序中由共享數據問(wèn)題所導致的錯誤。

1) 對于從中斷返回的變量,在聲明中使用了volatile。此聲明可以警告編譯器,這些變量是可更改的。
2)在中斷之前將完全執行的部分中對原子指令使用可再生函數,此部分叫臨界段。
3) 將共享的變量放入循環(huán)隊列中。需要使用該變量數值的函數總是從隊列的前端將其刪除。而另一些寫(xiě)入該變量的數值的函數總是從隊列的末端進(jìn)行操作。
4)在臨界段開(kāi)始執行之前通過(guò)使用信號量來(lái)關(guān)閉中斷,在其完成之時(shí)打開(kāi)中斷。


  4 結論

  本文了一種基于TCP協(xié)議的,通過(guò)該可以實(shí)現遠程客戶(hù)機與本地服務(wù)器之間的信息通信,而且保證了數據傳輸的可靠性和次序性,對機器人的遙操作提供了可靠的條件。

  平臺的建立,擴大了對機器人操作的遠程化距離,而且該平臺具有架構容易,低成本,維護便利等優(yōu)點(diǎn),對機器人遙操作領(lǐng)域的技術(shù)進(jìn)步將會(huì )起到幫助作用。

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>