999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Socket通信的AGV上位機控制系統

2021-11-07 09:49:12張功學徐耀輝
現代機械 2021年5期

薛 哲,張功學,何 凱,徐耀輝,崔 聰

(1.陜西科技大學機電工程學院,陜西 西安 710021;2.中國科學院深圳先進技術研究院,廣東 深圳 518055)

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

AGV通訊系統用于實現AGV與地面控制站及地面監控設備之間的信息交換[2]。在本文中AGV的通訊系統采用一問一答式,上位機發送詢問數據,AGV控制板在接收到數據之后,根據接收到的數據進行回應或者不回應,通過詢問數據對AGV小車進行控制。

1 Socket通信原理

Socket作為進程通信機制,是2個程序之間進行雙向數據傳輸的網絡通訊端點,用一個地址和一個端口號標識[3]。Socket通常也稱作“套接字”,用于描述IP地址和端口。

1.1 服務器端和客戶端

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

服務器端的Socket至少需要兩個,一個負責接收客戶端的連接請求,但是不負責與客戶端的通信;當服務端接收到客戶端的連接后便會在服務端產生一個負責通信的Socket,這個Socket是在收到客戶端的連接時創建。

客戶端的Socket必須指定要連接的服務端的IP地址和端口;通過創建一個Socket對象來初始化一個到服務端的TCP連接。

1.2 Socket通信基本流程

服務端先初始化Socket,通過bind函數與端口綁定,調用listen函數對端口進行監聽,再調用accept函數等待客戶端的連接。當有客戶端初始化一個Socket后,調用connect函數與服務端進行連接,服務端接收到客戶端的連接請求并連接成功后,這時客戶端就可以發送數據請求,服務端接收并處理請求,然后把回應數據發送給客戶端,客戶端讀取數據,一次服務端與客戶端的交互結束。

圖1 AGV小車控制系統通信流程圖

2 系統設計

2.1 服務端設計

當打開服務端軟件后,先是服務端開始監聽并且接受AGV小車發來的連接請求,連接成功后便可以向AGV小車核心板發送數據,如果AGV小車成功接收到數據并作出相應指令,會向服務端回應信息,顯示在相應區域,回應信息分為AGV當前實時狀態和每條詢問指令成功接收的應答信息。

2.2 服務端功能實現

2.2.1 創建一個負責監聽的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("監聽成功/r/n");

SocketWatch.Listen(10);

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

接下來提供Internet協議(IP)地址,并偵聽所有網絡接口上的客戶端活動的IP地址;

然后新實例初始化IPEndPoint類具有指定的地址和端口號;

使用Bind()函數將IP地址、端口號與負責監聽的Socket相關聯;

使用SocketWatch對象的Listen()函數使監聽的Socket處于偵聽狀態;

最后當打開服務端軟件時在ShowMsg對話框顯示監聽成功。

2.2.2 創建一個負責通信的Socket

部分代碼如下:

Socket socketsend = SocketWatch.Accept();

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

為了接收來自客戶端的連接請求,使用Socket類中的Accept()函數創建一個新的Socket用于與客戶端進行通信;當連接成功后則會在ShowMsg對話框顯示連接成功。

2.2.3 接收和發送消息

int r=socketsend.Receive(buffer);

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

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

socketsend.Send(buffer);

使用Socketsend對象中的Send()函數向客戶端發送消息。

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

因為要計算校驗碼,所以需要將前邊所有編碼提取出來轉化為int類型相加除以256求余,求出來的余數為校驗碼,再將所有的編碼轉換成string類型進行相加;由于只能發送Byte類型的數據,最后將相加的string類型編碼轉換成Byte類型則為最終要發送的編碼。

部分代碼如下:

int[] suma = new int[8];

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

將所有編碼轉化成int類型。

int sum=new int();

