精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

KUKA機器人socket通訊配置方法

指南車機器人科技 ? 來源:不知名網友i ? 2024-10-31 10:27 ? 次閱讀

以下文章來源于不知名網友i,作者不知名網友i

軟件支持

庫卡軟件包支持:

需要KUKA.Ethernet KRL,具體小版本根據系統而定。

測試環境:

虛擬機:VM17Pro

示教器:Officelite v8.6.7

編程:Workvisual v6.3.0

電腦:w11 python(測試) socketTool(測試)

配置方法

庫卡 socket 一切關于 socket 配置的操作,都基于一個或多個 xml 文件。

7ffd310e-966b-11ef-a511-92fbcf53809c.png

軟件安裝后自帶的一些 demo 和文檔,本文不過多概述。

關于 xml 文件的參數解析:

基于VST_Ethernet_KRL_31_zh,文中未提及的皆為可選參數,具體請參閱手冊

連接

8017b376-966b-11ef-a511-92fbcf53809c.png



Server
 


 

 
192.1.10.20
 
54600
 
TCP



接收數據
















 




發送數據



 












實戰起!

我的 xml 文件,作用:接收位置數據并只回復狀態。




192.168.0.1
59152














802c4dea-966b-11ef-a511-92fbcf53809c.png

關于EKI的一些函數

程序說明:

1、接收上位機發送的 xyz 位置變量,歐拉角使用當前自身位置,得到后賦值到位置變量數組。DECL FRAME POS_DATA[1000]位置變量聲明于 config 中。

803113d4-966b-11ef-a511-92fbcf53809c.png

SRC

80360362-966b-11ef-a511-92fbcf53809c.png

DAT

&ACCESS RVP
DEF  RECE_MAIN ( )

   ;FOLD INI;%{PE}
      ;FOLD BASISTECH INI
         GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
         INTERRUPT ON 3
         BAS (#INITMOV,0 )
      ;ENDFOLD (BASISTECH INI)
      ;FOLD USER INI
         ;Make your modifications here

      ;ENDFOLD (USER INI)
   ;ENDFOLD (INI)

   ;FOLD SPTP HOME Vel=100 % DEFAULT ;%{PE}
      ;FOLD Parameters ;%{h}
         ;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=HOME; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=DEFAULT; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP
      ;ENDFOLD
      SPTP XHOME WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FHOME), $BASE = SBASE(FHOME.BASE_NO), $IPO_MODE = SIPO_MODE(FHOME.IPO_FRAME), $LOAD = SLOAD(FHOME.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PDEFAULT), $APO = SAPO_PTP(PDEFAULT), $GEAR_JERK[1] = SGEAR_JERK(PDEFAULT), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
   ;ENDFOLD
   ACT_POS = $POS_ACT
   INIT_DATA()
   GET_DATA()
   ;wait until data read

   RET=EKI_Close("XmlCallBack")
   RET=EKI_Clear("XmlCallBack")

   RUN_ROBOT()
END

