今天我们来学习一下,ZMC运动控制器SCARA机械手应用快速入门。
控制器接线参考
01 概述
SCARA(Selective Compliance Assembly Robot Arm,中文译名:选择顺应性装配机器手臂)是一种圆柱坐标型的特殊类型的工业机器人。SCARA机器人可以被制造成各种大小,最常见的工作半径在100毫米至1000毫米之间,此类的SCARA机器人的净载重量在1千克至200千克之间。SCARA系统在x,y方向上具有顺从性,而在Z轴方向具有良好的刚度,还具有串接的两杆结构的特点,适用于搬取零件和装配工作。故SCARA系统大量用于装配印刷电路板、电子零部件、集成电路板,此外,塑料、汽车、电子产品、药品和食品等工业领域也有广泛的应用。
ZMC运动控制器具有6轴、12轴、20轴、30轴、32轴、60轴、64轴等不同电机轴数的产品,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置、机械手指令等。本文使用ZMC运动控制器,介绍机械手指令CONNFRAME,在SCARA机械手的应用。
ZMC运动控制器采用简单易懂的BASIC程序来二次开发机械手程序,支持多文件多任务运行,支持自定义指令,同时提供了强大的ZDevelop开发环境,支持PC仿真运行和在线跟踪调试,兼容VC的操作习惯,使得复杂的运动控制变得简单明了。运动控制器的机械手程序也可以使用常见的PC上位机开发软件,例如VC、VB、VS、C++、C#等,根据不同的开发环境,在正运动官网下载PC函数库编程资料,找到对应的dll连接库以及相关文件,编程中使用 ZAux_ Direct_Connframe 和 ZAux_ Direct_Connreframe 指令建立机械手连接。
CONNFRAME指令使得在SCARA机械手运动的实现,在编程上简易、方便;在运动过程中电机运动平滑、精准;客户对ZMC产品性能及品质得到了一致认可,正运动技术也会对不同客户的不同需求定制特殊的指令及控制器型号。
02 系统架构
01 SCARA 机械手
SCARA机械手支持2-4轴,大关节轴+小关节轴 [+Z 轴] [+末端旋转轴]。
本系统应用于标准4轴SCARA机械手,2个关节轴X,Y,一个上下Z轴,及一个末端旋转轴R。控制器需要支持机械手功能,采用脱机的方式将编辑好的程序下载到控制器上(也可以用PC监视或者实时发送指令操作),可利用触摸屏示教的方式编辑想要运动的轨迹。
02 ZMC 运动控制器
ZMC406总线控制器是正运动技术推出的新一代网络6轴运动控制器(可通过扩展模块来扩展轴,支持多达32轴),自带6个脉冲轴接口。
支持RS232,RS485,以太网,U盘,CAN, EtherCAT通讯接口。EtherCAT高达500us的刷新周期。通过EtherCAT总线,最多可扩展4096个隔离输入或输出口。输出口输出电流可达 300mA,可直接驱动部分电磁阀。每轴输出脉冲频率可达10MHz。采用优化的网络通讯协议可以实现实时的运动控制。支持编码器位置测量,可以配置为手轮输入模式。单台电脑支持多达256个ZMC控制器同时连接。
此运动控制器与PCI运动控制卡相比
具有如下优点:
1 不使用插槽,稳定性更好;
2 可以选用MINI电脑或ARM工控电脑,降低整体成本;
3 控制器直接做接线板使用,节省空间;
4 控制器上可以并行运行程序,与PC只需要简单交互,降低PC软件的复杂性等优势。
ZMC控制器通过 ZDevelop开发环境来调试,ZDevelop 是一个很方便的编程、编译和调试环境。ZDevelop 可以通过串口、485、USB 或以太网与控制器建立连接。
应用程序可以使用 VC,VB,VS,C++Builder,C#等软件来开发。调试时可以把 ZDevelop 软件同时连接到控制器,程序运行时需要动态库 zmotion.dll。
03 实现方案
方案采用正运动ZMC406型号控制器,实现了SCARA机械手精准、平滑的运动。
在支持机械手功能的控制平台上,通过指令建立机械手实际关节轴与虚拟轴的连接,给虚拟轴发送运动控制指令,通过机械手算法自动计算关节轴的运动路径,从而控制关节轴运动。
将机械手上的关节轴依次接到控制器的脉冲轴接口上。
01 机械手相关概念
1)关节轴与虚拟轴
关节轴
关节轴是指实际机械结构中的旋转关节,在程序中一般显示旋转角度(某些结构也是平移轴)。
由于电机与旋转关节会存在减速比,所以设置UNITS时要按照实际关节旋转一圈来设置,同时TABLE中填写结构参数时也要按照旋转关节中心计算,而不是按照电机轴中心计算。
虚拟轴
虚拟轴不是实际存在的,抽象为世界坐标系的6个自由度,依次为X、Y、Z、RX、RY、RZ。可以理解为直角坐标系的三个直线轴和三个旋转轴,用来确定机械手末端工作点的加工轨迹与坐标。
2)正解运动与逆解运动
正解
通过操作关节坐标,再根据机械结构参数可以计算出末端位置在直角坐标系的空间位置,这个过程称为正解运动,此时操作的是实际关节轴,虚拟轴自动计算坐标。
控制器使用CONNREFRAME指令建立正解模式,此指令作用在虚拟轴上,此时只能操作关节轴,关节轴也可以做各种运动,但实际运动的轨迹不是直线圆弧,正解模式一般用于手动调整关节位置或上电点位回零。
逆解
给定一个直角坐标系中的空间位置,反推出各关节轴坐标,这个过程称为逆解运动,此时操作的是虚拟轴,实际关节轴自动解算坐标并运动。
控制器使用CONNFRAME指令建立逆解模式,此指令作用在关节轴上,此时只能操作虚拟轴,对虚拟轴发送运动指令,可以在笛卡尔坐标系中做直线,圆弧,空间圆弧等运动,关节轴在CONNFRAME的作用下会自动运动到逆解后的位置。
02 机械手指令
实现指令:CONNFRAME--建立逆解连接
描述:将当前关节坐标系的目标位置与虚拟坐标系的位置关联;关节坐标系的运动最大速度受SPEED参数的限制;当关节轴告警等出错时,此运动会被CANCEL。
语法:CONNFRAME(frame,tablenum,viraxis0,viraxis1)
frame:坐标系类型,1-scara,(如需针对特殊的机械手类型定制,请联系厂家)。
tablenum:存储转换参数的TABLE位置,frame=1时,以此存放:第一个关节轴长度,第二个关节轴长度,第一个关节轴一圈脉冲数,第二个关节轴一圈脉冲数。
viraxis0:虚拟坐标系第一个轴
viraxis1:虚拟坐标系第二个轴
实现指令:CONNREFRAME--建立正解连接
描述:将虚拟轴的坐标与关节轴的坐标关联,关节轴运动后,虚拟轴自动走到相应的位置。
语法:CONNREFRAME(frame,tablenum,viraxis0,viraxis1)
frame: 坐标系类型, 1- scara,(如需针对特殊的机械手类型定制,请联系厂家)。
tablenum: 存储转换参数的TABLE位置,frame=1时,以此存放:第一个关节轴长度,第二个关节轴长度,第一个关节轴一圈脉冲数,第二个关节轴一圈脉冲数。
axis0:关节坐标系第一个轴
axis1:关节坐标系第二个轴
FRAME描述:Frame = 1,SCARA,如下图,旋转轴为关节轴,末端对应位置为虚拟的位置。
03 机械手使用操作步骤
1)确认电机转向是否正确。
电机方向及角度范围定义,各关节电机正向如下图蓝色箭头所示。
2)确认机械手各关节轴对应到控制器指令参数的轴次序。
选择各个关节轴轴号和对应的虚拟轴轴号。
3) TABLE中设置好机械结构相关参数。
建立机械手连接时,需要将机械结构参数按照如下次序依次填写到 TABLE数组中。
4)设置关节轴参数及虚拟轴参数
各轴的轴类型和脉冲当量要设置正确。机械手的所有虚拟轴和关节轴的长度单位要求统一,一般都是 mm单位。
虚拟轴的UNITS跟实际发送脉冲数无关,用于设置运动精度,虚拟轴的一个 mm的脉冲数一般建议设置为1000,表示精度为小数点后3位。
5)移动各关节轴到规定的零点位置。
机械手算法建立时,需要有个零点位置作为参考,同时需要确定好电机转向。
SCARA的零点位置为两个关节轴的零点时成一条直线,此时指向虚拟 X 轴的正向。
坐标方向:当关节轴为0零点的位置时,虚拟轴零点的坐标为(L1+L2,0),上下伸缩轴零点位置无特殊要求。
建立逆解连接之后虚拟轴的DPOS坐标自动校正为(L1+L2,0)。
6)使用CONNREFARME指令建立正解模式。
正解模式:
BASE(Viraxis_x, Viraxis_y, [Viraxis_v] [,Viraxis_z])
CONNREFRAME(1,tablenum, Axis_a,Axis_b[, Axis_c][,Axis_d])
WAIT LOADED
建立成功后,虚拟轴MTYPE将显示为34,IDLE显示为0。此时只能操作关节轴在关节坐标系中运动,虚拟轴会自动计算末端工作点位于直角坐标系中的位置。
7)操作关节轴调整机械手姿态,确认在运动中不会发生干涉(某些结构只有一个姿态)。
机械手姿态在数学上来说,是同一组虚拟轴数值有多组关节轴的解。即机械手在笛卡尔坐标系中运动到某一坐标点A,可以有多种运动轨迹,这些运动轨迹就对应着不同姿态。
SCARA机械手有两个姿态,左手姿态和右手姿态,只可在正解模式下移动关节轴选择。
当前姿态通过指令FRAME_STATUS指令查询。
在逆解模式下运行时,由于机械结构的问题,会产生无法运动到某一位置或刚体干涉的问题,此时就需要进行姿态的调整。
机械手姿态只能在正解模式下操作关节轴进行调整。
8)使用 CONNFARME 指令切换为逆解模式。
逆解模式:
BASE(Axis_a, Axis_b [,Axis_c] [,Axis_d])
CONNFRAME(1,tablenum, Viraxis_x, Viraxis_y, [Viraxis_v] [,Viraxis_z]) WAIT LOADED
建立成功后,关节轴 MTYPE 将显示为 33,IDLE 显示为 0。此时只能操作虚拟轴在直角坐标系中运动,关节轴会自动计算在关节坐标系中如何联合运动。
9) 选择虚拟轴,发送运动指令使用。
BASE(Viraxis_x, Viraxis_y[,Viraxis_v] [,Viraxis_z])
MOVE(dis_x, dis_y [,dis_v] [,dis_z])
04 应用例程
例如在某自动焊接设备上加工如下图所示的工件,SCARA机械手的2个关节轴L1、L2长均为250,需要焊接的轨迹为跑道型,1为初始零点,此时关节轴坐标为(0,0),虚拟轴坐标为(500,0)。
由零点运动到起始加工点,在运动第2段时需要起焊,关节轴先回到起始位置然后运动到工件上方同时Z轴下降,打开起焊IO,延时50ms(因为焊接的液体打开需要一定时间,否则起始点处会漏焊),然后按轨迹运行。完成跑道焊接后IO关闭,Z轴上升。
加工指令代码:
BASE(6,7,8) '启动逆解连接后,使用运动指令控制虚拟轴运行
MOVEABS(300,0,20) '第1段直线,从零点(500,0,0)运动到(300,0,20)
MOVE_OP(0,1) '打开起焊IO
MOVE_DELAY(50) '延时50ms
MOVEABS(300,100,20) '第2段直线,从起始焊接点(300,0,20)运动到(300,100,20)
MOVECIRCABS(200,100,250,100,0) '第3段圆弧,(300,100,20)运动到(200,100,20)
MOVEABS(200,-100,20) '第4段直线,从(200,100,20)运动到(200,-100,20)
MOVECIRCABS(300,-100,250,-100,0) '第5段圆弧,(200,-100,20)运动到(300,-100,20)
MOVEABS(300,0,20) '第6段直线,从(300,-100,20)运动到(300,0,20)
MOVE_OP(0,0) '加工完成,关闭IO
MOVEABS(300,0,50) 'Z轴上升
示波器采样轨迹:
SCARA机械手应用例程如下:
'**********电机、机械手参数定义**********
DIM L1 '大臂长度
DIM L2 '小臂长度
DIM L3 'X方向偏移
DIM ZDis '旋转轴一圈,z轴移动距离
L1=250
L2=250
L3=0
ZDis=0
DIM u_m1 '电机1一圈脉冲数
DIM u_m2 '电机2一圈脉冲数
DIM u_mz '电机z一圈脉冲数
DIM u_mv '电机v一圈脉冲数
u_m1=3600
u_m2=3600
u_mz=3600
u_mv=3600
DIM i_1 '关节1传动比
DIM i_2 '关节2传动比
DIM i_z '关节z传动比
DIM i_v '关节v传动比
i_1=2
i_2=2
i_z=2
i_v=2
DIM u_j1 '关节1实际一圈脉冲数
DIM u_j2 '关节2实际一圈脉冲数
DIM u_jz '关节z实际一圈脉冲数
DIM u_jv '关节v实际一圈脉冲数
u_j1=u_m1*i_1
u_j2=u_m2*i_2
u_jz=u_mz*i_z
u_jv=u_mv*i_v
DIM p_z 'z轴螺距
p_z=1.5
'*************关节轴设置*************
BASE(0,1,2,3) '选择关节轴号
ATYPE=1,1,1,1 '轴类型设为脉冲轴
UNITS=u_j1/360,u_j2/360,u_jv/360,u_jz/p_z '把z轴units设成1mm的脉冲数,其余轴设成1°的脉冲数
DPOS=0,0,0,0 '设置关节轴的位置,此处要根据实际情况来修改。
SPEED=100,100,100,100 '速度参数设置
ACCEL=1000,1000,1000,1000
DECEL=1000,1000,1000,1000
CLUTCH_RATE=0,0,0,0 '使用关节轴的速度和加速度限制
'*************虚拟轴设置*************
BASE(6,7,8,9)
ATYPE=0,0,0,0 '设置为虚拟轴
TABLE(0,L1,L2,u_j1,u_j2,u_jv, L3,ZDis) '根据手册说明填写参数
UNITS=1000,1000 ,u_jv/360,1000 '运动精度,要提前设置,中途不能变化
SPEED=200,200,200,200 '速度参数设置
ACCEL=1000,1000,1000,1000
DECEL=1000,1000,1000,1000
SRAMP=100,100,100,100 'S曲线
MERGE=ON '开启连续插补
CORNER_MODE=2 '启动拐角减速
DECEL_ANGLE=15*(PI/180) '开始减速的角度 15度
STOP_ANGLE=45*(PI/180)'降到最低速度的角度45度
'*************建立机械手连接*************
WHILE 1
IF SCAN_EVENT(IN(0))>0 THEN '输入0上升沿触发
'建立正解,操作关节轴调整机械手姿态
BASE(6,7,8,9) '选择虚拟轴号
CONNREFRAME(1,0,0,1,2,3) '第0/1轴作为关节轴,启动正解连接。
WAIT LOADED '等待运动加载
?'正解模式'
ELSEIF SCAN_EVENT(IN(0))<0 THEN '输入0下降沿触发
'建立逆解,操作虚拟轴运行加工程序
BASE(0,1,2,3) '选择关节轴号
CONNFRAME(1,0,6,7,8,9) '第6/7轴作为虚拟的XY轴,启动逆解连接。
WAIT LOADED '等待运动加载,此时会自动调整虚拟轴的位置。
?'逆解模式'
BASE(6,7,8) '启动逆解连接后,使用运动指令控制虚拟轴运行
TRIGGER
MOVEABS(300,0,20) '第1段直线,从零点(500,0,0)运动到(300,0,20)
MOVE_OP(0,1) '打开起焊IO
MOVE_DELAY(50) '延时50ms
MOVEABS(300,100,20) '第2段直线,从起始焊接点(300,0,20)运动到(300,100,20)
MOVECIRCABS(200,100,250,100,0) '第3段圆弧,(300,100,20)运动到(200,100,20)
MOVEABS(200,-100,20) '第4段直线,从(200,100,20)运动到(200,-100,20)
MOVECIRCABS(300,-100,250,-100,0) '第5段圆弧,(200,-100,20)运动到(300,-100,20)
MOVEABS(300,0,20) '第6段直线,从(300,-100,20)运动到(300,0,20)
MOVE_OP(0,0) '加工完成,关闭IO
MOVEABS(300,0,50) 'Z轴上升
ENDIF
WEND
05 机械手仿真软件
将程序下载到控制器运行,建立正解或逆解连接之后,打开正运动机械手仿真软件ZRobotView,点击“连接”弹出下方窗口,选择控制器IP,没有控制器可连接到仿真器查看效果。
选择控制器IP之后连接即可显示出如下机械手模型,此时可运行运动指令或手动调试,查看机械手的运行情况。
《ZMC运动控制器SCARA机械手应用快速入门》就讲到这里