NO:YAMAHARCX340常用指令讲解讲师:邵宗超常用指令讲解1变量、函数讲解22目录编程实例3YAMAHA-RCX的编程语言程序名命名规则:1、采用长度32字符以内的字母数字与下划线(_)的组合表示2、不可重复起名3、特殊含义不可使用SEQUENCE、COMMONWAITARM等待机械手移动到公差范围内4雅马哈常用变量和函数变量:YAMAHA控制器中的数据变量分为两种:动态变量和静态变量静态变量是控制器系统分配,控制器分配8个整形静态变量SGIn(n=0~7)和8个实型静态变量SGRn(n=0~7)。静态变量数据可以掉电保存。动态变量由用户定义,由类型的不同又分为整形变量,实型变量和字符串变量。动态变量定义:NG!=0.0定义一个实型变量,NG位变量名,!表示变量类型为实型数据%表示为整形变量$表示为字符串变量例:NA%=5NG!=5.0DATA$=“PAIZHAO”变量类型A!浮点型A$字符型A%整形变量无类型声明字符时,将识别为实数型变量变量名1使用英文字母、数字、下划线(_)中的任意一个。不包括特殊符号2长度最多为16个字符(超过16个字符的部分将被舍去)。3第一个字符必须以英文字母起始。雅马哈常用变量和函数定义标签*XXX:1第一个字符必须以英文字母或数字起始。2使用英文字母、数字、下划线(_)中的任意一个。不包括特殊符号。3长度最多为32个字符(超过32个字符的部分将被舍去)。4必须“*”开始”“:”结束vGOTO*L跳转注释REM或’以后的文字被识别为注释。雅马哈常用变量和函数7雅马哈常用指令使用常用移动指令1.MOVE绝对位置移动命令MOVE表达式1,表达式2,(表达式3,表达式4,…….)表达式1:移动方式P点到点移动L直线插补C圆弧插补表达式2:目标点位样例:MOVEP,P1从当前位置点到点移动到P1点MOVEL,P1从当前位置直线移动到点P1点MOVEC,P1,P2从当前位置经P1圆弧移动到P2点门形移动:MOVEP,P1,Z=0.0变更速度:MOVEP,P1,S=20门形加变更速度:MOVEP,P1,Z=0.0,S=20遇到条件停止运行:MOVEP,P1,Z=0.0,STOPONDI(21)=08雅马哈常用指令使用常用移动指令2.DRIVE单轴执行绝对位置移动命令DRIVE表达式1,表达式2,(表达式3,表达式4,…….)表达式1:指定移动的轴号表达式2:目标点位样例:DRIVE(3,0.0)第三轴移动到0.0位置DRIVE(3,P1)第三轴移动到P1点Z轴位置变更速度:DRIVE(3,P1),S=20遇到条件停止运行:DRIVE(3,P1),STOPONDI(21)=0水平多关节机械手一二轴的单轴移动只能是脉冲坐标不能是直角坐标错误:DRIVE(1,0.0)正确:DRIVE(1,0)9雅马哈常用指令使用常用移动指令3.手系切换指令将水平多关节机器人的手系统设置为左手系统/将水平多关节机器人的手系统设置为右手系统LEFTY/RIGHTY格式:LEFTY[<机器人编号>]RIGHTY[<机器人编号>]例:RIGHTY..................................将机器人1设置为右手系统MOVEP,P1LEFTYMOVEP,P1RIGHTYHALT10雅马哈常用指令使用常用移动指令4.设定/获取程序复位时机器人手系统格式:ARMTYP[<机器人编号>]<表达式>例1:ARMTYP[2]2..............................将机器人2的手系统设定为左手系统例2:A=ARMTYP.................................赋予机器人1的机械臂类型值IFA=1THEN...............................机械臂类型为右手系统MOVEP,P100,Z=0ELSE..................................机械臂类型为左手系统MOVEP,P200,Z=0ENDIFHALTALL..................................程序复位11雅马哈常用指令使用常用移动指令5.托盘指令:PDEF托盘定义指令PDEF(表达式1)=表达式2,表达式3,表达式4表达式1:托盘编号,240提供0~1920个托盘编号表达式2:P[1]-P[2]之间产品个数表达式3:P[1]-P[3]之间产品个数表达式4:P[1]-P[5]之间产品个数样例:PDEF(0)=4,4,1定义托盘0为4*4*1托盘12雅马哈常用指令使用常用移动指令6.PMOVE移动到托盘中的点位PMOVE托盘编号,托盘点编号,(表达式1,表达式2,…….)样例:PMOVE(0,2)移动到托盘0第2点PMOVE(0,NA%),Z=0.0门形移动到托盘0第NA%点PMOVE(0,NA%),Z=0.0,S=20注意:应用PMOVE指令前先应该对托盘进行定义13雅马哈常用指令使用IO控制指令7.SETSETDO(20),100(开启DO(20)端口输出,可选时间)DO(20)=1例:SETDO2().................................DO(27〜20)开启SETDO2(6,5,1),200..................DO(26,25,21)开启200msSETDO(37,35,27,20)................DO(37,35,27,20)开启14雅马哈常用指令使用IO控制指令8.RESETRESETDO(20),100(开启DO(20)端口输出,可选时间)DO(20)=1例:SETDO2().................................DO(27〜20)开启SETDO2(6,5,1),200..................DO(26,25,21)开启200msSETDO(37,35,27,20)................DO(37,35,27,20)开启9.DELAY根据指定时间量等待后,进入下一个步序DELAY1000(单位:MS)15雅马哈常用指令使用IO输入指令10.WAIT等待条件表达式成立WAIT<条件表达式>[,<表达式>]WAITARM等待机械手移动到公差范围内例:WAITA=10......................................等待至变量A变为10WAITDI2()=&B01010110...............等待至DI(21),(22),(24),(26)变为开启、DI(20),(23),(25),(27)变为关闭WAITDI2(4,3,2)=&B101...............等待至DI(22)与DI(24)变为开启、DI(23)变为关闭WAITDI(31)=1ORDO(21)=1........等待至DI(31)与DO(21)中的任意一个变为开启WAITDI(20)=1,1000......................等待至DI(20)变为开启经过1秒仍未开启时,结束命令16雅马哈常用指令使用IO输入指令11.IF条件判断指令(简单条件判断)IF条件判断表达式THEN条件为真处理方式ELSE条件为假处理方式ENDIF样例:IFDI(20)=1THEN*ST01IFDI(20)=1THENMOVEP,P1,Z=0.0ELSEMOVEP,P2,Z=0.0ENDIF17雅马哈常用指令使用IO输入指令IF条件判断指令(块条件判断)IF条件判断表达式1THEN条件为真处理方式ELSEIF条件判断表达式2THEN条件为真处理方式ELSEIF条件判断表达式3THEN条件为真处理方式ELSE其他条件处理方式ENDIF样例:IFDI(20)=1THENMOVEP,P1,Z=0.0ELSEIFDI(21)=1THENMOVEP,P2,Z=0.0ELSEIFDI(22)=1THENMOVEP,P3,Z=0.0ELSEMOVEP,P0,Z=0.0ENDIF18雅马哈常用指令使用IO输入指令12.SELECTCASE〜ENDSELECT执行由表达式的值指定的命令区SELECT[CASE]<表达式>CASE<表达式的列表1>[命令区1][CASE<表达式的列表2>[命令区2]:[CASEELSE[命令区n]]ENDSELECT样例:WHILE–1SELECTCASEDI3()CASE1,2,3CALL*EXEC(1,10)CASE4,5,6,7,8,9,10CALL*EXEC(11,20)CASEELSECALL*EXEC(21,30)ENDSELECTWENDHALT选择DI30-37的值,等于1,2,3时调用子程序*EXEC(1,10);等于4-10时调用*EXEC(11,20);等于其他时调用*EXEC(21,30)例2:SELECTCASEDI2(6,4,2,1)选择DI21,22,24,26CASE1等于1时SWIkaishi选择程序kaishiENDSELECT结束选择GOSUB*L1跳转至子程序*L1……*L1:标签*L1RETURN结束START*ZT,T2启动多任务*ZT*ZT:IFDI2(5)=1THEN如果DI25=1时HALT/HOLD停止ENDIFGOTO*ZTCUTT2RESTARTT2雅马哈常用指令使用20雅马哈常用变量和函数函数:1)算术函数:+-*/^如:NA%=NB%+10;NA%=NB%+10*NC%;NB%=NA%^2应用在移动指令中的算术运算:MOVEP,P[10+NA%]MOVEP,P10-P5;P10=P5-P62)三角函数:NN!=SIN(NB!);NN!=NA!*SIN(NB!)+NC!*COS(ND!)注意:三角函数中的角度都必须是弧度制的角度3)DEGRAND(表达式)将表达式的值转化为弧度如:NA!=SIN(DEGRAND(NB!))4)SQR(表达式)对表达式中数据进行开方5)ABS(表达式)求表达式中数据的绝对值6)ARMCND读取SCARA机械手的手势如:NA%=ARMCNDNA%=1为左手手势NA%=0为右手手势21雅马哈常用变量和函数函数:7)TIMER读取当前系统时间以秒为单位,可用于测算机械手运动时间如:NA%=TIMER记录机器动作前时间机械手移动动作NA%=TIMER-NA%计算时间差机器动作后时间减去机器动作时间PRINT“NA%=“,NA%打印时间差8)VAL(字符串表达式)将字符串表达式转换为数值如:NA%=VAL(“123456”)DATA$=“123456”;NA%=VAL(DATA$)9)WHERE获取机械臂当前位置(脉冲坐标)JTOXY轴单位制转换(脉冲→毫米)P10=JTOXY(WHERE)‘获取当前的位置22雅马哈常用变量和函数函数:10)字符串函数:MID$(字符串表达式,表达式1,表达式2)如:NN$=MID$(DATA$,5,5)将DATA$字符串第5个字符开始连续5字符串组成的新字符串赋值给字符串变量NN$若DATA$=“ASDFGHJKL”则NN$=“GHJKL”23雅马哈常用变量和函数函数:11)坐标点函数:PPNT$(托盘编号,托盘点编号)将对应托盘编号中的点位坐标计算出来如:P10=PPNT(1,24)将托盘编号1托盘点编号24的坐标数据赋值到P1012)WHRXY读取当前机械手的直角坐标如:P0=WHRXY读取机械手当前直角坐标并赋值到P0v13)LOCx设定/获取坐标点数据LOCX(P10)=A(1).......................将P10的第1轴数据变更为数组A(1)的值。LOCY(S1)=B..............................将S1的第2轴数据变更为B的值。A(1)=LOCX(P10).......................将P10的第1轴数据赋给数组A(1)。B(2)=LOCX(S1).........................将S1的第1元