亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Socket通信的AGV上位機(jī)控制系統(tǒng)

        2021-11-07 09:49:12張功學(xué)徐耀輝
        現(xiàn)代機(jī)械 2021年5期
        關(guān)鍵詞:端口號(hào)服務(wù)端監(jiān)聽

        薛 哲,張功學(xué),何 凱,徐耀輝,崔 聰

        (1.陜西科技大學(xué)機(jī)電工程學(xué)院,陜西 西安 710021;2.中國(guó)科學(xué)院深圳先進(jìn)技術(shù)研究院,廣東 深圳 518055)

        現(xiàn)在AGV導(dǎo)引技術(shù)正在迅速發(fā)展,很多行業(yè)已經(jīng)開始采用AGV導(dǎo)引技術(shù)[1]。但是部分AGV小車的控制方式為觸摸屏控制,需要人工近距離操作,步驟繁瑣。并且在復(fù)雜實(shí)驗(yàn)環(huán)境下或者AGV小車行駛過程中操作時(shí),存在一定的安全隱患。因此,為了提高AGV小車操控的安全性與方便性,本文使用C#編程語言,結(jié)合Socket通信與串口轉(zhuǎn)WIFI技術(shù),設(shè)計(jì)出一款適用于AGV小車的上位機(jī)控制系統(tǒng),此系統(tǒng)可使人在較遠(yuǎn)距離使用電腦控制AGV小車,即使在復(fù)雜實(shí)驗(yàn)環(huán)境下也可以很方便的操控AGV小車并且保證了人員的安全。

        AGV通訊系統(tǒng)用于實(shí)現(xiàn)AGV與地面控制站及地面監(jiān)控設(shè)備之間的信息交換[2]。在本文中AGV的通訊系統(tǒng)采用一問一答式,上位機(jī)發(fā)送詢問數(shù)據(jù),AGV控制板在接收到數(shù)據(jù)之后,根據(jù)接收到的數(shù)據(jù)進(jìn)行回應(yīng)或者不回應(yīng),通過詢問數(shù)據(jù)對(duì)AGV小車進(jìn)行控制。

        1 Socket通信原理

        Socket作為進(jìn)程通信機(jī)制,是2個(gè)程序之間進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通訊端點(diǎn),用一個(gè)地址和一個(gè)端口號(hào)標(biāo)識(shí)[3]。Socket通常也稱作“套接字”,用于描述IP地址和端口。

        1.1 服務(wù)器端和客戶端

        在通信過程中,客戶端主動(dòng)打開連接,服務(wù)器端是被動(dòng)的[4]。當(dāng)客戶端和服務(wù)端彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個(gè)TCP連接之后才能傳輸數(shù)據(jù)[5]。

        服務(wù)器端的Socket至少需要兩個(gè),一個(gè)負(fù)責(zé)接收客戶端的連接請(qǐng)求,但是不負(fù)責(zé)與客戶端的通信;當(dāng)服務(wù)端接收到客戶端的連接后便會(huì)在服務(wù)端產(chǎn)生一個(gè)負(fù)責(zé)通信的Socket,這個(gè)Socket是在收到客戶端的連接時(shí)創(chuàng)建。

        客戶端的Socket必須指定要連接的服務(wù)端的IP地址和端口;通過創(chuàng)建一個(gè)Socket對(duì)象來初始化一個(gè)到服務(wù)端的TCP連接。

        1.2 Socket通信基本流程

        服務(wù)端先初始化Socket,通過bind函數(shù)與端口綁定,調(diào)用listen函數(shù)對(duì)端口進(jìn)行監(jiān)聽,再調(diào)用accept函數(shù)等待客戶端的連接。當(dāng)有客戶端初始化一個(gè)Socket后,調(diào)用connect函數(shù)與服務(wù)端進(jìn)行連接,服務(wù)端接收到客戶端的連接請(qǐng)求并連接成功后,這時(shí)客戶端就可以發(fā)送數(shù)據(jù)請(qǐng)求,服務(wù)端接收并處理請(qǐng)求,然后把回應(yīng)數(shù)據(jù)發(fā)送給客戶端,客戶端讀取數(shù)據(jù),一次服務(wù)端與客戶端的交互結(jié)束。

        圖1 AGV小車控制系統(tǒng)通信流程圖

        2 系統(tǒng)設(shè)計(jì)

        2.1 服務(wù)端設(shè)計(jì)

        當(dāng)打開服務(wù)端軟件后,先是服務(wù)端開始監(jiān)聽并且接受AGV小車發(fā)來的連接請(qǐng)求,連接成功后便可以向AGV小車核心板發(fā)送數(shù)據(jù),如果AGV小車成功接收到數(shù)據(jù)并作出相應(yīng)指令,會(huì)向服務(wù)端回應(yīng)信息,顯示在相應(yīng)區(qū)域,回應(yīng)信息分為AGV當(dāng)前實(shí)時(shí)狀態(tài)和每條詢問指令成功接收的應(yīng)答信息。

        2.2 服務(wù)端功能實(shí)現(xiàn)

        2.2.1 創(chuàng)建一個(gè)負(fù)責(zé)監(jiān)聽的Socket

        部分代碼如下:

        Socket SocketWatch = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

        IPAddress ip = IPAddress.Any;

        IPEndPoint point = new IPEndPoint(ip,Convert.ToInt32(txtPort.Text));

        SocketWatch.Bind(point);

        ShowMsg("監(jiān)聽成功/r/n");

        SocketWatch.Listen(10);

        首先新實(shí)例初始化Socket類使用指定的地址族、流式套接字和TCP協(xié)議;

        接下來提供Internet協(xié)議(IP)地址,并偵聽所有網(wǎng)絡(luò)接口上的客戶端活動(dòng)的IP地址;

        然后新實(shí)例初始化IPEndPoint類具有指定的地址和端口號(hào);

        使用Bind()函數(shù)將IP地址、端口號(hào)與負(fù)責(zé)監(jiān)聽的Socket相關(guān)聯(lián);

        使用SocketWatch對(duì)象的Listen()函數(shù)使監(jiān)聽的Socket處于偵聽狀態(tài);

        最后當(dāng)打開服務(wù)端軟件時(shí)在ShowMsg對(duì)話框顯示監(jiān)聽成功。

        2.2.2 創(chuàng)建一個(gè)負(fù)責(zé)通信的Socket

        部分代碼如下:

        Socket socketsend = SocketWatch.Accept();

        ShowMsg(socketsend.RemoteEndPoint.ToString() + ":" + "連接成功" + "/r/n");

        為了接收來自客戶端的連接請(qǐng)求,使用Socket類中的Accept()函數(shù)創(chuàng)建一個(gè)新的Socket用于與客戶端進(jìn)行通信;當(dāng)連接成功后則會(huì)在ShowMsg對(duì)話框顯示連接成功。

        2.2.3 接收和發(fā)送消息

        int r=socketsend.Receive(buffer);

        ShowMsg(socketsend.RemoteEndPoint.ToString() + ":" + str + "/r/n");

        使用Socketsend對(duì)象中的Receive()函數(shù)接收客戶端發(fā)來的消息并存儲(chǔ)到接收緩沖區(qū)中,最后將其顯示在ShowMsg對(duì)話框中。

        socketsend.Send(buffer);

        使用Socketsend對(duì)象中的Send()函數(shù)向客戶端發(fā)送消息。

        在本控制系統(tǒng)中,上位機(jī)向AGV核心板發(fā)送的為十六進(jìn)制數(shù)據(jù),共14個(gè)字節(jié)。其中起始碼占1個(gè)字節(jié),為通信開始標(biāo)志位;功能碼占1個(gè)字節(jié),代表詢問指令功能;數(shù)據(jù)碼占5個(gè)字節(jié),代表對(duì)應(yīng)的數(shù)據(jù)碼含義;預(yù)留5個(gè)字節(jié),為無效數(shù)據(jù)位;結(jié)束碼占1個(gè)字節(jié),為通信結(jié)束標(biāo)志位;校驗(yàn)碼占1個(gè)字節(jié),為前邊所有碼相加除以256的余數(shù)。例如AA C1 00 03 E8 03 E8 00 00 00 00 00 BB 11為14個(gè)字節(jié),其所代表的含義為AGV小車向前運(yùn)行,左右電機(jī)轉(zhuǎn)速為1000 rpm/min。

        因?yàn)橐?jì)算校驗(yàn)碼,所以需要將前邊所有編碼提取出來轉(zhuǎn)化為int類型相加除以256求余,求出來的余數(shù)為校驗(yàn)碼,再將所有的編碼轉(zhuǎn)換成string類型進(jìn)行相加;由于只能發(fā)送Byte類型的數(shù)據(jù),最后將相加的string類型編碼轉(zhuǎn)換成Byte類型則為最終要發(fā)送的編碼。

        部分代碼如下:

        int[] suma = new int[8];

        suma[0] = Convert.ToInt32(str[0],16);

        將所有編碼轉(zhuǎn)化成int類型。

        int sum=new int();

        for (int i=0;i

        {

        sum+=suma[i];

        }

        int check=sum%256;

        使用for循環(huán)將所有轉(zhuǎn)化成int類型的編碼相加,最后再求余得出校驗(yàn)碼。

        2.3 服務(wù)端界面設(shè)計(jì)

        圖2 界面設(shè)計(jì)

        如圖2所示,TextBox1為服務(wù)端IP地址,TextBox2為端口號(hào),TextBox3顯示AGV小車的返回信息,TextBox4和5可以調(diào)節(jié)AGV小車左右電機(jī)的轉(zhuǎn)速,TextBox 6和7可以控制AGV小車升降平臺(tái)的升降高度和速度。當(dāng)AGV小車啟動(dòng)后,PC端連接WIFI,輸入IP地址和端口號(hào)再點(diǎn)擊連接按鈕,就會(huì)收到AGV小車的連接請(qǐng)求,連接成功后會(huì)在TextBox 3顯示連接成功,如果AGV小車行進(jìn)或升降過程中出現(xiàn)異常情況,可以立即點(diǎn)擊停止按鈕就會(huì)停止設(shè)備,界面中其他按鈕則實(shí)現(xiàn)其相對(duì)應(yīng)的功能。

        2.4 客戶端模塊

        由于AGV核心控制板只預(yù)留了RS232接口,RS232接口支持全雙工、不間斷通信;再使用WIFI串口服務(wù)器將RS232接口轉(zhuǎn)換成WIFI,然后安裝好WIFI天線,就能夠使用筆記本電腦等設(shè)備進(jìn)行連接。

        AGV 與上位機(jī)采用一問一答式通信,每當(dāng)上位機(jī)發(fā)送的指令被AGV成功接收到后會(huì)進(jìn)行回應(yīng);每條詢問指令成功接收的應(yīng)答信息共14個(gè)字節(jié)。其中起始碼、功能碼、結(jié)束碼和校驗(yàn)碼各占1個(gè)字節(jié);數(shù)據(jù)碼占2個(gè)字節(jié),01代表設(shè)置成功,00代表設(shè)置失敗;預(yù)留8個(gè)字節(jié)。

        3 實(shí)際測(cè)試

        完成所有設(shè)計(jì)后,開始進(jìn)行實(shí)際實(shí)驗(yàn)。為AGV小車設(shè)計(jì)L型路徑,分別進(jìn)行前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和上升、下降操作,再進(jìn)行停止升降和停止移動(dòng)操作,最后點(diǎn)擊查詢狀態(tài)按鈕查詢AGV當(dāng)前狀態(tài)。進(jìn)行操作時(shí)AGV的應(yīng)答信息如表1所示。

        表1 操作時(shí)AGV應(yīng)答信息

        由應(yīng)答信息可知,所有操作的數(shù)據(jù)碼為01,即證明設(shè)置成功;由查詢狀態(tài)按鈕返回的信息可知當(dāng)前升降板處在720 mm的高度。

        從實(shí)驗(yàn)結(jié)果看,上位機(jī)控制系統(tǒng)操作AGV小車更加方便,保證了小車行駛過程中人員的安全。在實(shí)驗(yàn)過程中,上位機(jī)與AGV小車通信良好,AGV小車能夠?qū)ι衔粰C(jī)所發(fā)出的指令迅速做出反應(yīng),Socket服務(wù)端界面中的所有功能均運(yùn)行正常。AGV小車如圖3所示。

        圖3 AGV小車實(shí)際圖

        4 結(jié)束語

        基于Socket通信的AGV小車上位機(jī)控制系統(tǒng),其主要優(yōu)點(diǎn)有:在復(fù)雜實(shí)驗(yàn)環(huán)境下,使用Socket無線控制AGV小車,便于操作人員在遠(yuǎn)距離條件下對(duì)AGV小車的控制,提高了實(shí)驗(yàn)效率,保證了在實(shí)驗(yàn)環(huán)境下操作人員的安全。

        猜你喜歡
        端口號(hào)服務(wù)端監(jiān)聽
        千元監(jiān)聽風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
        在Docker容器中安裝應(yīng)用程序
        云存儲(chǔ)中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
        新時(shí)期《移動(dòng)Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
        在Windows Server 2008上創(chuàng)建應(yīng)用
        網(wǎng)絡(luò)監(jiān)聽的防范措施
        電子制作(2017年20期)2017-04-26 06:58:02
        淺談以java為基礎(chǔ)的Socket通信簡(jiǎn)介及實(shí)現(xiàn)
        青春歲月(2017年5期)2017-04-20 18:34:23
        應(yīng)召反潛時(shí)無人機(jī)監(jiān)聽航路的規(guī)劃
        Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
        基于Android系統(tǒng)的互動(dòng)展示APP的研究與設(shè)計(jì)
        91极品尤物国产在线播放| 边喂奶边中出的人妻| а√天堂资源8在线官网在线| 一区二区三区乱码在线 | 欧洲| 免费人成年小说在线观看| 美女裸体无遮挡免费视频国产| 国产特黄1区2区3区4区| 亚洲一区二区三区偷拍厕所| 国产欧美一区二区三区在线看| 久久婷婷国产剧情内射白浆| 亚洲AV无码精品呻吟| 亚洲高清国产品国语在线观看 | 国产成人v爽在线免播放观看| 日韩精品成人无码AV片| 亚洲无人区一码二码国产内射 | 亚洲国产日韩a在线乱码| 天堂8中文在线最新版在线| 成人无码视频在线观看网站| 久久亚洲宅男天堂网址| 天天综合网网欲色| 国产白袜脚足j棉袜在线观看| 无码人妻一区二区三区在线视频 | 国产三级视频在线观看国产 | 91亚洲最新国语中文字幕| 精品粉嫩av一区二区三区| 午夜视频在线在免费| 久久国产精品二国产精品| 亚洲AV无码日韩综合欧亚| 久久精品国产亚洲av麻豆床戏 | 少妇高潮呻吟求饶视频网站| 亚洲狠狠婷婷综合久久久久| 亚洲国产精品嫩草影院久久| 尤物AV无码色AV无码麻豆| 亚洲中文字幕高清av| 无码人妻精品一区二区蜜桃网站 | 日韩精品国产自在久久现线拍| 一区二区三区在线观看视频免费| 精彩亚洲一区二区三区| 无码精品人妻一区二区三区av| 日本午夜福利| 日本超骚少妇熟妇视频|