龙空技术网

正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?

正运动技术 199

前言:

眼前我们对“自动跟随算法”都比较注意,各位老铁们都想要剖析一些“自动跟随算法”的相关内容。那么小编同时在网络上网罗了一些关于“自动跟随算法””的相关知识,希望看官们能喜欢,同学们一起来学习一下吧!

本文主要介绍如何使用MOVESYNC指令快速实现单轴/多轴同步跟随功能,适用于XYZ(R)、SCARA、DELTA等常见机械结构,在流水线点胶、流水线产品分拣、流水线产品搬运等场景中广泛应用。

阅读本文,学习同步跟随的原理和实现方法,提高工作效率!

01 同步跟随功能介绍

同步跟随的主要作用是快速控制运动机构,实现产线上产品的同步和跟随,再辅助其他运动指令实现产线产品的抓取、分拣、点胶等功能需求;

同步跟随的功能主要由MOVESYNC指令实现,该指令方便用户通过程序快速实现单轴或多轴同步跟随功能,实现多皮带抓取摆放,属于凸轮指令的一种。

常用场景为:流水线点胶、流水线产品分拣、流水线产品搬运等。

常见机械结构:XYZ (R)、SCARA、DELTA等。

02 MOVESYNC指令说明

1、指令介绍

同步跟随是指点的跟随,跟随的是位置,皮带与跟随轴的位置之间由算子去协调位置关系,需要处理的仅仅是第一个跟随时刻的位置。

MOVESYNC指令内重要参数是给出皮带的位置和跟随轴的位置,只需要把跟随点跟随的这个“时刻”静态化处理就行,即可以想象成当皮带上物体到了传感器mark位置时刻皮带停止了。

跟随轴这个时候移动到达产品mark点,这个时刻得到了两组坐标位置:

第一组:皮带的位置syncposition。

第二组:跟随轴的位置pos1,只需要将这两个位置对应填进指令内即可,算子会自动计算规划两者位置,保证两者相对静止。

2、指令函数语法

MOVESYNC(mode,synctime,syncposition,syncaxis,pos1[,pos2, pos3…])

支持单轴或多轴同步跟随。

3、一般使用形式

base(0,1,2) //指定参与同步跟随轴号,这里以0,1,2为例

MOVESYNC (mode,加速时间,syncposition,syncaxis,pos1,pos2, pos3) //加速段

MOVESYNC(mode,同步时间,syncposition,syncaxis,pos1,pos2, pos3) //同步段

MOVESYNC(mode,减速时间,syncposition,syncaxis,pos1,pos2, pos3) //减速段(复位段)

一个完整的跟随过程分为三步,加工头先加速达到与皮带相同的速度,实现了同步运动,在同步段完成加工操作,然后加工头再回到等待位置,等待下一次触发加工。触发条件采用传感器检测来料,记录来料的位置,填入MOVESYNC指令。

4、指令参数说明

(1)mode:模式

加速段和同步段一般使用模式0,一般是在X轴方向跟随,减速段一般使用模式-2(可以强制结束前面的跟随运动)。

特别说明:当跟随的产线与机台存在夹角时使用模式0,并且加上机台与产线的夹角的弧度值实现跟随偏斜补偿,例:

mode=0+angle,angle:皮带旋转角度,角度=皮带与BASE第1/2轴的正向旋转夹角。例如:

① Mode=PI/4,皮带在45度的方向;

② Mode=PI/2,皮带在y方向;

③ Mode=PI,皮带在x负向;

④ Mode=(PI*1.75),皮带在-45度的方向;

(2)synctime:同步时间,时间单位ms,同步时间一般分为三段

加速段时间多久代表机台跟随轴加速达到产线速度,并且跟上目标产品,0表示根据运动轴的速度加速度来估计同步时间,可能不准确,一般相对设置长点,确保能实现同步;

同步段时间表示跟随产品运动多长时间,抓取等动作在此期间完成,一般相对设置较长,保证动作完成;

减速段时间表示多久回到指定位置,一般减速段时间和加速段一样,推荐使用-2模式;

(3)syncposition:皮带轴物体被感应到时皮带轴的位置

特别说明:此指令支持皮带轴坐标循环,但是在指令被调用时确保此参数位置和当前皮带轴位置之间没有发生坐标修改或循环操作,因此此指令调用时不要在坐标循环点附近;

(4)syncaxis:皮带轴轴号,-1表示没有皮带轴,可以是电机轴,也可以是编码器

(5)pos1:皮带轴物体被感应到时的BASE第1个轴(一般是跟随轴)的绝对位置

(6)posn:皮带轴物体被感应到时的BASE第n个轴的绝对位置

5、指令使用图解(单轴为例)

movesync指令只需要给出同步跟随触发时的几个轴的位置参数即可,作为启动同步跟随的条件,再加速达到同步之后执行加工。

首先构思搭建一个跟随模型,如下:

假设当产品到传感器位置时实现跟随;借助传感器的信号实现皮带位置锁存,即当产品到达传感器锁存的位置时,依靠锁存记录下皮带坐标(syncposition参数),此时将跟随轴X轴运行到产品锁存点位置,得到跟随轴X轴位置为(pos1);

