機(jī)器人遙操作網(wǎng)絡(luò)通信平臺(tái)的設(shè)計(jì)
圖4(a)顯示的是服務(wù)器端運(yùn)行之后的界面。服務(wù)器端是該程序的核心端,所有客戶端的數(shù)據(jù)都將傳輸?shù)椒?wù)器端,客戶端之間通信需要通過服務(wù)器端進(jìn)行中轉(zhuǎn)。而本文所設(shè)計(jì)的程序中的服務(wù)器端不僅可以實(shí)現(xiàn)以廣播的形式向所有連接到該服務(wù)器的客戶端發(fā)送信息,還可以以單對(duì)單通信的方式向單個(gè)的客戶端進(jìn)行通信。在圖 4(a)中就顯示了服務(wù)器端分別利用這兩種方式進(jìn)行了通信。點(diǎn)擊界面中的發(fā)送按鈕就采取廣播式發(fā)送信息,而點(diǎn)擊界面中的1和2兩個(gè)按鈕則是對(duì)特定客戶端發(fā)送數(shù)據(jù)。
本文設(shè)計(jì)的程序可以支持多個(gè)不同的
(a)
(b)
(c)
圖4 通信平臺(tái)運(yùn)行界面
客戶端和服務(wù)器進(jìn)行連接并通信。圖4(b)顯示的是IP為“192.168.0.106”的客戶端和服務(wù)器建立連接之后的通信,而圖4(c)則是IP為“192.168.0.110”的客戶端和服務(wù)器通信的界面。
3 實(shí)驗(yàn)性能分析
1.時(shí)延和數(shù)據(jù)的丟失問題
機(jī)器人遙操作要求數(shù)據(jù)傳輸要具備可靠性和次序性,TCP協(xié)議提供了可靠而有序的傳輸,基于這一特性,可以在傳輸過程中使用超時(shí)重傳、分段、重組等檢錯(cuò)糾錯(cuò)策略,通過這些檢錯(cuò)糾錯(cuò)策略可以保證在數(shù)據(jù)傳輸過程中的可靠性和有序性,可以有效的防止數(shù)據(jù)的丟失。
機(jī)器人遠(yuǎn)端遙操作控制的采用并不意味著實(shí)時(shí)控制作用被上移到網(wǎng)絡(luò),實(shí)時(shí)控制依然由現(xiàn)場(chǎng)的控制單元來完成,而網(wǎng)絡(luò)遙操作更關(guān)注的是對(duì)現(xiàn)場(chǎng)信息的監(jiān)視和管理以及對(duì)機(jī)器人的非實(shí)時(shí)控制,所以TCP通信在傳輸過程中存在的時(shí)延問題也就顯得影響不大。
2.數(shù)據(jù)共享問題及其解決方案
由于本文中程序是多任務(wù)多線程的,當(dāng)多個(gè)客戶端同時(shí)連接到服務(wù)器時(shí),多任務(wù)、多線程就極易造成數(shù)據(jù)共享問題。數(shù)據(jù)共享問題可以解釋如下:假定有多個(gè)函數(shù)(或者ISR、任務(wù))共享一個(gè)變量,如果在某一時(shí)刻存在對(duì)該變量的數(shù)值的操作,并且在對(duì)其施加操作的的過程中,僅有部分操作完成,還有一部分沒有完成,若在此時(shí)產(chǎn)生一個(gè)中斷,如果此時(shí)還有另一個(gè)函數(shù)也在共享該變量,且前面的操作已經(jīng)完成,該變量的數(shù)值可能與預(yù)期的不同。因此,當(dāng)一個(gè)函數(shù)與另一個(gè)函數(shù)共享某變量時(shí),所調(diào)用的ISR或者另一個(gè)函數(shù)都有可能改變此變量,是變量的數(shù)值發(fā)生變化,在返回時(shí)此變量的新數(shù)值將從堆棧轉(zhuǎn)載到四個(gè)寄存器中,未完成的操作將按照寄存器中的新數(shù)值執(zhí)行,程序就會(huì)發(fā)生錯(cuò)誤。
在本文中,利用了以下措施消除了程序中由共享數(shù)據(jù)問題所導(dǎo)致的錯(cuò)誤。
1) 對(duì)于從中斷返回的變量,在聲明中使用了volatile。此聲明可以警告編譯器,這些變量是可更改的。
2)在中斷之前將完全執(zhí)行的部分中對(duì)原子指令使用可再生函數(shù),此部分叫臨界段。
3) 將共享的變量放入循環(huán)隊(duì)列中。需要使用該變量數(shù)值的函數(shù)總是從隊(duì)列的前端將其刪除。而另一些寫入該變量的數(shù)值的函數(shù)總是從隊(duì)列的末端進(jìn)行操作。
4)在臨界段開始執(zhí)行之前通過使用信號(hào)量來關(guān)閉中斷,在其完成之時(shí)打開中斷。
4 結(jié)論
本文設(shè)計(jì)了一種基于TCP協(xié)議的網(wǎng)絡(luò)通信平臺(tái),通過該平臺(tái)可以實(shí)現(xiàn)遠(yuǎn)程客戶機(jī)與本地服務(wù)器之間的信息通信,而且保證了數(shù)據(jù)傳輸?shù)目煽啃院痛涡蛐?,?duì)機(jī)器人的遙操作提供了可靠的網(wǎng)絡(luò)通信條件。
網(wǎng)絡(luò)通信平臺(tái)的建立,擴(kuò)大了對(duì)機(jī)器人操作的遠(yuǎn)程化距離,而且該平臺(tái)具有架構(gòu)容易,低成本,維護(hù)便利等優(yōu)點(diǎn),對(duì)機(jī)器人遙操作領(lǐng)域的技術(shù)進(jìn)步將會(huì)起到幫助作用。
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論