ABB機(jī)器人進(jìn)行Socket 通訊時(shí),首先需要安裝PC Interface選項(xiàng)。以下對Socket 通訊時(shí)用到的相關(guān)指令做出介紹。
一、指令
1、socketdev
Socketdev(socket device),套接字設(shè)備是另一臺網(wǎng)絡(luò)計(jì)算機(jī)通訊鏈路的處理器。用于同其他網(wǎng)絡(luò)計(jì)算機(jī)通信,或在RAPID任務(wù)之間通信。
例:VAR socketdev socket1;定義變量socket1,并可將其用于套接字命令中,例如:SocketCreate。
2、SocketCreate
SocketCreate用于針對基于通信或非連接通訊的連接,創(chuàng)建新的套接字。
例:VAR socketdev socket1;
……
SocketCreate socket1;
創(chuàng)建使用流型協(xié)議TCP/IP的新套接字設(shè)備,并分配到變量socket1。
3、SocketConnect
SocketConnect用于將套接字與客戶端應(yīng)用中的遠(yuǎn)程計(jì)算機(jī)相連。
例:SocketConnect socket1,”192.168.0.1”,1025;
嘗試與ip地址192.168.0.1和端口1025處的遠(yuǎn)程計(jì)算機(jī)相連。
4、SocketClose
當(dāng)不再使用套接字連接時(shí),使用SocketClose。
5、SocketSend
SocketSend用于向遠(yuǎn)程計(jì)算機(jī)發(fā)送數(shù)據(jù)。SocketSend可用于客戶端和服務(wù)器應(yīng)用。
6、SocketReceive
SocketReceive用于從遠(yuǎn)程計(jì)算機(jī)接收數(shù)據(jù)。SocketReceive可用于客戶端和服務(wù)器應(yīng)用。
7、SocketBind
SocketBind用于將套接字與指定服務(wù)器IP地址和端口號綁定。SocketBind僅可用于服務(wù)器應(yīng)用。
8、SocketListen
SocketListen用于開始監(jiān)聽輸入連接,即開始充當(dāng)服務(wù)器。SocketListen僅可用于服務(wù)器應(yīng)用。
9、SocketAccept
SocketAccept用于接受輸入連接請求。SocketAccept僅可用于服務(wù)器應(yīng)用。
10、SocketGetStatus
SocketGetStatus返回一個(gè)套接字的當(dāng)前狀態(tài)。
二、函數(shù)
1、robtarget
robtarget(robot target)位置數(shù)據(jù)用于定義機(jī)械臂和附加軸的位置。
trans(translation):數(shù)據(jù)類型pos,用mm來表示工具中心點(diǎn)的位置(x、y、z)。規(guī)定相對于當(dāng)前目標(biāo)坐標(biāo)系的位置,包括程序位移。如果未規(guī)定任何工件,則為世界坐標(biāo)系。
Rot(rotation)數(shù)據(jù)類型:orient,工具方位以四元數(shù)的形式表示(q1、q2、q3、q4)。規(guī)定相對于當(dāng)前目標(biāo)坐標(biāo)系的方位,包括程序位移。如果未規(guī)定任何工件,則為世界坐標(biāo)系。
2、CRobT
CRobT(Current Robot Target)用于讀取機(jī)械臂和外軸的當(dāng)前位置。該函數(shù)返回robtarget值以及位置(x、y、z)、方位(q1、q2、q3、q4)、機(jī)械臂軸位置和外軸位置。
3、CPos
CPos(Current Position)用于讀取機(jī)械臂的當(dāng)前位置。該函數(shù)返回機(jī)械臂TCP的x、y、z的值,以作為位置數(shù)據(jù)。如果有待讀取完整的機(jī)械臂位置(robtarget),則使用函數(shù)CRobT。
4、EulerZYX
EulerZYX(Euler ZYX rotations)用于從orient類型變量獲取歐拉角分量。
例:VAR num anglex;
VAR num angley;
VAR num anglez;
VAR pose object;
……
……
anglex:= EulerZYX(\X, object.rot);
angley:= EulerZYX(\Y, object.rot);
anglez:= EulerZYX(\Z, object.rot);
5、ValToStr
ValToStr(Value To String)用于將一個(gè)任意數(shù)據(jù)類型的值轉(zhuǎn)換為一段字符串。
例1:VAR string str;
VAR pos p:=[100,200,300];
str:= ValToStr(p);
變量str被賦予值” [100,200,300]”。
例2、str:= ValToStr(TRUE);
變量str被賦予值TRUE。
例3、str:= ValToStr(1.234567890123456789);
變量str被賦予值”1.23456789012345”。
6、StrLen
StrLen(String Length)用于發(fā)現(xiàn)一個(gè)字符串的當(dāng)前長度。
例:VAR num len;
Len:= StrLen(“Robotics”);
變量len被賦予值8。
7、StrPart
StrPart(String Part)用于尋找一部分字符串,以作為一個(gè)新的字符串。
例:VAR string part;
Part:= StrPart(“Robotics”,1,5);
變量part被賦予值”Robot”。
8、StrToVal
StrToVal(String To Value)用于將一段字符串轉(zhuǎn)換為任意數(shù)據(jù)類型的一個(gè)值。
例:VAR bool ok;
VAR num nval;
Ok:= StrToVal(“3.85”,nval);
假定變量ok的值為TRUE,并假定nval的值為3.85。
9、Incr
Incr用于將數(shù)值變量或者永久數(shù)據(jù)對象增加1。
例:Incr reg1;
將1增加至reg1,即reg1:=reg1+1。