matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)
前記:
聽一首《不想病》,歌詞唱開頭:做什么都不對,說什么都浪費,想什么我都可悲....;感覺就是不一樣,好歌!哎,,,回到正題。好多事要去做,還得擠時間去玩,,,可悲啊 :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通信(初探)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中imread导入失败_Im
- 下一篇: 用java写ods系统_基于数据库的代码