ZMC运动控制器SCARA机械手应用快速入门
ZMC运动控制器SCARA机械手应用快速入门
点击上方“正运动小助手”,随时关注新动态!
ZMC运动控制器SCARA机械手应用快速入门
今天我们来学习一下,ZMC运动控制器SCARA机械手应用快速入门。
|
材料准备 |
|
|
1 |
电脑1台 |
|
2 |
ZMC406控制器1个 |
|
3 |
24V直流电源1个 |
|
4 |
SCARA机械手一台 |
|
5 |
控制器接线端子若干 |
|
6 |
网线若干 |
|
7 |
连接线若干 |
|
另 |
IO设备、扩展模板等根据需求选用 |
控制器接线参考
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产品性能及品质得到了一致认可,正运动技术也会对不同客户的不同需求定制特殊的指令及控制器型号。
SCARA机械手支持2-4轴,大关节轴+小关节轴 [+Z 轴] [+末端旋转轴]。
支持RS232,RS485,以太网,U盘,CAN, EtherCAT通讯接口。EtherCAT高达500us的刷新周期。通过EtherCAT总线,最多可扩展4096个隔离输入或输出口。输出口输出电流可达 300mA,可直接驱动部分电磁阀。每轴输出脉冲频率可达10MHz。采用优化的网络通讯协议可以实现实时的运动控制。支持编码器位置测量,可以配置为手轮输入模式。单台电脑支持多达256个ZMC控制器同时连接。
ZMC控制器通过 ZDevelop开发环境来调试,ZDevelop 是一个很方便的编程、编译和调试环境。ZDevelop 可以通过串口、485、USB 或以太网与控制器建立连接。
应用程序可以使用 VC,VB,VS,C++Builder,C#等软件来开发。调试时可以把 ZDevelop 软件同时连接到控制器,程序运行时需要动态库 zmotion.dll。
方案采用正运动ZMC406型号控制器,实现了SCARA机械手精准、平滑的运动。
在支持机械手功能的控制平台上,通过指令建立机械手实际关节轴与虚拟轴的连接,给虚拟轴发送运动控制指令,通过机械手算法自动计算关节轴的运动路径,从而控制关节轴运动。
关节轴
关节轴是指实际机械结构中的旋转关节,在程序中一般显示旋转角度(某些结构也是平移轴)。
由于电机与旋转关节会存在减速比,所以设置UNITS时要按照实际关节旋转一圈来设置,同时TABLE中填写结构参数时也要按照旋转关节中心计算,而不是按照电机轴中心计算。
虚拟轴
虚拟轴不是实际存在的,抽象为世界坐标系的6个自由度,依次为X、Y、Z、RX、RY、RZ。可以理解为直角坐标系的三个直线轴和三个旋转轴,用来确定机械手末端工作点的加工轨迹与坐标。
2)正解运动与逆解运动
正解
通过操作关节坐标,再根据机械结构参数可以计算出末端位置在直角坐标系的空间位置,这个过程称为正解运动,此时操作的是实际关节轴,虚拟轴自动计算坐标。
控制器使用CONNREFRAME指令建立正解模式,此指令作用在虚拟轴上,此时只能操作关节轴,关节轴也可以做各种运动,但实际运动的轨迹不是直线圆弧,正解模式一般用于手动调整关节位置或上电点位回零。
逆解
给定一个直角坐标系中的空间位置,反推出各关节轴坐标,这个过程称为逆解运动,此时操作的是虚拟轴,实际关节轴自动解算坐标并运动。
描述:将当前关节坐标系的目标位置与虚拟坐标系的位置关联;关节坐标系的运动最大速度受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,如下图,旋转轴为关节轴,末端对应位置为虚拟的位置。
电机方向及角度范围定义,各关节电机正向如下图蓝色箭头所示。
|
轴 |
角度或移动范围 |
|
大关节轴 |
(-2π,2π) |
|
小关节轴 |
(-2π,2π) |
|
末端旋转轴 |
无限制 |
|
上下伸缩轴 |
机械结构限制 |
2)确认机械手各关节轴对应到控制器指令参数的轴次序。
选择各个关节轴轴号和对应的虚拟轴轴号。
|
实际机械手关节轴: |
定义简写: |
|
大关节轴电机 |
Axis_a |
|
小关节轴电机 |
Axis_b |
|
末端旋转轴电机 |
Axis_c |
|
上下伸缩轴电机 |
Axis_d |
|
直角坐标系虚拟轴: |
定义简写: |
|
平移轴 X |
Viraxis_x |
|
平移轴 Y |
Viraxis_y |
|
旋转轴 RZ |
Viraxis_v |
|
平移轴 Z |
Viraxis_z |
建立机械手连接时,需要将机械结构参数按照如下次序依次填写到 TABLE数组中。
|
TABLE(tablenum, L1,L2, Pules1OneCircle, Pules2OneCircle,[Pules3OneCircle,L3] [,ZDis]) |
|
|
Tablenum |
存储转换参数的 TABLE索引地址 |
|
L1 |
大关节轴旋转中心到小关节轴旋转中心的距离 |
|
L2 |
小关节轴旋转中心到末端旋转轴的旋转中心距离 |
|
Pules1OneCircle |
大关节旋转一圈的脉冲数 |
|
Pules2OneCircle |
小关节旋转一圈的脉冲数 |
|
Pules3OneCircle |
末端旋转轴旋转一圈的脉冲数 |
|
L3 |
末端旋转轴旋转中心到末端工作点的距离 |
|
ZDis |
末端旋转轴旋转一圈,伸缩轴移动的距离 |
4)设置关节轴参数及虚拟轴参数
各轴的轴类型和脉冲当量要设置正确。机械手的所有虚拟轴和关节轴的长度单位要求统一,一般都是 mm单位。
虚拟轴的UNITS跟实际发送脉冲数无关,用于设置运动精度,虚拟轴的一个 mm的脉冲数一般建议设置为1000,表示精度为小数点后3位。
|
轴 |
ATYPE轴类型 |
UNITS脉冲当量 |
|
Axis_a |
根据当前轴的类型设置 1或4或7或65或50 |
Pules1OneCircle/360 |
|
Axis_b |
Pules2OneCircle/360 |
|
|
Axis_c |
Pules3OneCircle/360 |
|
|
Axis_d |
伸缩轴移动 1MM 的脉冲数 |
|
|
Viraxis_x |
0(虚拟轴类型) |
1000 |
|
Viraxis_y |
1000 |
|
|
Viraxis_v |
Pules3OneCircle/360 |
|
|
Viraxis_z |
1000 |
5)移动各关节轴到规定的零点位置。
机械手算法建立时,需要有个零点位置作为参考,同时需要确定好电机转向。
SCARA的零点位置为两个关节轴的零点时成一条直线,此时指向虚拟 X 轴的正向。
坐标方向:当关节轴为0零点的位置时,虚拟轴零点的坐标为(L1+L2,0),上下伸缩轴零点位置无特殊要求。
建立逆解连接之后虚拟轴的DPOS坐标自动校正为(L1+L2,0)。
正解模式:
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])
例如在某自动焊接设备上加工如下图所示的工件,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) '打开起焊IOMOVE_DELAY(50) '延时50msMOVEABS(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) '加工完成,关闭IOMOVEABS(300,0,50) 'Z轴上升
示波器采样轨迹:
'**********电机、机械手参数定义**********DIM L1 '大臂长度DIM L2 '小臂长度DIM L3 'X方向偏移DIM ZDis '旋转轴一圈,z轴移动距离L1=250L2=250L3=0ZDis=0DIM u_m1 '电机1一圈脉冲数DIM u_m2 '电机2一圈脉冲数DIM u_mz '电机z一圈脉冲数DIM u_mv '电机v一圈脉冲数u_m1=3600u_m2=3600u_mz=3600u_mv=3600DIM i_1 '关节1传动比DIM i_2 '关节2传动比DIM i_z '关节z传动比DIM i_v '关节v传动比i_1=2i_2=2i_z=2i_v=2DIM u_j1 '关节1实际一圈脉冲数DIM u_j2 '关节2实际一圈脉冲数DIM u_jz '关节z实际一圈脉冲数DIM u_jv '关节v实际一圈脉冲数u_j1=u_m1*i_1u_j2=u_m2*i_2u_jz=u_mz*i_zu_jv=u_mv*i_vDIM 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,1000DECEL=1000,1000,1000,1000CLUTCH_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,1000DECEL=1000,1000,1000,1000SRAMP=100,100,100,100 'S曲线MERGE=ON '开启连续插补CORNER_MODE=2 '启动拐角减速DECEL_ANGLE=15*(PI/180) '开始减速的角度 15度STOP_ANGLE=45*(PI/180) '降到最低速度的角度45度'*************建立机械手连接*************WHILE 1IF 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) '启动逆解连接后,使用运动指令控制虚拟轴运行TRIGGERMOVEABS(300,0,20) '第1段直线,从零点(500,0,0)运动到(300,0,20)MOVE_OP(0,1) '打开起焊IOMOVE_DELAY(50) '延时50msMOVEABS(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) '加工完成,关闭IOMOVEABS(300,0,50) 'Z轴上升ENDIFWEND
将程序下载到控制器运行,建立正解或逆解连接之后,打开正运动机械手仿真软件ZRobotView,点击“连接”弹出下方窗口,选择控制器IP,没有控制器可连接到仿真器查看效果。
《ZMC运动控制器SCARA机械手应用快速入门》就讲到这里。更多学习视频及图文详解请关注我们的公众号“正运动小助手”。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
回顾往期内容
快速入门|篇十三:正运动技术运动控制器ZDevelop 编程软件的使用
关于正运动技术
正运动技术是一家专注于运动控制技术研发与应用的国家级高新技术企业,主要从事运动控制器、运动控制卡、视觉运动控制一体机以及IO扩展模块等产品的研发、生产、销售和服务。
公司汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校致力于运动控制技术研究与应用,是国内工控领域发展最快的企业之一,也是国内完整掌握运动控制核心技术和实时工控软件平台技术的企业。
微信扫一扫
关注该公众号
