FANUC&KUKA&ABB程序对比

[复制链接]
查看159 | 回复0 | 2024-9-25 13:51:13 | 显示全部楼层 |阅读模式
>

说说三款机器人的差异

总是忘,写一个文章记录下,文章内容仅为个人理解,若有错误请指出但别骂,谢谢,内容纯手码,记录不易,转载请告知,若您也是公众号作者,可联系我开通白名单!

以下内容纯个人记录,若过程中存在错误请查阅对应机器人手册,记录过程中并未翻阅手册,所以避免不了错误,自行甄别,欢迎大佬补充!
文中机器人排名不分先后顺序,按个人习惯排序。

变量类型

Tips:ABB的byte不直接对指库卡INT,只对指为十进制整形,而不是数据长度

常量

变量

可变量

位置变量赋值格式

运动指令

变量声明位置

  • ABB
MODULE Module2
 VAR num reg7:=0;
 PROC Routine2()
  reg7 := 1;
 ENDPROC
ENDMODULE
  • kuka
在SRC文件的INI前声明:
  SRC运行至END结束变量内存释放
  
在DAT文件中定义1:
  普通DAT文件仅对指SRC文件可以访问
  
在DAT文件中定义2:
  但是加上PUBLIC和GLOBAL标签
  defdat name PUBLIC
    DECL GLOBAL INT INT1=100
  enddat
  全局可读写
  
在config.dat文件中定义
  全局可读可写
  • fanuc
系统默认自带
200R[]
100PR[]
25SR[]
可以根据内存容量在控制启动扩充
均为全局可访问且保持数据

程序指令

内容纯个人记忆,若报错请查阅对应手册

变量赋值

  • ABB
  NUM1 := 1;
  • KUKA
  NUM1 = 1
  • Fanuc
  R[1] = 1

程序注释

- ABB
  ! This is a comment
  • KUKA
  ; This is a comment
- Fanuc
  ! This is a comment
  -- This is a comment

输出信号

  • ABB
  SET IO_NAME
  RESET IO_NAME
  • KUKA
  $OUT=FALSE
  $OUT=TRUE
  • Fanuc
  DO=ON
  DO=OFF

等待

  • ABB
WaitTime 1
WaitDI Di5,1
  • KUKA
Wait sec 5
WAIT FOR $IN[5]
  • Fanuc
WAIT 5.00(sec)
WAIT DI[5]=ON

逻辑判断/条件选择

  • ABB
IF NUM1 = 1 THEN

ELSE

ENDIF
Test num1
CASE1:
...
CASE2:
...
DEFAULT:
...
END
  • KUKA
IF NUM1 == 1 THEN

ELSE

ENDIF
SWITCH num1
CASE 1
...
CASE 2
...
DEFAULT
...
ENDSWITCH
  • Fanuc
IF (DI[5]=ON) THEN

ELSE

ENDIF

IF R[1]=1,CALL PROG
IF R[1]=1,R[1]=(5)
SELECT R[1]=1, JMP LBL[1]
         =2, JMP LBL[2]
         ELSE,JMP LBL[3]

循环结构

  • ABB
  • FOR循环
  FOR i FROM 1 TO 10 DO
    ...
  ENDFOR
  • while循环
WHILE I>3 DO
 ...
ENDWHILE
  • 死循环
WHILE TRUE DO
  ...
ENDWHILE
  • KUKA
  • FOR
  FOR i=1 to 10 STEP 1
   ...
  ENDFOR
  • WHILE
  WHILE i>3
   ...
  ENDWHILE
  
  
  REPEAT
   ...
  UNTIL I > 3
  • 死循环
LOOP  ;使用EXIT退出循环
ENDLOOP
  • Fanuc
    • FOR
  FOR R[1]=1 TO 10
   ...
  ENDFOR
  • 死循环
LBL[1]
  ...
JMPLBL[1]

程序控制/打断运行

- ABB
  STOP
  • KUKA
  HALT
  • Fanuc
  PAUSE

调用程序

  • ABB
Prog_name();
  • KUKA
Prog_name()
  • Fanuc
CALL Prog_name(可选传参)

函数定义方式

  • ABB
FUNC NUM FUNC_1(NUM NUM_1, NUM NUM_2)
  RETURN NUM_1+NUM_2;
ENDFUN

PROC MAIN()
  VAR NUM NUM_TEMP := 0;
  
  NUM_TEMP := FUNC_1(1,3)
ENDPROC
MODULE Module2
 VAR num reg7:=0;
    VAR BOOL BOOL2;
 VAR num reg8{3}:=[0,0,0];
 PROC Routine2()
  reg7 := Routine3(1,3,BOOL2);
 ENDPROC
 FUNC num Routine3(num param0,num param1,INOUT BOOL BOOL1)
  IF param0 >= param1 THEN
            BOOL1 := TRUE;
            RETURN 1;
        ELSE
            BOOL1 := FALSE;
            RETURN 0;
        ENDIF
 ENDFUNC

ENDMODULE
  • KUKA
&ACCESS RV1

DEF MIAN()
  GET_DIV_AND_MOD2(8, 5, NUM1, NUM2)
  ; NUM1=1
  ; NUM2=3
ENDDEF

DEF GET_DIV_AND_MOD2 ( BCS:IN, CS:IN, SHANG:OUT, YU:OUT )
   DECL INT BCS, CS, SHANG, YU
   
   BCS = BCS - 1
   
   IF CS == 0 THEN
      ; ERROR
      ERROR_LABEL:
      HALT
      GOTO ERROR_LABEL
   ENDIF
   
   SHANG = BCS / CS
   IF (SHANG * CS) > BCS THEN
      SHANG = SHANG - 1
   ENDIF
   
   YU = BCS - (SHANG * CS)
   
   shang = shang + 1
   yu = yu + 1
   
END
DEF TEST()
  FUNC_1 = Function(1, 1)
ENDDEF

DEFFCT INT Function ( NUM1:IN, NUM2:IN )
   DECL INT NUM1, NUM2
   RETURN NUM1 + NUM2
ENDFCT
  • Fanuc
MIAN:
FUNC(1, 1)

FUNC:
R[1] = AR[1] + AR[2]


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则