for (int i=0;i

{

sum+=suma[i];

}

int check=sum%256;

使用for循環將所有轉化成int類型的編碼相加,最后再求余得出校驗碼。

2.3 服務端界面設計

圖2 界面設計

如圖2所示,TextBox1為服務端IP地址,TextBox2為端口號,TextBox3顯示AGV小車的返回信息,TextBox4和5可以調節AGV小車左右電機的轉速,TextBox 6和7可以控制AGV小車升降平臺的升降高度和速度。當AGV小車啟動后,PC端連接WIFI,輸入IP地址和端口號再點擊連接按鈕,就會收到AGV小車的連接請求,連接成功后會在TextBox 3顯示連接成功,如果AGV小車行進或升降過程中出現異常情況,可以立即點擊停止按鈕就會停止設備,界面中其他按鈕則實現其相對應的功能。

2.4 客戶端模塊

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

AGV 與上位機采用一問一答式通信,每當上位機發送的指令被AGV成功接收到后會進行回應;每條詢問指令成功接收的應答信息共14個字節。其中起始碼、功能碼、結束碼和校驗碼各占1個字節;數據碼占2個字節,01代表設置成功,00代表設置失?。活A留8個字節。

3 實際測試

完成所有設計后,開始進行實際實驗。為AGV小車設計L型路徑,分別進行前進、后退、左轉、右轉和上升、下降操作,再進行停止升降和停止移動操作,最后點擊查詢狀態按鈕查詢AGV當前狀態。進行操作時AGV的應答信息如表1所示。

表1 操作時AGV應答信息

由應答信息可知,所有操作的數據碼為01,即證明設置成功;由查詢狀態按鈕返回的信息可知當前升降板處在720 mm的高度。

從實驗結果看,上位機控制系統操作AGV小車更加方便,保證了小車行駛過程中人員的安全。在實驗過程中,上位機與AGV小車通信良好,AGV小車能夠對上位機所發出的指令迅速做出反應,Socket服務端界面中的所有功能均運行正常。AGV小車如圖3所示。

圖3 AGV小車實際圖

4 結束語

基于Socket通信的AGV小車上位機控制系統,其主要優點有:在復雜實驗環境下,使用Socket無線控制AGV小車,便于操作人員在遠距離條件下對AGV小車的控制,提高了實驗效率,保證了在實驗環境下操作人員的安全。

主站蜘蛛池模板: 日本高清视频在线www色| 欧美中文字幕一区二区三区| 成人福利在线视频| 精品一区二区久久久久网站| 精品无码一区二区三区在线视频| 人妻一区二区三区无码精品一区| 亚洲精品视频免费| 国产成人亚洲无吗淙合青草| AV天堂资源福利在线观看| av大片在线无码免费| 色天堂无毒不卡| 久久人妻xunleige无码| 激情综合婷婷丁香五月尤物| 精品剧情v国产在线观看| 免费无码又爽又刺激高| 18禁影院亚洲专区| 国产精品jizz在线观看软件| 日韩精品一区二区三区swag| 欧美劲爆第一页| 67194亚洲无码| 国产精品网拍在线| 免费va国产在线观看| 在线观看亚洲人成网站| 性激烈欧美三级在线播放| 日韩高清中文字幕| 亚洲欧美另类视频| 欧美日韩精品综合在线一区| 精品国产美女福到在线不卡f| 99在线观看国产| 久久这里只有精品8| 99久久成人国产精品免费| 99久久亚洲综合精品TS| 国产欧美视频综合二区 | 欧美日韩亚洲综合在线观看 | 免费毛片全部不收费的| 国产流白浆视频| 欧美日韩午夜视频在线观看| 欧洲亚洲欧美国产日本高清| 日韩a级毛片| 手机在线免费不卡一区二| 女人一级毛片| 国产97视频在线| 国产乱肥老妇精品视频| 一本大道香蕉中文日本不卡高清二区| 欧美另类一区| 久热这里只有精品6| 久久久波多野结衣av一区二区| 婷婷午夜天| 亚洲综合激情另类专区| 亚洲第一色网站| 五月天丁香婷婷综合久久| 欧美另类图片视频无弹跳第一页| 亚洲区一区| 91热爆在线| 日韩高清无码免费| 亚洲AV成人一区国产精品| 亚洲国产日韩欧美在线| 69视频国产| 欧美高清视频一区二区三区| 亚洲bt欧美bt精品| 婷婷综合在线观看丁香| 99视频在线观看免费| 熟妇无码人妻| 福利在线一区| 久久综合五月婷婷| 日韩精品免费一线在线观看| 亚洲欧美精品日韩欧美| 九九九久久国产精品| 日本一区高清| 最新国产麻豆aⅴ精品无| 精品国产91爱| 亚洲天堂自拍| 欧美日韩免费在线视频| 手机在线看片不卡中文字幕| 国产视频只有无码精品| 亚洲天堂伊人| 少妇被粗大的猛烈进出免费视频| 一级毛片免费的| 四虎成人精品| 亚洲开心婷婷中文字幕| 九九热视频精品在线| 四虎成人精品|