SEND:将读取的文件的数据转发到写入文件。本语句是将\"ENTER ROBOT SPEED\"(robot的初始速度)写入ETH中。 2.CALL: *Go_Home
CALL:在同一个工程项目程序内跳出本程序去选择另一个程序运行。本语句是跳出正在运行的程序去选择*Go_Home程序运行。 3.GOSUB *COM_PC
GOSUB:跳转选择子程序语句。本语句是在同一程序内跳转选择子程序*COM_PC运行。
4.*COM_PC、*Go_Home 程序标签。
5.*START_RUN: 标签
GOSUB *COM_PC 选择*COM_PC子程序
'ASPEED I20% 定义外部速度为整数(%)I20 SELECT CASE A0$ 条件选择语句,字符串A0($) CASE \"Site\" 条件1“site”(位置) GOSUB *PALLET_TP PALLET_TP(托盘) CASE \"Result\" 条件2”result”(结果) GOSUB *TP_PALLET
CASE \"QrCode\" 条件3”QrCode”二维码扫描 GOSUB *QRCODE
CASE \"Laser\" 条件4”Laser”镭射检查 'GOSUB *LASER
CASE \"GoHome\" 条件5“GoHmoe”拍照避让 GOSUB *BIRANG
CASE \"GoBack\" 条件6 放回原位 GOSUB *GOBACK
CASE ELSE 若无一条件成立,则执行CASE ELSE,然后执行下一语句
SEND \"Command is not found,@\" TO CMU 将读出的文件数据”Command is not found “转发到写入CMU中
PRINT \"---------Command is not found---------\" PRINT输出语句,输出command is not found END SELECT 结束条件选择语句
GOTO *START_RUN 跳转语句(GOTO),跳转到*START_RUNBO标签语句
6.PMOVE(1,SGI1),Z=0.00
PMOVE语句是托盘移动语句指令,本指令默认为1号机器人,编号为1号托盘,SGI1托盘点位,第三轴(Z轴)抬升到0.00mm。 7.DO(21,20)=&B01
DO:是输出至并行端口,本语句使并行端口DO21置OFF,DO20置ON。 8.DRIVE(3,0.00)
DRIVE:以轴位单位的绝对移动指令。本指令是默认为一号机器人,第三轴(Z轴)绝对移动量为0.00mm。 9.MOVE P,P1,Z=0.00
MOVE:移动指令。本指令是以PTP移动到P1点并且Z轴抬升到0.00mm。 10.WART_ARM
WART_ARM:等待机器人动作结束指令。 11.LEN(BB$)
LEN:是获取字符串BB$的长度。 12.MID$(BB$,L_NO%,1)
MID$:从指定位置获取字符串。本指令是将BB$的第L_NO%字符开始的1个字符赋给MID$。 13.VAL(B2$)
VAL:将字符串转换为数值。将字符串表达式B2$里的字符转换为数值。 14.% ,!,$
%:整数 !:实数 $:字符,字符串 15.DELAY1000
DELAY:延时指令语句。本指令是延时1000ms。 16.MOVE P,P50,Z=0.00,S=25
本语句表示以PTP移动倒是P50点位,并且Z轴抬升到0.00mm的位置,移动速度为25个脉冲单位。
普通命令
1. DIM
DIM:声明数组变量。 注意:最多只能声明三维数组
格式:DIM<数组名> <类型%、!、$> (角标)
例:DIM A% (10)…………定义整型一维数组变量A%(0)~A%(10)的11个元素。 DIM C% (2,2),D!(10)……….定义整型数组C%(0,0)~C%(2,2)与实数型数组D!(0)~D!(10)
DIM B! (2,3,4)……….定义实数型三维数组变量B!(0,0,0)~B!(2,3,4)的60个元素。 2.LET
(1).LET:赋值语句。
格式:[LET] <类型> =<表达式>
[LET] <算术变量> = <表达式>
<并行输出变量> <内部输出变量>
<机械臂锁定输出变量> <定时输出变量> <串行输出变量>
例:A!=B!+1
B% (1, 2, 3) =INT (10.88) DO2 ( ) =&B00101 101 MO (21, 20) =2 LO (00) =1 TO (01) =0 SO12 ( ) =255
(2).LET:字符串赋值语句
格式:[LET] <字符串变量> = <字符串表达式> 例:A$=”YAMAHA”
B$=”ROBOT” C$=A$+”- +“B$
Resulrt: YAMAHA-ROBOT (3).LET:坐标点赋值语句
格式:[LET]<坐标点变量> = <坐标点表达式>
例:P1 =P10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将坐标点10 赋值给坐标点1
P20=P20+P5 . . . . . . . . . . . . . . . . . . . . . . . . . 将坐标点20 与坐标点5 分别加上各个元素,并赋值给P20
P30=P30–P3 . . . . . . . . . . . . . . . . . . . . . . . . . . 将坐标点30 至坐标点3 分别减去各个元素,并赋值给P30
P80=P70*4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 将坐标点70 的各元素乘以4,并赋值给P80
P60=P5/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将坐标点5 的各元素乘以1/3,并赋值给P60
(4).移位赋值语句
格式:[LET] <移位变量> = <移位表达式>
例:S1=S0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将位移0 赋值给位移1
S2=S1+S0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将位移1 与位移0 分别加上每个元素,并赋值给位移2
3.REM
REM:插入标注。
REM 或\"’\" 以后的字符被视作注释。不执行注释语句。\"’\" 也可写入行的中间。 例:REM *** MAIN PROGRAM ***
字符串操作
1.CHR$
CHR$:计算带有指定字符编码的字符。
例:A$ = CHR$(65)……………….将A赋值给A$ 即:65在ASCCII表中对应的是A,CHR$意为将数值对应的ASCCII表中的字符赋给字符串A$的作用。
2.LEFT$
LEFT$:从一个字符串左端抽出n个字符赋给另一个字符串。
例:B$ = LEFT$(A$,4)………………..将A$中的最左端的4个字符抽出赋给B$。 3.RIGHT$
RIGHT$:从一个字符串右端抽出n个字符赋给另一个字符串。
例:B$ =RIGHT$(A$,4)………………..将A$中的最右端的4个字符抽出赋给B$。
4.LEN
LEN:获取字符串的长度。 格式:LEN(<字符串表达式>)
即:返回<字符串表达式>中表示的字符串长度(字节数)。
例:B=LEN(A$)
5.MID$(BB$,L_NO%,1)
MID$:从指定位置获取字符串。本指令是将BB$的第L_NO%字符开始的1个字符赋给MID$。
6.VAL
VAL:将字符串转化为数值。
I4%=VAL(B5$)……………………………..将B5$里的值转化为实际的数值赋给I4%。 7.STR$
STR$:将数值转化为字符串。
将<表达式>中指定的值转换为字符串。<表达式>中可指定整数型及实数型的数值。
格式:B$=STR$ (10.01)………………将数值10.01转化为字符串赋给B$。 8.ORD
ORD:获得指定字符串的起始字符的字符编码。即计算字符编码。计算<字符串表达式>起始字符的字符编码。
例:A=ORD (\"B\") . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将 66 (=&H42 ) 赋值给A。 字符“B”在ASCCII表中对应的数值为66。
坐标点、坐标、位移坐标
1.CHANGE
CHANGE:对指定的机器人的机械手进行切换。
通过CHANGE 进行<机器人编号>指定机器人的机械手的切换。
指定为OFF 时,表示无机械手设定。<机器人编号>可以省略。当进行省略时,机器人1 被指定。
在切换机械手之前,请利用HAND 语句对机械手进行定义。 格式:CHANGE [<机器人编号>] Hn/OFF 例:HAND H1= 0 150.0 0.0
HAND H2= –5000 20.00 0.0
P1=150.00 300.00 0.00 0.00 0.00 0.00
CHANGE H2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .更改为机械手2
MOVE P, P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械手2 的前端向P1 移动(1)
CHANGE H1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 更改为机械手1
MOVE P, P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械手1 的前端向P1 移动(2) HALT 2.HAND
HAND:对指定机器人的机械手进行定义。 定义语句: HAND[<机器人编号>]Hn= <第1 参数> <第2 参数> <第3 参数> [R] 选择语句:
CHANGE[<机器人编号>]Hn 前提水平多关节机器人时 (1).未指定<第四参数>R时。
机械手(工装治具)是固定在基准第二机械臂前端的。 <第一参数>:机械手n基准点与基准第二机械臂基准点之间的脉冲偏移量。逆时针方向为+脉冲。
<第二参数>:机械手n基准点与基准第二机械臂基准点之间的长度差(mm)。 <第三参数>:机械手n的Z轴的偏移量(mm)。 例:HAND H1= 0 150.0 0.0
HAND H2= –5000 20.00 0.0
P1=150.00 300.00 0.00 0.00 0.00 0.00
CHANGE H2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .更改为机械手2
MOVE P, P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械手2 的前端向P1 移动(1)
CHANGE H1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 更改为机械手1
MOVE P, P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械手1 的前端向P1 移动(2) HALT
(2).指定<第四参数>R时
R 轴为伺服时,成为从R 轴旋转中心偏移的机械手。 <第一参数>:设R轴的当前位置为0.00时,正交坐标+x与机械手n之间的角度,逆时针为正度数。
<第二参数>:机械手n的长度(mm)>0。
<第三参数>:机械手n的偏移量mm。 3.LOCx、LOCy、LOCz、LOCr
以轴位单位或者以位移数据为要素单位来设定或者获取坐标点数据。 格式:LOCX<坐标点表达式>/<位移表达式>=<表达式>
例:LOCX(P10)=A(1)…………………将P10的第一轴(x轴)数据变更为数组A(1)的值。
LOCY(S1)=B……………………….将S1的第二轴(Y轴)数据变更为B的值。 (A1)=LOCX(P10)…………………将P10的第一轴的数据赋给数组A(1)。 B=LOCY(S1)……………………….将位移数据的第二轴数据赋给B。 4.JTOXY/XYJOT
JTOXY:以轴单位制转换,将脉冲转换成毫米。
将关节坐标数据转化为指定机器人的正交坐标数据。
例:P10=JTOXY(WHERE)…………将当前位置数据转化成正交坐标数据。 XYJOT:将正交坐标数据(mm)转化为轴坐标数据(脉冲)。 将坐标点变量的正交数据转化为指定机器人的关节坐标数据。 例:P10=XYJOT(P10) 5.LEFTY/RIGHTY
LEFTY:将水平多关节机器人的手系系统设置为左手系。此命令对水平多关节机器人有效。
RIGHTY:将水平多关节机器人的手系系统设置为手系。此命令对水平多关节机器人有效。
格式:LEFTY(机器人编号) 注:机器人编号可以省略。 例:RIGHTY
MOVE P,P1 LEFTY
MOVE P,P1 RIGHTY HALT 5.Pn/Sn
Pn:在程序中定义点位坐标。 Sn:在程序中定义位移坐标。 6.SHIFT
SHIFT:设置位移坐标。
格式:<机器人编号> (位移变量) 例:SHIFT S1
MOVE P,P1 SHIFT S[A] MOVE P,P2 HALT
分支命令
1.FOR~NEXT
FOR~NEXT:反复执行FOR的下一条语句至NEXT的上一条语句,直至变量超过指定值为止,将跳出循环,执行下一条语句。
格式:FOR<控制变量> =<开始值>TO<结束值> [STOP<步骤>] <命令区>
NEXT[<控制变量>] 例:FOR A=1 TO 10 MOVE P,P1 MOVE L,P2 MOVE P,P3
PRINT “YAMAHA”;A NEXT A HALT
2.GOSUB~RETURN
GOSUB~RETURN:通过GOSUB跳转到标签子程序,并执行标签子程序,在通过RETURN返回到主程序继续执行。 格式:MAIN . . .
GOSUB <标签> . . HALT <标签> . .
RETURN 例:
*ST: MOVE P, P0
GOSUB *CLOSEHAND MOVE P, P1
GOSUB *OPENHAND GOTO *ST HALT
’SUB ROUTINE
*CLOSEHAND: DO (20) = 1 RETURN *OPENHAND: DO (20) = 0 RETURN 3.GOTO
GOTO:无条件跳转至标签所指定的语句。 格式:MAIN . . <标签>
. .
GOTO<标签> 例:’MAIN ROUTINE
*ST :
MOVE P , P0, P1 IF DI (20) = 1 THEN GOT O *FIN ENDIF GOT O *ST *FIN: HALT
4.IF
(1).IF:更据条件分支控制流程。 格式: MAIN . .
IF<条件表达式>THEN<标签>/<命令语句>ELSE<标签>/<命令语句> . . HALT
例:’MAIN ROUTINE
*ST:
MOVE P, P0, P1
IF DI (20) =1 THEN *L1 . . . . . . . . . . DI (20) 为1 时,则跳转至*L1
DO (20) =1 DELAY 100 *L1:
IF DI (21) =1 THEN *ST ELSE *FIN
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DI (21) 为1 时, 则跳转至*ST。如果不是,
则跳转至*FIN *FIN: HALT
(2).区块IF语句
IF<条件表达式1>THEN <命令区1>
ELSEIF<条件表达式2>FHEN <命令区2> ELSE
<命令区3> ENDIF
例:’MAIN ROUTINE
*ST:
MOVE P, P0, P1 IF DI (21, 20) = 1 THEN DO (20) = 1 DELAY 100 WAIT DI (20) =0
ELSEIF DI (21, 20) =2 THEN DELAY 100 ELSE GOTO *FIN ENDIF GOTO *ST *FIN: HALT
5.ON~GOTO
ON~GOTO:根据条件跳转至标签所指定的行。 例:
’MAIN ROUTINE *ST:
ON DI3 ( ) GOT O *L1,*L2,*L3 . . . . . . 根据DI3 ( ) 的值跳转至*L1 ?*L3 GOTO *ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 返回*ST HALT
’SUB ROUTINE *L1:
MOVE P, P10, Z=0 GOTO *ST *L2:
DO (30) = 1 GOTO *ST *L3:
DO (30) = 0 GOTO *ST 6.WHILE~WEND
WHILE~WEND:在条件成立时,反复执行WHILE与WEND之间的语句;在条件不成立时,则跳出WHILE~WEND的循环,执行WEND的下一跳语句;在条件一次都不成立的时候,则WHILE~WEND语句则一次都不执行,直接执行WEND语句的下一条语句。 格式:WHILE<条件表达式> <命令区> WEND 例:A=0
WHILE DI3(0)=1 A=A+1
MOVE P,P1 MOVE P,P2
PRINT “COUNTER=”;A WEND NALT
错误控制指令
1.ON ERROR GOTO
ON ERROR GOTO:在发生错误时跳转到指定的标签。
含义:在执行机器人语言程序时发生了错误,不停止程序,跳转至标签指定位置处理错误例程,然后将继续执行。 格式:
1:ON ERROR GOTO <标签> 2:ON ERROR GOTO 0 例:
ON ERROR GOT O *ER1 FOR A = 0 TO 9
P [A+10] = P [A] NEXT A
*L99: HALT
’ERROR ROUTINE *ER1:
IF ERR = &H0604 THEN *NEXT1 . . . . . . . . . . . . . . . 确认是否发生了[Point doesn't exist]的错误
IF ERR = &H0606 THEN *NEXT2 . . . . . . . . . . . . . . . 确认是否发生了[Subscript out of range]的错误
ON ERROR GOT O 0 . . . . . . . . . . . . . . . . . . . . . . 显示错误并停止执行 *NEXT1:
RESUME NEXT . . . . . . . . . . . . . . . . . . . . . . 跳转至错误发生行的下一行继续执行 *NEXT2:
RESUME *L99 . . . . . . . . . . . . . . . . . . . . . . . . 跳转至标签*L99 并继续执行 2.RESUME
RESUME:错误恢复处理后恢复执行程序从。 含义:进行错误恢复处理后,恢复执行程序。 按照程序恢复启动的位置有3种方法:
(1):RESUME 从错误错误原因命令开始恢复启动程序。 (2):RESUME 从错误原因的下一个命令开始恢复启动程序。 (3) :RESUME 从显示有标签行的命令开始恢复启动程序。 格式:
1.RESUME NEXT
2.RESUME <标签>
3.ERR/ERL
ERR:获取错误编码。
ERL:获取错误发生行编码。 格式:
ERR <任务编码> ERL <任务编码>
程序控制
1.CALL
CALL:调用子过程。 含义:调用SUB~END SUB语句中定义的子过程。CALL标签中所指定的名称与SUB所定义的名称相同。
(1).在实参中指定的常量和表达式为值传递; (2).在实参中指定的变量和数组元素时为传递,如果在实参前面加上ERF则变为引用传递。
(3). 在实参中指定了所有数组(数组名后面带有 ( ) )时,将变为引用传递。
格式:CALL <标签> ( <实参>,<实参>) 例1:
X%=4 Y%=5
CALL *COMPARE ( REF X%,REF Y% ) HALT
’SUB ROUTINE: COMP ARE
SUB *COMPARE ( A%, B% ) IF A% < B% THEN TEMP%=A% A%=B% B%=TEMP% ENDIF END SUB
例2; I = 1
CALL *TEST ( I ) HALT
’SUB ROUTINE: TEST
SUB *TEST X = X + 1 IF X < 15 THEN CALL *TEST ( X ) ENDIF END SUB
2.HALT
HALT:停止程序并复位。
含义:直接停止程序并进行复位。HALT执行后重新启动程序时,程序将从一开始进行执行。
格式:HALT <表达式>/<字符串> 例:
’MAIN ROUTINE *ST :
MOVE P , P0, P1
IF DI (20) = 1 THEN GOT O *FIN ENDIF
GOT O *ST *FIN:
HALT \"PROGRAM FIN\" 3.HALTALL
HALTALL:停止并复位所有程序。
含义:直接停止并复位所有程序,当HALTALL停止复位后重新启动时,将从主程序或者任务一种最后执行的程序的最前端开始执行。 格式:HALTALL<表达式>/<字符串> 例:
’MAIN ROUTINE
*ST:
MOVE P ,P0,P1 IF DI (20) = 1 THEN GOT O *FIN ENDIF GOTO *ST *FIN:
HAL TALL “PROGRAM FIN
4.HOLD
HOLD:暂停程序。
含义:直接暂停程序。重新启动程序时,从HOLD语句的下一句开始执行。 格式:HOLD <表达式>/<字符串> 例:
’MAIN ROUTINE
*ST:
MOVE P, P0, P1 IF DI (20) =1 THEN HOLD \"PROGRAM ST OP\" ENDIF GOTO *ST HALT
5.HOLDALL
HOLDALL:暂停所有的程序。
含义:暂停所有的程序。当重新启动时,执行了HOLDALL 的程序将从语句的下
一行开始执行,其它程序则将从中断的执行行开始重新运行。 例:
SAMPLE
’MAIN ROUTINE
*ST:
MOVE P ,P0,P1 IF DI (20)=1 THEN HOLD “PROGRAM STOP” ENDIF GOTO *ST HALT
6.SWI
SWI:切换执行程序。
含义:切换执行程序,并在执行编译后从第一行开始执行。虽然切换程序时,输出变量的状态不会变化,但动态变量及数组变量将被清除。 格式:SWI <程序名>
任务控制
1.START
START:启动新的任务。
格式:
START <程序名称>, Tn , P
P Gm
m :程序编号 ...........................0 ?99 n :任务编号 ............................1 ?16 p :任务优先级 ........................1 ?64 含义:根据任务n、优先顺序p 启动指定程序。 当省略任务编号n 时,未启动任务中编号最小的任务将会被自动指定。当省略任务优先顺序p 时,将默认为32。省略了任务优先级p 时,为32。
数字越小,优先级越高;数字越大,优先级越低(高1 ~低:64)。
当任务优先级较高的任务处于RUNNING 状态时,优先级较低的任务也将保持着READY状态。 例:
START MOVE P, P0, P1 GOTO *ST HALT 程序名称:SUB_PGM *SUBPGM: ‘SUBTASK ROUTINE *SUBTASK: P100 = WHERE IF LOCZ (P100) > 10000 THEN DO (20) = 1 ELSE DO (20) = 0 ENDIF GOTO *SUBPGM EXIT TASK 2.CUT CUT:强制结束正在运行的程序和暂停运行的程序。无法结束当前任务。 格式:CUT <程序号(Tn)> 3.EXIT TASK EXIT TASK:结束当前正在执行的任务。 4.RESTART RESTART:从新启动暂停中的其他任务。 格式:RESTART<程序名称(Tn/PGm)> 例: START MOVE P, P0, P1 GOTO *ST HALT 程序名称:SUB_PGM *SUBPGM: ‘SUBTASK ROUTINE *SUBTASK: P100 = WHERE IF LOCZ (P100) > 10000 THEN DO (20) = 1 ELSE DO (20) = 0 ENDIF GOTO *SUBPGM EXIT TASK 4.SUSPEND SUSPEND:暂停正在执行中的其它任务。 时间指令 1.DATE$ DATE$:获取日期。 含义:通过yyyy/mm/dd(年/月/日)等字符串来表式日期,通过悬挂盒来显示。 例: A$=DATE$ PRINT DATE$ HALT 2.TCOUNTER TCOUNTER:定时器,计数器。 含义:从TCOUNTER复位开始计数,每隔1ms输出计数值。值计数至65535时,还回0。 例: MOVE P, P0 WAIT ARM RESET TCOUNTER MOVE P, P1 WAIT ARM A = TCOUNTER PRINT TCOUNTER . . . . . . . . . . . . . . . . . . . . . . . 在手持编程器上显示进入P0 至P1 公差为止的移动时间 3.TIME$ TIME:获取当前时间。 含义:通过hh:mm:ss(时/分/秒)形式的字符串来表示当前时间。 例: A$=TIME$ PRINT TIME$ 4.TIMER TIMER:获取当前时间。 含义:通过上午0 点开始的秒获取当前时间。 可用于程序运行时间的测量等用途。 时间的设置在系统模式的初始处理中进行。 例: A%=TIMER FOR B=1 TO 10 MOVE P, P0 MOVE P, P1 NEXT A%=TIMER-A% PRINT A%/60; \" :\" ; A% MOD 60 HALT 机器人动作指令 1.CHANGE CHANGE:切换机械手。 3.DRIVE DRIVE:以轴为单位进行绝对移动。 4.DRIVEI DRIVEI:以轴为单位进行相对移动。 5.HAND HAND:机械手定义。 6.LEFTY LEFTY:将水平多关节机器人的手系设定为左手系。 7.RIGHTY RIGHTY:将水平多关节机器人手系设定为右手系。 8.MOTOR MOTOR:控制马达电源状态。 含义:(1)ON ............开启马达电源。也可同时开启所有机器人的伺服。 (2) OFF ........... 关闭马达电源。同时关闭所有机器人的伺服,并且进行动态制动。带制动器的轴进行制动并且锁定。 (3) PWR..........仅开启马达电源。 9.SERVO SERVO: 控制伺服状态对指定机器人中指定轴或所有轴的伺服ON / OFF 状态进行 控制。 含义:控制指定编号的轴或所有轴的伺服ON / OFF。 当指定了<轴编号>时,仅以指定轴作为对象;当未指定时,则以所有全轴作为对象。 ?ON ................. 伺服使能。未指定轴时,马达电源也将开启。 ?OFF ................ 伺服禁止并启用动力制动。带有制动器的轴将进行制动并锁定。未指定轴时,马达电源也将关闭。 ?FREE .............. 伺服禁止并解除动力制动。带有制动器的轴也将解除制动。未指定轴时, 马达电源也将关闭。 例: SERVO ON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 开启所有轴的伺服。 SERVO OFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 针对关闭所有轴伺服且附带制动器的轴,其制动器将被锁定。 SERVO FREE (3) . . . . . . . . . . . . . . . . . . . . . . . . . . 第3 轴(Z 轴)伺服禁止,并解除制动。 10.MOVE MOVE:指定机器人的所有轴进行绝对移动。 11.MOVEI MOVEI:指定机器人的所有轴进行相对移动。 例: MOVEI P, P0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 主机器人轴向相对当前位置加上P0 中指定的移动量位置进行PTP 移动。 12.ORIGIN ORIGIN:执行指定机器人中轴的原点复归动作。 获取状态 1.ABSRPOS ABSRPOS:获取机器参照。 含义:计算指定机器人的指定轴的机台参考值(返回原点的方式仅 为标记方式时有效)。 格式:ABSRPOS[<机器人编号>](<轴编号>) 例: A=ABSRPOS (4)......... 将机器人1 中第4 轴的机台参考值赋给变量A。 2.ARMCND ARMCND:获取机械手的当前机械臂状态。 含义:对水平多关节型机器人赋予当前机械臂的状态。 当机械臂状态为右手系统时为1,左手系统时为2。 此函数仅在使用水平多关节型机器人时有效。 格式:ARMCND[<机器人编号>] 例: A=ARMCND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将机器人1 的当前机械臂状态赋值给变量A IF A=1 THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 右手系统状态 MOVE P, P100, Z=0 ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 左手系统状态 MOVE P, P200, Z=0 ENDIF 3.ARMSEL ARMSEL:设定/获取机械手的当前手系统选择。 含义:设定水平多关节型机器人的当前手系统选择。 当所选手系统为右手系统时为1,左手系统时为2。 此函数仅在使用水平多关节型机器人时有效。 格式:ARMSEL[<机器人编号>] <表达式> 例: A=ARMSEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 赋予机器人1 的机械臂类型值 IF A=1 THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械臂类型为右手系统 MOVE P, P100, Z=0 ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械臂类型为左手系统 MOVE P, P200, Z=0 ENDIF 4.ARMTYP ARMTYP:获取指定机器人的手系统设定。 含义:设定/ 获取程序复位时的手系统。 当所选手系统为右手系统时为1,左手系统时为2。 此函数仅在使用水平多关节型机器人时有效。 格式:ARMTYP[<机器人编号>] <表达式> 例:A=ARMTYP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 赋予机器人1 的机械臂类型值 IF A=1 THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械臂类型为右手系统 MOVE P, P100, Z=0 ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 机械臂类型为左手系统 MOVE P, P200, Z=0 ENDIF HALTALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 程序复位 5.WAIT ARM WART ARM:等待指定机器人的轴动作结束。 含义:等待<机器人编号>指定机器人的轴动作完成(定位于公差内)。 当存在<轴编号>的指定时,指定机器人的指定轴成为对象;当无指定时,指定机器 人的所有轴成为对象 <机器人编号> ...................... 1 ~ 4 <轴编号> ............................. 1 ~ 6 格式:WAIT ARM[<机器人编号>] [(<轴编号>) 例: WAIT ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 等待机器人1 的动作结束。 WAIT ARM[2](2) . . . . . . . . . . . . . . . . . . . . . . . . 等待机器人2 中第2 轴的动作结束。 6.WHERE WHERE: 通过关节坐标(脉冲)读出指定机器人机械臂的当前位置。 含义:获取机械臂当前位置(脉冲坐标)。 根据关节坐标获取<机器人编号>指定机器人的机械臂的当前位置。<机器人编号>可以省略。当进行省略时,机器人1 被指定。 例:P10=WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将当前位置的脉冲坐标值赋值给P10。 7.WHRXY WHRXY: 通过正交坐标获取机械臂当前位置。 含义:根据正交坐标获取<机器人编号>指定机器人的机械臂的当前位置。<机器人编号>可以省略。当进行省略时,机器人1 被指定。 当为YK500TW 机器人时,还要获取X 机械臂转数信息和Y 机械臂转数信 息。 例:P10=WHRXY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将机器人1 的当前位置直行坐标值赋给P10。 输入输出控制 1.DELAY DELAY:在指定时间等待程序执行。 格式:DELAY <表达式> 例: DELAY 3500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 等待3,500ms (3.5 秒) DELAY A*10 2.DO 将指定值输出至DO 端口 3.LO 将被指定值输出至LO 端口,并进行轴移动的禁止或解除 4.MO 将指定值输出至MO 端口 5.OUT 开启指定输出端口的比特,并结束命令语句 6.RESET 关闭指定输出端口的比特 7.SET 开启指定输出端口的比特 8. SO 将指定值输出至SO 端口 9. TO 将指定值输出至TO 端口 10. WAIT 等待直至DI/DO 条件表达式成立为止(带超时) 通信指令 1.ONLINE ONLINE:将通信端口设置为联机模式。 含义:更改指定端口的通信模式参数,并使通信模式联机。 (1)ETH .................................. 将Ethernet 的通信模式参数更改为联机,并清除收发缓冲区。 (2)CMU ................................. 将RS-232C 的通信模式参数更改为联机,并清除通信错误的解除与接收缓冲区。 (3)无指定 ............................. 将Ethernet 以及RS-232C 的通信模式参数变更为联机,并且解除通信错误和清除接收缓存。 格式:ONLINE ETH/CMU 例: OFFLINE SEND CMU TO A$ SEND CMU TO P10 ONLINE HALT 2.OFFLINE OFFLINE: 将通信端口设置为脱机模式。 含义:同ONLINE相同。 格式:与ONLINE相同。 2. SEND 格式:SEND <读出文件> TO <写入文件> 例:SEND \"ENTER ROBOT SPEED\" TO ETH SEND:将读取的文件的数据转发到写入文件。本语句是将\"ENTER ROBOT SPEED\"(robot的初始速度)写入ETH中。 WAIT WART: 等待<条件表达式>成立。通过<表达式>设置超时时间(单位ms)。 设置了超时时间时,即使超过了超时时间且WAIT 条件不成立时,也结束命令。最小等待执行时间为1ms,但是根据其它任务的执行情况,该时间会有所变化。 例: WAIT A=10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 等待至变量A 变为10。 WAIT DI2 ( ) =&B010101 10 . . . . . . . . . . . . . . . 等待至DI (21), (22), (24), (26) 变为开启、DI (20), (23), (25), (27) 变为关闭。 WAIT DI2 (4, 3, 2) =&B101 . . . . . . . . . . . . . . . 等待至DI (22) 与DI (24) 变为开启、DI(23) 变为关闭。 WAIT DI (31) =1 OR DO (21) =1 . . . . . . . . 等待至DI (31) 与DO (21) 中的任意一个变为开启。 WAIT DI (20) =1, 1000 . . . . . . . . . . . . . . . . . . . . . . 等待至DI (20) 变为开启 经过1 秒仍未开启时,结束命令。 机器人的多任务设置及编程: 多任务是一个并行执行多个任务(工作)的功能。 例: ’ MAIN TASK (TASK1) START *IOTASK, T2 . . . . . . . . . . . . . . . . . . . . . . . . . 将*IOTASK 作为任务2 启动 *ST1: MOVE P , P1, P0 IF DI (20) = 1 THEN HALT ENDIF GOTO *ST HALT 程序名称:SUB_PGM ’ SUB TASK (TASK2) *IOTASK: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 任务2 从此处开始。 IF DI (21) =1 THEN DO (30) =1 ELSE DO (30) =0 ENDIF GOTO *SUBPGM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 任务2 的处理至此处为止 EXIT TASK 多任务程序按照排程执行: 例: ’TASK1 START *ST2,T2 START *ST3,T3 *ST1: DO (20) = 1 WAIT MO (20) = 1 MOVE P, P1, P2, Z=0 IF MO(21) =1 THEN *FIN GOTO *ST1 *FIN: CUT T2 HALT ’TASK2 *ST2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 从此处开始为任务2 IF DI (20) = 1 MO (20) = 1 DELAY 100 ELSE MO (20) = 0 ENDIF GOTO *ST2 EXIT TASK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 任务2 至此为止 ’TASK3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 从此处开始为任务3 *ST3: IF DI (21) = 0 THEN *ST3 IF DI (30) = 0 THEN *ST3 IF DI (33) = 0 THEN *ST3 MO(21) = 1 EXIT TASK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 任务3 至此为止 多任务的数据共享: 因篇幅问题不能全部显示,请点此查看更多更全内容