您的当前位置:首页正文

YAMAHA机器人编程指令集

2022-12-23 来源:好走旅游网
1.SEND \"ENTER ROBOT SPEED\" TO ETH

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 ,T2,33 *ST:

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 ,T2,33 *ST:

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 至此为止

多任务的数据共享:

因篇幅问题不能全部显示,请点此查看更多更全内容