matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)
前記:
聽一首《不想病》,歌詞唱開頭:做什么都不對(duì),說什么都浪費(fèi),想什么我都可悲....;感覺就是不一樣,好歌!哎,,,回到正題。好多事要去做,還得擠時(shí)間去玩,,,可悲啊 :D 。這里記錄一下MATLAB與Robotstudio建立簡單socket的例子。至于建立通訊的意義何在,暫時(shí)不能深入探究(我想最重要的聯(lián)合仿真時(shí)的數(shù)據(jù)傳遞,MATLAB對(duì)數(shù)據(jù)進(jìn)行分析類似的吧)。
附:在建立通信之前,MATLAB必須保證安裝有能進(jìn)行TIP/IP通信的Instrument Control Toolbox,然后就是Robotstudio創(chuàng)建了系統(tǒng)和對(duì)應(yīng)通訊的Rapid程序,MATLAB作為client,RS最為server。
1、建立Robotstudio方機(jī)器人系統(tǒng)和Rapid程序。
1)打開RS,界面左上角基本--->ABB模型庫--->拖入機(jī)器人--->從布局建立系統(tǒng)--->一直點(diǎn)擊下一步--->直到有選項(xiàng)--->在添加選項(xiàng)里加入616-1 PC interface--->完成--->等待控制器狀態(tài)變綠。
2)點(diǎn)擊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、點(diǎn)擊RS運(yùn)行后程序指針在?22 行SocketAccept server,client;,處等待運(yùn)行MATLAB程序,點(diǎn)擊MATLAB的m文件RUN等待一會(huì)兒通信建立,并且出現(xiàn)如下顯示:
1)機(jī)器人示教器上tpwrite寫屏指令寫出MATLAB發(fā)來的數(shù)字。
2)MATLAB端:
如此數(shù)據(jù)發(fā)送通訊完成。
4、后記
在實(shí)際應(yīng)用中,通訊數(shù)據(jù)互相傳遞的過程不像上述;必須要根據(jù)實(shí)際所需傳遞正確的數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、格式變化和收發(fā)等設(shè)置(在程序中加入while循環(huán),保持持續(xù)數(shù)據(jù)的傳遞----這部分會(huì)在后續(xù)記錄上)。在rapid程序中可以查看string1=12345678921234567(鼠標(biāo)放在上面就顯示了),通過StrPart和StrToVal指令將其分割轉(zhuǎn)換成‘1’,‘23456789’,‘21234567’如下也可以在示教器中查看程序數(shù)據(jù)。同時(shí)X,Y的值也改變了。而接下來需要解決的就是MATLAB發(fā)送‘有用的數(shù)據(jù)’,以便用于控制機(jī)器人在工作區(qū)間運(yùn)動(dòng),否則機(jī)器人運(yùn)動(dòng)報(bào)錯(cuò)(報(bào)錯(cuò)如最下)。
總結(jié)
以上是生活随笔為你收集整理的matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中imread导入失败_Im
- 下一篇: interp1函数matlab_【原创】