u盘做网站,网站建设公司公司介绍,郑州it培训机构有哪些,wordpress手机站和pc如何切换的由于本人在工业自动化行业做机器视觉的工作#xff0c;所以除了图像处理方面要掌握外#xff0c;还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信#xff0c;于是在这里记录一下。 除了直接与机器人通信外#xff0c;有一种方式是通过PLC间接通信所以除了图像处理方面要掌握外还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信于是在这里记录一下。 除了直接与机器人通信外有一种方式是通过PLC间接通信附上我的另一篇文章讲c#与三菱PLC通信的C#与三菱PLC通信 首先假设一个简单的应用情况有一台带相机的工业机器人需要在机器人移动到某位置时发出信号然后视觉系统拍照并处理最后将返回信号发送回机器人。这个程序就是以这个应用为基础写的。下图是机器人示教器上的程序移动到P1点后给计算机发送拍照信号photo1然后计算机处理后返回over1机器人收到后移动到P2点。 图片2 机器人示教器上面的程序十分简单然后说明计算机上的程序。 首先是建立计算机与机器人的TCP链接这里以计算机为客户端机器人为服务端。 [csharp] view plain copy public void ConnectRobot()//链接tcp { byte[] data new byte[1024]; newclient_Client new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); string ipadd 192.168.30.238;//机器人IP地址 int port Convert.ToInt32(23);//端口号 IPEndPoint ie new IPEndPoint(IPAddress.Parse(ipadd), port); try { newclient_Client.Connect(ie);//建立连接 Connected_Client true;//连接标志位 btnConn.Enabled false; sendToRobot(as\r\n);//建立连接后首先发送as则可以通过计算机发送as语言指令 SetTishi(机器人链接成功...);//显示 } catch (SocketException e) { SetTishi(连接机器人失败 e.Message); return; } span stylewhite-space:pre; /span//用于监听机器人是否发送数据 ThreadStart myThreaddelegate new ThreadStart(ReceiveMsg); myThread_client new Thread(myThreaddelegate); myThread_client.Start(); } TCP通信的基本知识不在这里讲这里要说明的是connect后为什么有一句向机器人发送“as”。在川崎机器人E系列TCP/IP通信手册中有如下内容 即在connect后首先向机器人发送as后可以直接从计算机发送机器人的AS语言指令。这样就可以实现从计算机上对机器人程序进行控制。 建立连接后要做的就是收发信息了。计算机向机器人发信息很简单因为计算机可以向机器人发送as语言指令所以就是简单的TCP发送消息就可以了如直接发送“over1”机器人就可以获取得到了。需要说的是机器人向计算机发送消息在本程序中没有采用在机器人中建立TCP服务器然后监听的方法而是在计算机中实现该功能。本方法利用的是川崎机器人as语言中的list指令list指令的功能是显示所有程序步骤和变量而要查询变量photo的值只需要向机器人发送“list/r photo”这样就可以得到变量photo的值。这样就可以通过计算机端不断查询达到了机器人发送数据的效果从而简化了机器人程序复杂性降低。以下是监听代码 [csharp] view plain copy public void ReceiveMsg()//监听tcp { int thelastData 999; while (true) { try { byte[] data new byte[1024]; int recv newclient_Client.Receive(data);//接收消息 string stringdata Encoding.UTF8.GetString(data, 0, recv);//将bytes转换为字符 //string stringdata Encoding.Unicode.GetString(data, 0, recv); if (stringdata )//判断是否断开连接 { SetTishi(服务器已退出); newclient_Client.Close(); Connected_Client false; break; } //利用AS语言的检测变量的指令list实现监听功能 //因为发送‘list/r photo’监测变量photo的值返回的还有其它字符所以要去掉这些字符 stringdata stringdata.Trim(); string strTemp photo ; int iCount stringdata.IndexOf(strTemp);//得到多余字符的长度 if (iCount 0) { string read stringdata.Substring(strTemp.Length iCount 1, 2);//去掉多余字符以及photo int kk int.Parse(read);//得到变量photo的值 if (kk ! 0) { if (thelastData ! kk)//信号从0-1才认为收到信号 { SetTishi(接收到机器人拍照信号...); sendToRobot(over1\r\n);//给机器人完成信号 SetTishi(接收到消息 stringdata); } } thelastData kk; } } catch { } sendToRobot(list/R photo\r\n);//向机器人发送as语言的指令查询photo的值 Thread.Sleep(100); } } 通过不断向机器人获取变量photo的值当检测到photo1时就可以向机器人发送完成信号over1然后机器人程序往下执行。转载于:https://www.cnblogs.com/bile/p/8939996.html