YAMAHA机器人编程指令集Word格式文档下载.docx
《YAMAHA机器人编程指令集Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《YAMAHA机器人编程指令集Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
ENDSELECT结束条件选择语句
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.MOVEP,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.MOVEP,P50,Z=0.00,S=25
本语句表示以PTP移动倒是P50点位,并且Z轴抬升到0.00mm的位置,移动速度为25个脉冲单位。
普通命令
1.DIM
DIM:
声明数组变量。
注意:
最多只能声明三维数组
格式:
DIM<
数组名>
<
类型%、!
、$>
(角标)
例:
DIMA%(10)…………定义整型一维数组变量A%(0)~A%(10)的11个元素。
DIMC%(2,2),D!
(10)……….定义整型数组C%(0,0)~C%(2,2)与实数型数组D!
(0)~D!
(10)
DIMB!
(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()=&
B00101101
MO(21,20)=2
LO(00)=1
TO(01)=0
SO12()=255
(2).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).移位赋值语句
移位变量>
移位表达式>
S1=S0................................将位移0赋值给位移1
S2=S1+S0.............................将位移1与位移0分别加上每个元素,并赋值给位移2
3.REM
REM:
插入标注。
REM或"
’"
以后的字符被视作注释。
不执行注释语句。
"
也可写入行的中间。
例:
REM***MAINPROGRAM***
字符串操作
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(<
)
即:
返回<字符串表达式>中表示的字符串长度(字节数)。
B=LEN(A$)
5.MID$(BB$,L_NO%,1)
6.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
HANDH1=0150.00.0
HANDH2=–500020.000.0
P1=150.00300.000.000.000.000.00
CHANGEH2................................更改为机械手2
MOVEP,P1.................................机械手2的前端向P1移动
(1)
CHANGEH1................................更改为机械手1
MOVEP,P1.................................机械手1的前端向P1移动
(2)
HALT
2.HAND
HAND:
对指定机器人的机械手进行定义。
定义语句:
HAND[<机器人编号>]Hn=<第1参数><第2参数><第3参数>[R]
选择语句:
CHANGE[<机器人编号>]Hn
前提水平多关节机器人时
(1).未指定<
第四参数>
R时。
机械手(工装治具)是固定在基准第二机械臂前端的。
<
第一参数>
机械手n基准点与基准第二机械臂基准点之间的脉冲偏移量。
逆时针方向为+脉冲。
第二参数>
机械手n基准点与基准第二机械臂基准点之间的长度差(mm)。
第三参数>
机械手n的Z轴的偏移量(mm)。
(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
MOVEP,P1
LEFTY
5.Pn/Sn
Pn:
在程序中定义点位坐标。
Sn:
在程序中定义位移坐标。
6.SHIFT
SHIFT:
设置位移坐标。
(位移变量)
SHIFTS1
SHIFTS[A]
MOVEP,P2
分支命令
1.FOR~NEXT
FOR~NEXT:
反复执行FOR的下一条语句至NEXT的上一条语句,直至变量超过指定值为止,将跳出循环,执行下一条语句。
FOR<
控制变量>
开始值>
TO<
结束值>
[STOP<
步骤>
]
命令区>
NEXT[<
FORA=1TO10
MOVEL,P2
MOVEP,P3
PRINT“YAMAHA”;
A
NEXTA
2.GOSUB~RETURN
GOSUB~RETURN:
通过GOSUB跳转到标签子程序,并执行标签子程序,在通过RETURN返回到主程序继续执行。
MAIN
.
GOSUB<
标签>
.
HALT
RETURN
*ST:
MOVEP,P0
GOSUB*CLOSEHAND
MOVEP,P1
GOSUB*OPENHAND
GOTO*ST
’SUBROUTINE
*CLOSEHAND:
DO(20)=1
RETURN
*OPENHAND:
DO(20)=0
3.GOTO
GOTO:
无条件跳转至标签所指定的语句。
GOTO<
’MAINROUTINE
*ST:
MOVEP,P0,P1
IFDI(20)=1THEN
GOTO*FIN
ENDIF
GOTO*ST
*FIN:
4.IF
(1).IF:
更据条件分支控制流程。
IF<
条件表达式>
THEN<
命令语句>
ELSE<
MOVEP,P0,P1
IFDI(20)=1THEN*L1..........DI(20)为1时,则跳转至*L1
DO(20)=1
DELAY100
*L1:
IFDI(21)=1THEN*STELSE*FIN
..................................DI(21)为1时,则跳转至*ST。
如果不是,
则跳转至*FIN
(2).区块IF语句
条件表达式1>
THEN
命令区1>
ELSEIF<
条件表达式2>
FHEN
命令区2>
ELSE
命令区3>
IFDI(21,20)=1THEN
WAITDI(20)=0
ELSEIFDI(21,20)=2THEN
GOTO*FIN
5.ON~GOTO
ON~GOTO:
根据条件跳转至标签所指定的行。
ONDI3()GOTO*L1,*L2,*L3......根据DI3()的值跳转至*L1〜*L3
GOTO*ST..................................返回*ST
MOVEP,P10,Z=0
*L2:
DO(30)=1
*L3:
DO(30)=0
6.WHILE~WEND
WHILE~WEND:
在条件成立时,反复执行WHILE与WEND之间的语句;
在条件不成立时,则跳出WHILE~WEND的循环,执行WEND的下一跳语句;
在条件一次都不成立的时候,则WHILE~WEND语句则一次都不执行,直接执行WEND语句的下一条语句。
WHILE<
WEND
A=0
WHILEDI3(0)=1
A=A+1
PRINT“COUNTER=”;
WEND
NALT
错误控制指令
1.ONERRORGOTO
ONERRORGOTO:
在发生错误时跳转到指定的标签。
含义:
在执行机器人语言程序时发生了错误,不停止程序,跳转至标签指定位置处理错误例程,然后将继续执行。
1:
ONERRORGOTO<
2:
ONERRORGOTO0
ONERRORGOTO*ER1
FORA=0TO9
P[A+10]=P[A]
*L99:
’ERRORROUTINE
*ER1:
IFERR=&
H0604THEN*NEXT1...............确认是否发生了[Pointdoesn'
t
exist]的错误
H0606THEN*NEXT2...............确认是否发生了[Subscriptoutof
range]的错误
ONERRORGOTO0......................显示错误并停止执行
*NEXT1:
RESUMENEXT......................跳转至错误发生行的下一行继续执行
*NEXT2:
RESUME*L99........................跳转至标签*L99并继续执行
2.RESUME
RESUME:
错误恢复处理后恢复执行程序从。
进行错误恢复处理后,恢复执行程序。
按照程序恢复启动的位置有3种方法:
(1):
RESUME从错误错误原因命令开始恢复启动程序。
(2):
RESUME从错误原因的下一个命令开始恢复启动程序。
(3):
RESUME从显示有标签行的命令开始恢复启动程序。
1.RESUMENEXT
2.RESUME<
3.ERR/ERL
ERR:
获取错误编码。
ERL:
获取错误发生行编码。
ERR<
任务编码>
ERL<
程序控制
1.CALL
调用子过程。
调用SUB~ENDSUB语句中定义的子过程。
CALL标签中所指定的名称与SUB所定义的名称相同。
(1).在实参中指定的常量和表达式为值传递;
(2).在实参中指定的变量和数组元素时为传递,如果在实参前面加上ERF则变为引用传递。
(3).在实参中指定了所有数组(数组名后面带有())时,将变为引用传递。
CALL<
(<
实参>
<
例1:
X%=4
Y%=5
CALL*COMPARE(REFX%,REFY%)
’SUBROUTINE:
COMPARE
SUB*COMPARE(A%,B%)
IFA%<B%THEN
TEMP%=A%
A%=B%
B%=TEMP%
ENDSUB
例2;
I=1
CALL*TEST(I)
TEST
SUB*TEST
X=X+1
IFX<15THEN
CALL*TEST(X)
2.HALT
HALT:
停止程序并复位。
直接停止程序并进行复位。
HALT执行后重新启动程序时,程序将从一开始进行执行。
HALT<
字符串>
HALT"
PROGRAMFIN"
3.HALTALL
HALTALL:
停止并复位所有程序。
直接停止并复位所有程序,当HALTALL停止复位后重新启动时,将从主程序或者任务一种最后执行的程序的最前端开始执行。
HALTALL<
’MAINROUTINE
MOVEP,P0,P1
HALTALL“PROGRAMFIN
4.HOLD
HOLD:
暂停程序。
直接暂停程序。
重新启动程序时,