这样就得到了MOVESYNC指令里面的坐标位置,即同步时刻皮带的位置(syncposition)、跟随轴的位置(pos1),再根据实际运行情况规划出加速段的时间、同步段的时间和减速段的时间,指令运行即可实现一次同步跟随过程。

03 主代码

下面示例以单轴跟随为例子,辅助以感应器作为位置记录条件。

在没有机台的情况下,可手动给锁存信号,模拟检测到物料,记录同步运动指令要填写的位置信息,在HMI界面上点击启动开始执行同步运动,程序的主要函数调用关系如下图。

配置HMI界面便于操作,支持修改轴参数,灵活调整同步跟随各阶段的时间,通过手动运动操作跟随轴到等待触发同步运动的位置,并记录下来跟随轴的当前位置,然后启动皮带轴的运动,在运动中手动给传感器信号,触发同步运动,跟随轴在MOVESYNC指令的控制下完成一次同步跟随动作。

界面显示了皮带轴和跟随轴的位置信息,并且方便配置轴的基础参数,同步运动加速,同步和减速段的时间。

HMI操作步骤:

第一次运行,需要进行对位操作,确认跟随轴的位置,点击产品到位,模拟产品放到了传送带上开始运动,到达锁存位置停止,将跟随轴移动到产品位置处停下。记录下跟随轴此时的坐标,此坐标MOVESYNC指令将会用到

配置轴号,轴的运动参数,合理设置三段运动的时间

⊙点击启动,传送带运行,通过模拟信号给来料检测信号,触发锁存得出皮带轴坐标,触发同步跟随开始。

注意:此例程因为用到了硬件锁存功能,需要在控制器平台运行,没有传感器时,可以将OUT口短接到IN口,通过OP指令模拟传感器锁存信号的输入,示例将OUT0接入IN0。

锁存函数:依靠锁存传感器检测来料,触发同步跟随运动,锁存功能记录开始跟随时,锁存皮带轴位置,记录下当前同步轴的位置信息,传入MOVESYNC指令参数。

global sub get_mark_pos(mode) '使用3或者4,其他方式修改等待条件和获取的数据寄存器,reg_pos    REG_INPUTS(belt_axis) = $0000    '映射皮带锁存输入    reg_count = 0    DMSET mark_flag(0,100,-1)   '每次开始前清空标志,避免误判    WHILE 1        base(belt_axis)REGIST(mode)axis(belt_axis)        wait until mark        if reg_count >= 100 then     '位置数组循环存储值判断            reg_count = 0        endif        mark_pos(reg_count) = REG_POS        ?REG_POS        mark_flag(reg_count) = 1        reg_count = reg_count + 1    wendendsub

同步跟随函数:依靠锁存函数给的参数,设置跟随时间,执行同步跟随动作,分为加速、同步和减速回原位置三个阶段,注意每个阶段的时间规划合理,完成一个跟随步骤之后等待触发下一次跟随。

global sub run_sync()    base(sync_axis)    move_count = 0   '运动计数清0    TABLE(10) = -1    '以table 10 的值,作为同步结束标志    WHILE 1        if move_count >= 100 then    '循环            move_count = 0        endif        if mark_flag(move_count) = 1 then    '判断是否有产品触发            if abs(sync_star_dis + mark_pos(move_count)) >= abs(mpos(belt_axis)) then     '尚在有效触发距离内,即可以跟随                '开始跟随                '第一段:加速段(追赶段)     跟随模式看机构具体而定,一般皮带编码器方向与跟随轴运动方向一致就用0 反方向就用 0 + pi/2                MOVESYNC(0, accel_time, mark_pos(move_count), belt_axis, sync_pos)                '第二段:同步段与加速段唯一不同是时间                MOVESYNC(0, sync_time, mark_pos(move_count), belt_axis, sync_pos)                '此处可以开启线程去操作其他动作                '使用 move_task 指令操作                '用table 10 的值来作为其他运动的结束标志,这里使用move_table,是为了使同步完全结束,后面开发时可以将MOVE_TABLE放在其他运动的线程里面使用                MOVE_TABLE(10,10)            elseif abs(sync_star_dis + mark_pos(move_count)) < abs(mpos(belt_axis)) then     '超出范围,直接跳过,                TABLE(10) = 10                ?"跳过"                '?abs(sync_star_dis + mark_pos(move_count)) , abs(mpos(belt_axis))            endif            '判断结束            wait UNTIL table(10) = 10            '第三段:复位段   以当前位置为停止位置,可以添加变量设置待机位。            MOVESYNC(-1, decel_time, mark_pos(move_count),-1, sync_pos)            move_table(10,-1)   '结束标志复位            mark_flag(move_count) = -1     '同步条件标志复位            move_count = move_count + 1    '计数+ 1        endif    wendendsub

04 运行效果

跟随轴(轴0)跟随皮带(轴2)运动的速度曲线:加速段,同步段,减速回起点。

跟随轴(轴0)跟随皮带(轴2)运动的位置曲线。

代码获取地址

本次,正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?就分享到这里。更多精彩内容请关注“正运动小助手”公众号。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

标签: #自动跟随算法