ABB機(jī)器人進(jìn)行Socket 通訊時(shí),首先需要安裝PC Interface選項(xiàng)。以下對(duì)Socket 通訊時(shí)用到的相關(guān)指令做出介紹。 一、指令 1、socketdev Socketdev(socket device),套接字設(shè)備是另一臺(tái)網(wǎng)絡(luò)計(jì)算機(jī)通訊鏈路的處理器。用于同其他網(wǎng)絡(luò)計(jì)算機(jī)通信,或在RAPID任務(wù)之間通信。 例:VAR socketdev socket1;定義變量socket1,并可將其用于套接字命令中,例如:SocketCreate。 2、SocketCreate SocketCreate用于針對(duì)基于通信或非連接通訊的連接,創(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地址和端口號(hào)綁定。SocketBind僅可用于服務(wù)器應(yīng)用。 8、SocketListen SocketListen用于開始監(jiān)聽輸入連接,即開始充當(dāng)服務(wù)器。SocketListen僅可用于服務(wù)器應(yīng)用。 9、SocketAccept SocketAccept用于接受輸入連接請(qǐng)求。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ī)定相對(duì)于當(dāng)前目標(biāo)坐標(biāo)系的位置,包括程序位移。如果未規(guī)定任何工件,則為世界坐標(biāo)系。 Rot(rotation)數(shù)據(jù)類型:orient,工具方位以四元數(shù)的形式表示(q1、q2、q3、q4)。規(guī)定相對(duì)于當(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)前長(zhǎ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ù)對(duì)象增加1。 例:Incr reg1; 將1增加至reg1,即reg1:=reg1+1。 |
|