機器人遙操作網(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é)議的網(wǎng)絡(luò )通信平臺,通過(guò)該平臺可以實(shí)現遠程客戶(hù)機與本地服務(wù)器之間的信息通信,而且保證了數據傳輸的可靠性和次序性,對機器人的遙操作提供了可靠的網(wǎng)絡(luò )通信條件。
網(wǎng)絡(luò )通信平臺的建立,擴大了對機器人操作的遠程化距離,而且該平臺具有架構容易,低成本,維護便利等優(yōu)點(diǎn),對機器人遙操作領(lǐng)域的技術(shù)進(jìn)步將會(huì )起到幫助作用。
tcp/ip相關(guān)文章:tcp/ip是什么
評論