说说三款机器人的差异
总是忘,写一个文章记录下,文章内容仅为个人理解,若有错误请指出但别骂,谢谢,内容纯手码,记录不易,转载请告知,若您也是公众号作者,可联系我开通白名单!
以下内容纯个人记录,若过程中存在错误请查阅对应机器人手册,记录过程中并未翻阅手册,所以避免不了错误,自行甄别,欢迎大佬补充!
文中机器人排名不分先后顺序,按个人习惯排序。
变量类型
常量
变量
可变量
位置变量赋值格式
运动指令
变量声明位置
MODULE Module2
VAR num reg7:=0;
PROC Routine2()
reg7 := 1;
ENDPROC
ENDMODULE
在SRC文件的INI前声明:
SRC运行至END结束变量内存释放
在DAT文件中定义1:
普通DAT文件仅对指SRC文件可以访问
在DAT文件中定义2:
但是加上PUBLIC和GLOBAL标签
defdat name PUBLIC
DECL GLOBAL INT INT1=100
enddat
全局可读写
在config.dat文件中定义
全局可读可写
系统默认自带
200R[]
100PR[]
25SR[]
可以根据内存容量在控制启动扩充
均为全局可访问且保持数据
程序指令
内容纯个人记忆,若报错请查阅对应手册
变量赋值
NUM1 := 1;
NUM1 = 1
R[1] = 1
程序注释
- ABB
! This is a comment
; This is a comment
- Fanuc
! This is a comment
-- This is a comment
输出信号
SET IO_NAME
RESET IO_NAME
$OUT=FALSE
$OUT=TRUE
DO=ON
DO=OFF
等待
WaitTime 1
WaitDI Di5,1
Wait sec 5
WAIT FOR $IN[5]
WAIT 5.00(sec)
WAIT DI[5]=ON
逻辑判断/条件选择
IF NUM1 = 1 THEN
ELSE
ENDIF
Test num1
CASE1:
...
CASE2:
...
DEFAULT:
...
END
IF NUM1 == 1 THEN
ELSE
ENDIF
SWITCH num1
CASE 1
...
CASE 2
...
DEFAULT
...
ENDSWITCH
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]
循环结构
FOR i FROM 1 TO 10 DO
...
ENDFOR
WHILE I>3 DO
...
ENDWHILE
WHILE TRUE DO
...
ENDWHILE
FOR i=1 to 10 STEP 1
...
ENDFOR
WHILE i>3
...
ENDWHILE
REPEAT
...
UNTIL I > 3
LOOP ;使用EXIT退出循环
ENDLOOP
FOR R[1]=1 TO 10
...
ENDFOR
LBL[1]
...
JMPLBL[1]
程序控制/打断运行
- ABB
STOP
HALT
PAUSE
调用程序
Prog_name();
Prog_name()
CALL Prog_name(可选传参)
函数定义方式
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
&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
MIAN:
FUNC(1, 1)
FUNC:
R[1] = AR[1] + AR[2]