DEF INIT_DATA()
   RET=EKI_Init("XmlCallBack")
   RET=EKI_Open("XmlCallBack")
   RET = EKI_SEND("XmlCallBack", "Status 200")

   ; INIT
   save_index = 1
   FOR i=1 TO (1000)
      POS_DATA[i]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
   ENDFOR
   valueFrame={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
END

DEF GET_DATA()

   LOOP

      Wait for $Flag[1]
      ;SET_VALUE
      RET=EKI_GetFrame("XmlCallBack","Sensor/Read/xyzabc",valueFrame)
      IF (valueFrame.X <> 666.666) and (valueFrame.Y <> 666.666) THEN
         POS_DATA[save_index] = valueFrame
         POS_DATA[save_index].A = ACT_POS.A
         POS_DATA[save_index].B = ACT_POS.B
         POS_DATA[save_index].C = ACT_POS.C
         save_index = save_index + 1
         $Flag[1]=False
      ELSE
         EXIT
      ENDIF
      RET = EKI_SEND("XmlCallBack", "Status 200")
   ENDLOOP

END

DEF RUN_ROBOT()
   DECL FRAME XMOVE_POS
   LOOP
      FOR i=1 TO (1000)
         XMOVE_POS = POS_DATA[i]

         ;FOLD SLIN MOVE_POS Vel=2 m/s CPDAT1 Tool[1] Base[0] ;%{PE}
            ;FOLD Parameters ;%{h}
               ;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=MOVE_POS; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT1; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
            ;ENDFOLD
            SLIN XMOVE_POS WITH $VEL = SVEL_CP(2.0, , LCPDAT1), $TOOL = STOOL2(FMOVE_POS), $BASE = SBASE(FMOVE_POS.BASE_NO), $IPO_MODE = SIPO_MODE(FMOVE_POS.IPO_FRAME), $LOAD = SLOAD(FMOVE_POS.TOOL_NO), $ACC = SACC_CP(LCPDAT1), $ORI_TYPE = SORI_TYP(LCPDAT1), $APO = SAPO(LCPDAT1), $JERK = SJERK(LCPDAT1), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
         ;ENDFOLD
         IF (POS_DATA[i + 1].X == 0) AND (POS_DATA[i + 1].Y == 0) THEN
            EXIT
         ENDIF
      ENDFOR
   ENDLOOP
END
&ACCESS RVP
DEFDAT rece_main
   ;FOLD EXTERNAL DECLARATIONS;%{PE}%MKUKATPBASIS,%CEXT,%VCOMMON,%P
   ;FOLD BASISTECH EXT;%{PE}%MKUKATPBASIS,%CEXT,%VEXT,%P
   EXT  BAS (BAS_COMMAND  :IN,REAL  :IN )
   DECL INT SUCCESS
   ;ENDFOLD (BASISTECH EXT)
   ;FOLD USER EXT;%{E}%MKUKATPUSER,%CEXT,%VEXT,%P
   ;Make your modifications here

   ;ENDFOLD (USER EXT)
   ;ENDFOLD (EXTERNAL DECLARATIONS)
   INT i, save_index
   DECL EKI_STATUS RET
   FRAME ValueFrame
   DECL E6POS ACT_POS
   DECL MODULEPARAM_T LAST_TP_PARAMS = {PARAMS[] "Kuka.VelocityFieldEnabled=False; Kuka.ColDetectFieldEnabled=False; Kuka.MovementParameterFieldEnabled=False; Kuka.IsAngleEnabled=False; Kuka.PointName=MOVE_POS; Kuka.FrameData.base_no=0; Kuka.FrameData.tool_no=1; Kuka.FrameData.ipo_frame=#BASE; Kuka.isglobalpoint=False; Kuka.MoveDataName=CPDAT1; Kuka.MovementData.cb={AUX_PT {ORI #CONSIDER,E1 #CONSIDER,E2 #CONSIDER,E3 #CONSIDER,E4 #CONSIDER,E5 #CONSIDER,E6 #CONSIDER},TARGET_PT {ORI #INTERPOLATE,E1 #INTERPOLATE,E2 #INTERPOLATE,E3 #INTERPOLATE,E4 #INTERPOLATE,E5 #INTERPOLATE,E6 #INTERPOLATE}}; Kuka.MovementData.apo_fac=50; Kuka.MovementData.apo_dist=500; Kuka.MovementData.axis_acc=100; Kuka.MovementData.axis_vel=100; Kuka.MovementData.circ_typ=#BASE; Kuka.MovementData.jerk_fac=50; Kuka.MovementData.ori_typ=#VAR; Kuka.MovementData.vel=2; Kuka.MovementData.acc=100; Kuka.MovementData.exax_ign=0; Kuka.VelocityPath=2; Kuka.BlendingEnabled=False; Kuka.APXEnabled=False; Kuka.CurrentCDSetIndex=0"}
   DECL LDAT LCPDAT1 = {CB {AUX_PT {ORI #CONSIDER,E1 #CONSIDER,E2 #CONSIDER,E3 #CONSIDER,E4 #CONSIDER,E5 #CONSIDER,E6 #CONSIDER},TARGET_PT {ORI #INTERPOLATE,E1 #INTERPOLATE,E2 #INTERPOLATE,E3 #INTERPOLATE,E4 #INTERPOLATE,E5 #INTERPOLATE,E6 #INTERPOLATE}},APO_FAC 50.0,APO_DIST 500,AXIS_ACC 100.0,AXIS_VEL 100.0,CIRC_TYP #BASE,JERK_FAC 50.0,ORI_TYP #VAR,VEL 2,ACC 100,GEAR_JERK 100.0,EXAX_IGN 0}
   DECL FDAT FMOVE_POS = {BASE_NO 0,TOOL_NO 1,IPO_FRAME #BASE,POINT2[] " "}
ENDDAT

程序關鍵點說明

1、xml 文件編輯完成后必須放置在C:KRCROBOTERConfigUserCommonEthernetKRL中

80499ef4-966b-11ef-a511-92fbcf53809c.png

并且程序中EKI函數傳參時傳入的為 xml 文件名。

2、必須聲明EKI函數 DECL EKI_STATUS RET

805f2e7c-966b-11ef-a511-92fbcf53809c.png

在正確的位置使用相關函數,初始化、連接、發送等

3、使用正確的 GETSET 函數

8072b8d4-966b-11ef-a511-92fbcf53809c.png

例如我是需要獲取位置變量,那么我直接是使用了GetFrame函數,如果是字符串則是GETSTRING,整數、實數、布爾等同理。

4、如果你是接收或發送的字符串,注意庫卡中并沒有 String 類型變量,需要使用的字符數組char[],并且字符數組下標從 1 開始。

DECLCHARTEST_STR[20]聲明了長度為20的字符數組
DECLCHARTEST_STR1[1]

TEST_STR="ABC"
TEST_STR1[1]=TEST_STR[2]
這樣賦值到,TEST_STR1[1]值為B

5、合理使用 flag 標志,像我的代碼中我只使用了接收到信息的標志,這是不對的,現在代碼在創建連接后會直接發送信息,但是可能會出現上位機并未運行等情況,所以需要正確的使用標志位

8085b830-966b-11ef-a511-92fbcf53809c.png




192.168.0.1
59152















6、更多信息請參閱文檔。

python 發送 xml 完成通訊

importsocket
importtime


#創建Socket服務器
defstart_server():
#創建一個IPv4(AF_INET)和TCP(SOCK_STREAM)的socket對象
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#綁定服務器地址和端口
server_address=('0.0.0.0',59152)
print(f"啟動服務器,監聽地址:{server_address[0]}:{server_address[1]}")
server_socket.bind(server_address)

#監聽客戶端連接,最大連接數為1
server_socket.listen(1)

print("等待客戶端連接...")
#接受客戶端連接
client_socket,client_address=server_socket.accept()
try:
print(f"客戶端連接成功:{client_address}")

foriinrange(1000):
send_data(client_socket,i+1,i-1)
print(client_socket.recv(1024),i)
#time.sleep(3)
send_data(client_socket,666.666,666.666)

finally:
#關閉客戶端連接
client_socket.close()
print(f"已斷開客戶端:{client_address}")

defsend_data(socket_client,x,y):
#定義XML數據
xml_data=f'''



'''

#發送XML數據到客戶端
socket_client.sendall(xml_data.encode('utf-8'))
print(f"已發送數據:
{xml_data}")



#啟動服務器
if__name__=="__main__":
start_time=time.time()
start_server()
end_time=time.time()

print(f'耗時:{end_time-start_time}')

發送 xml 格式,注意格式,否則無法解析。






測試

809e255a-966b-11ef-a511-92fbcf53809c.png

80bf4a46-966b-11ef-a511-92fbcf53809c.png

80ca6ba6-966b-11ef-a511-92fbcf53809c.png

80e68796-966b-11ef-a511-92fbcf53809c.png

80fc0e90-966b-11ef-a511-92fbcf53809c.png

這種寫法肯定不是最優解,但是在 50 秒內解析并保存完成了 1000 組位置數據,歡迎大佬們有更好的方案一起討論,不喜勿噴。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    210

    文章

    28191

    瀏覽量

    206505
  • 電腦
    +關注

    關注

    15

    文章

    1680

    瀏覽量

    68678
  • 虛擬機
    +關注

    關注

    1

    文章

    908

    瀏覽量

    28086
  • KUKA
    +關注

    關注

    3

    文章

    217

    瀏覽量

    16488

原文標題:KUKA機器人socket通訊配置方法

文章出處:【微信號:指南車機器人科技,微信公眾號:指南車機器人科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    KUKA重型機器人

    這個是KUKA重型機器人處理和測量混凝土軌枕的視頻。處理得相當精細。真心值得愛好機器者和愛國者研究研究。
    發表于 02-03 15:18

    KUKA機器人控制柜三維模型

    尋求KUKA機器人控制柜三維模型,做方案有時需要用到,大家誰有可以給我發一份嗎?先謝謝了
    發表于 04-18 16:05

    KUKA機器人問題解答

    1 開機坐標系無效 世界坐標系是以槍頭為基點,在這種坐標系中機器人所有的動作都是按照以槍頭為頂點來完成移動,XYZ方向切割槍方向不改變,如果機器人在世界坐標系中移動,槍頭也隨著改變方向,那就是我們在
    發表于 07-15 07:48

    庫卡KUKA機器人四種啟動方式介紹

    庫卡KUKA機器人四種啟動方式1)自動運行說明 庫卡機器人處于自動運行時,先要在手動狀態時候選擇需要運行的程序,然后通過鑰匙開關切換機器人到自動運行狀態,給
    發表于 09-04 15:45

    KUKA庫卡機器人伺服驅動器相關型號舉例

    KUKA庫卡機器人伺服驅動器(Servo Drive)是KUKA運動控制的重要組成部分,被普遍應用于工業機器人及數控加工中心等自動化設備中。是用來控制伺服電機的一種控制器,其作用類似于
    發表于 09-08 16:30

    KUKA焊接機器人伺服電機常見故障及維修處理

    KUKA焊接機器人伺服電機常見故障及維修處理1、庫卡機器人伺服電機的基本檢查由于庫卡機器人伺服電機內含有精密檢測器,因此,當發生碰撞、沖擊時可能會引起故障,在對庫卡
    發表于 09-26 16:51

    工業機器人組成結構相關資料分享

    工業機器人是近兩年機械行業最熱的字眼,隨著企業工業機器人的增多,很多機械工程師對于工業機器人充滿了好奇。作為機器人四大家族之一的KUKA,已
    發表于 07-05 06:44

    庫卡機器人MGV電源模塊維修

    KUKA庫卡機器人MGV電源模塊維修PH1013-2840MGV電源維修 庫卡電源模塊維修 機器人電源模塊維修 庫卡控制器維修 KUKA電源維修KU
    發表于 09-08 07:30

    KUKA機器人伺服驅動模塊維修

    KUKA庫卡C4機器人驅動器故障報警維修庫卡機器人維修內容包括庫卡機器人示教器維修,KUKA伺服驅動模塊維修,庫卡
    發表于 09-17 07:09

    沒有有前輩用LabVIEW控制kuka機器人c2的經驗?通訊是怎么做到的?

    我看NI有Robotics Toolkit for KUKA KR C2的附加包,這個怎么用啊?如何和kuka機器人建立通訊啊?是Tcp接口嗎?
    發表于 10-21 20:59

    ABB機器人如何與相機詳細方法通訊圖文講解

    ABB機器人如何與相機通訊1)機器人與相機一般采用socket通訊(TCP/IP)。所以機器人
    的頭像 發表于 01-27 09:09 ?1.7w次閱讀
    ABB<b class='flag-5'>機器人</b>如何與相機詳細<b class='flag-5'>方法</b><b class='flag-5'>通訊</b>圖文講解

    KUKA機器人PN系統網絡故障的判斷方法

    KUKA機器人PN系統網絡故障的判斷方法說明。
    的頭像 發表于 03-11 10:08 ?3893次閱讀

    ?KUKA機器人固定焊鉗的銑削控制

    KUKA機器人固定焊鉗的銑削控制
    的頭像 發表于 04-13 11:36 ?823次閱讀

    KUKA工業機器人與S7-1200PLC實現Profinet通訊的步驟

    本次內容來簡單談一談KUKA工業機器人與S7-1200PLC實現Profinet通訊的步驟。
    的頭像 發表于 07-05 10:10 ?6180次閱讀
    <b class='flag-5'>KUKA</b>工業<b class='flag-5'>機器人</b>與S7-1200PLC實現Profinet<b class='flag-5'>通訊</b>的步驟

    Kuka機器人配置Profinet通訊網關HT3S-PNS-ECS

    Kuka機器人配置Profinet通訊網關HT3S-PNS-ECS
    的頭像 發表于 06-13 15:52 ?647次閱讀
    <b class='flag-5'>Kuka</b><b class='flag-5'>機器人</b><b class='flag-5'>配置</b>Profinet<b class='flag-5'>通訊</b>網關HT3S-PNS-ECS