前记:

听一首《不想病》,歌词唱开头:做什么都不对,说什么都浪费,想什么我都可悲....;感觉就是不一样,好歌!哎,,,回到正题。好多事要去做,还得挤时间去玩,,,可悲啊 :D 。这里记录一下MATLAB与Robotstudio建立简单socket的例子。至于建立通讯的意义何在,暂时不能深入探究(我想最重要的联合仿真时的数据传递,MATLAB对数据进行分析类似的吧)。

附:在建立通信之前,MATLAB必须保证安装有能进行TIP/IP通信的Instrument Control Toolbox,然后就是Robotstudio创建了系统和对应通讯的Rapid程序,MATLAB作为client,RS最为server。

1、建立Robotstudio方机器人系统和Rapid程序。

1)打开RS,界面左上角基本--->ABB模型库--->拖入机器人--->从布局建立系统--->一直点击下一步--->直到有选项--->在添加选项里加入616-1 PC interface--->完成--->等待控制器状态变绿。

2)点击RAPID,在模块中建立程序,如下:

3)rapid程序如下:

MODULE moudle1

!define variables

VAR socketdev server;

VAR socketdev client;

VAR string message;

VAR string string1:="";

VAR string string2{3}:=["","",""];

VAR num pass:=0;

VAR num X:=0;

VAR num Y:=0;

VAR num Rz:=0;

VAR bool flag1:=FALSE;

VAR rawbytes data;

CONST robtarget p10:=[[0,0,23.72],[0.00796547,0.908649,0.417482,0.0017992],[0,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

TASK PERS tooldata toolxi:=[TRUE,[[0,0,0],[1,0,0,0]],[-1,[0,0,0],[1,0,0,0],0,0,0]];

PROC main()

a:

!create communication

SocketCreate server;

SocketBind server,"127.0.0.1",55000;

SocketListen server;

SocketAccept server,client;

!send a meassage to the client

SocketSend client,\Str:="Hello client";

!receive a message from the client

SocketReceive client,\Str:=string1;

UnpackRawBytes data ,1,message,\ASCII:=15;

!close cmmunication

SocketClose server;

TPErase;

TPWrite string1;

WaitTime 4;

string2{1}:=StrPart(string1,1,1);

string2{2}:=StrPart(string1,2,8);

string2{3}:=StrPart(string1,2,8);

flag1:=StrToVal(string2{1},pass);

flag1:=StrToVal(string2{2},X);

flag1:=StrToVal(string2{3},Y);

IF pass = 1 AND flag1 THEN

MoveL Offs(p10,X,Y,15), v1000, fine, toolxi;

MoveL Offs(p10,X,Y,0), v1000, fine, toolxi;

WaitTime 0.5;

MoveL Offs(p10,X,Y,15), v1000, z50, toolxi;

ELSE

TPWrite "failed to get the data";

waittime 2;

GOTO a;

ENDIF

ENDPROC

ENDMODULE

2、MATLAB端程序

%%socket communication with robotstudio

tc=tcpip('127.0.0.1',55000);

%open the communication

fopen(tc);

%recive a message from the robotstudio

message=fread(tc);

%send a message to the robotstudio

fwrite(tc,'12345678921234567');

3、点击RS运行后程序指针在 22 行SocketAccept server,client;,处等待运行MATLAB程序,点击MATLAB的m文件RUN等待一会儿通信建立,并且出现如下显示:

1)机器人示教器上tpwrite写屏指令写出MATLAB发来的数字。

2)MATLAB端:

如此数据发送通讯完成。

4、后记

在实际应用中,通讯数据互相传递的过程不像上述;必须要根据实际所需传递正确的数据类型、数据类型转换、格式变化和收发等设置(在程序中加入while循环,保持持续数据的传递----这部分会在后续记录上)。在rapid程序中可以查看string1=12345678921234567(鼠标放在上面就显示了),通过StrPart和StrToVal指令将其分割转换成‘1’,‘23456789’,‘21234567’如下也可以在示教器中查看程序数据。同时X,Y的值也改变了。而接下来需要解决的就是MATLAB发送‘有用的数据’,以便用于控制机器人在工作区间运动,否则机器人运动报错(报错如最下)。

matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)相关推荐

  1. 咸鱼笔记—Socket 通信

    咸鱼笔记-Socket 通信 socket是在应用层和传输层之间的一个抽象层,socket本质是编程接口(API),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信. ...

  2. matlab中fdyn,Matlab的用法总结

    1. 对序列进行洗牌 randperm() randperm()产生随机的序列 %if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(fil ...

  3. 如何恢复matlab关联,恢复matlab文件关联

    安装matlab后,其应用程序starter在文件夹C:\Program Files\MATLAB\R2010b\bin中 重装系统后,若没动MATLAB安装目标,则MATLAB不用重新安装.(同样的 ...

  4. matlab错误原因,matlab常见错误分析

    这里是几个Matlab的小提示,基本上是我使用Matlab时碰到并解决了的问题,希望能使别人不要再碰钉子走弯路了.如果有建议或发现其中有错误,请与我联系. 循环变量 由于历史的原因,程序员们总是使用i ...

  5. matlab引擎函数,Matlab引擎库函数

    Matlab引擎库包含了一系列从外部应用程序调用和控制Matlab引擎的函数.下表列举了C语言的引擎库函数,这些函数后使用了eng前缀名 表 1 C语言引擎函数库 引擎函数 功能描述 engOpen ...

  6. 水库调度matlab,基于MATLAB模糊系统在水库调度中的应用初探_廖明潮

    文章编号:1009-4881(2004)01-0022-03 收稿日期:2003-04-25 修回日期:2003-12-15 作者简介:廖明朝(1968-),男,湖北省洪湖市人,讲师. 基于MATLA ...

  7. matlab括号区别,matlab中各种括号(),[],与{}的区别与认识

    matlab中各种括号(),[],与{}的区别与认识 发布时间:2018-06-04 10:37, 浏览次数:469 , 标签: matlab 原文 在matlab中,常常会遇到(),[],和{},这 ...

  8. matlab仿真习题,(MATlab仿真部分习题答案.doc

    (MATlab仿真部分习题答案 [4.1]控制系统结构如图4.1所示 利用MATLAB对以上单位负反馈控制系统建立传递函数: 将第一问中求得的传递函数模型转化为零极点增益形式和状态空间形式. 解:(1 ...

  9. 关于通信matlab 仿真,关于MATLAB在通信仿真系统中的运用

    关于 MATLAB在通信仿真系统中的运用 卢 钊 贵 广 东南方 电信规 划 咨询 设 计院 有 限公 司 广 东 揭 阳 522031 [摘 要 ]本文采用MATLAB软件 ,采集一些图像对其进行图 ...

最新文章

  1. Django入门-项目创建与初识子应用
  2. java获取进程端口_查看进程的端口号
  3. 最适合编程的10大字体推荐
  4. SAP WebClient UI开发工具中attribute文件夹展开的实现原理分析
  5. 简单的hibernate环境搭建、自动生成model/配置/hibernate.xml配置文件
  6. html+css+javascript实现小游戏2048(详解,附源代码)
  7. I00019 生成全8数
  8. 【二叉树的迭代版后序遍历】LeetCode 145. Binary Tree Postorder Traversal
  9. 中常用的数据结构_代码面试需要知道的8种数据结构(附面试题及答案链接)
  10. 维护两个互斥的定价条件
  11. FPGA / IC 设计(一)
  12. PHP解压zip文件,并且读取文件内容输出
  13. 有两台电脑,一台电脑有线上网,另一台不能上网,如何通过飞秋或者其他软件,使得两台电脑间能互传文件
  14. HTML5期末大作业:动漫人物介绍网站设计——柯南(5页) 含报告 HTML+CSS+JavaScript dw网页设计 web网页设计与开发
  15. Java进阶学习路线图
  16. 一文让你了解数据采集
  17. Codeforces Problemset
  18. c代码-一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
  19. 【开发工具】Eclipse编写Java/JS/Web/JSP页面智能提示
  20. vivo手机html卸载不了,vivo手机怎么彻底卸载删除软件残留的垃圾文件呢

热门文章

  1. ssh免密登陆机制示意图
  2. java中常用的String方法
  3. sdut 汉诺塔系列2
  4. 离散对数(例题+详解+代码模板)
  5. opencv Mat常用操作
  6. /usr/bin/ld: 找不到 -lopencv_dep_cudart
  7. 剑指企业级云原生,阿里云 CNFS 如何破局容器持久化存储困境
  8. 阿里云研究员叔同:云原生是企业数字创新的最短路径
  9. 阿里巴巴大数据实践—实时技术
  10. 五分钟教你如何用函数计算部署钉钉群发机器人