川崎机器人总线通信_川崎机器人TCP/IP通信方法及编程过程介绍
川崎机器人的TCP/IP通信除了直接与川崎机器人通信外,有一种方式是通过PLC间接通信,附上我的另一篇文章,讲c#与三菱PLC通信的:
首先假设一个简单的应用情况,有一台带相机的川崎机器人,需要在机器人移动到某位置时,发出信号,然后视觉系统拍照并处理,*后将返回信号发送回机器人。这个程序就是以这个应用为基础写的。下图是机器人示教器上的程序:移动到P1点后,给计算机发送拍照信号photo=1,然后计算机处理后返回over=1,机器人收到后移动到P2点。
机器人示教器上面的程序十分简单,然后说明计算机上的程序。
首先是建立计算机与机器人的TCP链接,这里以计算机为客户端,机器人为服务端。
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;
}
//用于监听机器人是否发送数据
ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);
myThread_client = new Thread(myThreaddelegate);
myThread_client.Start();
}
TCP通信的基本知识不在这里讲,这里要说明的是connect后为什么有一句向机器人发送“as”。在川崎机器人E系列TCP/IP通信手册中,有如下内容:
即,在connect后首先向机器人发送"as"后,可以直接从计算机发送机器人的AS语言指令。这样,就可以实现从计算机上对机器人程序进行控制。
建立连接后,要做的就是收发信息了。计算机向机器人发信息很简单,因为计算机可以向机器人发送as语言指令,所以就是简单的TCP发送消息就可以了,如直接发送“over=1”,机器人就可以获取得到了。需要说的是机器人向计算机发送消息,在本程序中没有采用在机器人中建立TCP服务器然后监听的方法,而是在计算机中实现该功能。本方法利用的是川崎机器人as语言中的list指令,list指令的功能是显示所有程序步骤和变量,而要查询变量photo的值,只需要向机器人发送“list/r photo”,这样就可以得到变量photo的值。这样就可以通过计算机端不断查询,达到了机器人发送数据的效果,从而简化了机器人程序,复杂性降低。以下是监听代码
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.substrin(strTemp.Length + iCount + 1, 2);//去掉多余字符以及photo
int kk = int.Parse(read);//得到变量photo的值
if (kk != 0)
{
if (thelastData != kk)//信号从0->1才认为收到信号
{
SetTishi("接收到机器人拍照信号...");
sendToRobot("over=1\r\n");//给机器人完成信号
SetTishi("接收到消息:" + stringdata);
}
}
thelastData = kk;
}
}
catch
{
}
sendToRobot("list/R photo\r\n");//向机器人发送as语言的指令,查询photo的值
Thread.Sleep(100);
}
}
通过不断向机器人获取变量photo的值,当检测到photo=1时,就可以向机器人发送完成信号over=1,然后机器人程序往下执行。
分享到:
川崎机器人总线通信_川崎机器人TCP/IP通信方法及编程过程介绍相关推荐
- EPSON TCP/IP 通信
EPSON SCARA机器人TCP/IP 通信时,涉及到的相关指令说明. 14.3 TCP/IP命令. OpenNet //打开TCP/IP端口. ChkNet //返回端口状态:等待读取的字节数或错 ...
- 《Linux高性能服务器编程》学习总结(四)——TCP/IP通信案例:访问Internet上的Web服务器...
第四章 TCP/IP通信案例:访问Internet上的Web服务器 HTTP协议是工作在应用层上的协议,其应用十分广泛,而在进行通信的过程中,经常使用HTTP代理服务器.HTTP代理服务器主 ...
- TCP/IP通信程序设计方式
刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为TCP/IP编程很简单.其实不然,TCP/IP编程具有较为丰富的内容.其编程的丰富性主要体现在通信方式和报文格式的多 ...
- TCP/IP 通信示例
TCP/IP 通信示例 Global String ReadData_P_All$, ReadData_P$(10), data$ ' Global Preserve Double x Global ...
- TCP/ip通信模式
TCP/IP 应用层与应用程序 *************************************************** 更多精彩,欢迎进入:http://shop115376623.t ...
- Linux内核协议栈分析之——tcp/ip通信并不神秘
Jack:计算机如何进行通信? 我:我可以告诉你带Linux操作系统的计算机如何进行通信. Jack:带Linux操作系统的计算机?这和不带操作系统的计算机有区别吗? 我:有的. Jack:哦.那你说 ...
- MATLAB与DSP(C6657)的TCP/IP通信实现
最近尝试使用从MATLAB端键入输入,将输入值传给DSP,DSP运算之后将结果传回MATLAB并显示.我所设置的PC的IP地址是192.168.2.101,DSP的IP地址是192.168.2.100 ...
- 51单片机 ENC28J60 TCP/IP通信
51单片机 ENC28J60 TCP/IP通信 单片机:STC90C516RD+ ENC28J60模块:mini(3.3V供电) 设备:PC.开发板.两个网线.路由器 首先先介绍一下本文的移植针对于单 ...
- qt之TCP/IP通信客户端与服务器自动连接互相传输数据
一.前言 在开发上位机软件,用的最多的通信就是网络通信,串口通信和USB通信,串口通信相对是最容易的,USB通信在前面的文章中也专门写了一个博客介绍USB HID通信方式,见链接:https://bl ...
最新文章
- [导入]C#中实现Socket端口复用
- 微信小程序记账应用实例课程(完结)——对接服务端账目CRUD
- DB2 日期时间函数
- 查看服务器Smart Array卡
- 一个只有十行的精简MVVM框架(下篇)
- Web缓存的作用与类型
- 为什么shell脚本第一行要#!/bin/sh
- 项目总结(采用领域驱动开发方式)
- 前妻捐赠一半财产做慈善 世界首富贝佐斯发推文称赞
- Linux内存管理 brk(),mmap()系统调用源码分析1:基础部分
- 小技巧 ----- 枚举整数的每一位数字
- http 和 https 区别?
- wangeditor react中使用
- 使用C#存储数据时excel有Microsoft切换到了wps时的引用
- BLDC无刷直流电机驱动电路-硬石电子
- z2屏幕坏如何从计算机导出数据,闪回收-手机屏幕坏了如何导出数据?手机屏幕坏了怎么用电脑控制?...
- 数字贸易标准体系框架
- [Bada开发]基于bada1.0的5种控件介绍[待续]
- java 根据手机号获取归属地
- Java众神之路(2)-标志符