面对一台ZMC300E运动控制器,我们该怎样让它工作起来?本文带你了解其核心算法原理,并详细讲解如何操纵龙门架画笔平台绘图。
前言
ZMC300E(点击了解详情)是广州致远电子股份有限公司开发的最新一代智能总线型 EtherCAT 主站控制器,使用A8内核的AM335X为处理器核心,配合Xenomai高实时性Linux系统,支持作为EtherCAT主站使用,其通讯可实现ms周期任务抖动±15μs以内,可满足运动控制器的高实时性要求。
图1ZMC300E控制器
可以看到,运动控制器的强项是EtherCAT实时通信,主要工作就是发号施令,通过网络命令多个电驱和电机工作。通俗的说,运动控制器干脑力活,动口不动手,电驱和电机干体力活,专干重活累活。
那么,运动控制器凭什么当上智力担当的?原来运动控制器是计算能手,拥有三大绝活算法:轨迹插补,速度规划,运动前瞻。凭借这三大绝活,运动控制器就能指挥电驱和电机完成各种运动任务。
算法原理
接下来简单地介绍运动控制器的三大绝活算法:轨迹插补,速度规划,运动前瞻。这三大算法包含较多子类别的算法,本文只对最基础最实用的子算法进行介绍,后面实战绘图也会用到这些算法:轨迹插补-直线插补,速度规划-梯形速度规划,运动前瞻-拐角减速。1.轨迹插补运动任务的核心任务就是绘制各种轨迹,运动控制器的看家本领就是轨迹插补。插补算法根据给定的信息进行数字计算,不断计算出参与运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动。插补最常见的两种方式是直线插补和圆弧插补。插补运动至少需要两个轴参与,进行插补运动时,首先需要建立坐标系,将规划轴映射到相应的坐标系中,运动控制器根据坐标映射关系,控制各轴运动,实现要求的运动轨迹。直线运动的插补示意图如下,插补运动中由起始点处沿 X 方向走一小段(给一个脉冲当量轴走一段固定距离),发现终点在实际轮廓的下方,则下一条线段沿 Y 方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿 Y 方向走一小段,直到在实际轮廓上方以后,再向 X 方向走一小段,依次循环类推,直到到达轮廓终点为止。
图2直线插补示意图除了直线插补,ZMC300E还支持多种轨迹插补:圆弧插补,椭圆弧插补,渐开线插补,螺旋线插补,贝塞尔曲线插补。2.速度规划运动控制器还可以为轨迹插补赋予速度规划。速度规划这里特指,在已知运动的起点和终点和完整路径的情况下,基于给定的时间约束, 最大速度约束和最大加速度减速度约束的条件,设计运动速度随时间的曲线。常见的速度规划算法有梯形速度规划算法,S形速度规划算法。梯形速度曲线,也称为直线加减速或T型加减速。其算法十分简易,规划周期耗时短,有利于缩减系统的连续运行时间,从而提高系统的运动控制速度,实施起来比较容易,应用广泛。
图3梯形速度规划-速度示意图
该速度由3段组成,第一个段黄色段是加速段,第二段(绿色段)是匀速段,第三段(黄色段)是减速段。
图4梯形速度规划-位移示意图图5梯形速度规划-加速度示意图
除了梯形速度规划,ZMC300E还支持多种S型速度规划:加加速度(二次加速度)给定条件的S型速度规划,弯曲时间给定条件的S型速度规划,和加减速时间和弯曲时间给定条件的S型速度规划。
3.运动前瞻
运动控制器能够更加高效规划运动,这要求运动控制器支持连续插补运动,支持运动前瞻。
这里给一个矩形绘图作为连续插补的示例。一个普通的矩形轨迹如下图。
图6矩形轨迹该矩形含有四段轨迹。
使用梯形速度规划,可以得到以下的速度曲线,可以看到,由4段曲线组成。
图7不开启运动前瞻的速度-时间示意图不开启连续插补和运动前瞻,每段速度都减速到零。纵轴为速度,横轴为时间。下图是开启连续插补的速度-时间图。速度是通过位置和发射时间推算出来的,不完全精确,速度出现毛刺是正常的。
图8连续插补速度-时间示意图
开启连续插补,每段速度不再减速到0。可以看到,时间相比不开启运动前瞻更短。但是有个严重问题:拐角处的速度是最大值,过高的速度可能影响电机和刀具稳定性。
图9运动前瞻速度-时间示意图
开启连续插补和运动前瞻,拐角减速,每段速度不再减速到0,而是根据拐角角度决定速度。可以看到,时间相比不开启运动前瞻更短,相比连续插补更长,避免刀具高速通过拐角处的问题。
运动控制器的运动前瞻功能可以根据用户的运动路径自动计算出平滑的速度规划,以防止轨迹的拐角处速度过快。运动前瞻包括三种模式:拐角减速、倒角、小圆限速,而这三种模式也可混合使用。拐角减速会根据夹角大小确定拐角处的最大速度,倒角则会设置前后两个轨迹在拐角处的倒角,而小圆限速则会对半径小于设置值的圆弧轨迹进行限速。
实战绘图
介绍完了算法原理,接下来我们使用ZMC300E运动控制器来进行实战绘图。
首先把运动控制器和画笔平台使用网线连接。画笔平台是一个3轴的龙门架,可以在xyz三轴空间移动,夹具上只有一根常见的铅笔。
图10画笔平台
选择一幅SVG格式图片作为我们画图的图案,这里我们选择的是致远电子公司的logo图片。
图11Logo图片
对于输入图片,我们可以把矢量图解析成多个笔画,每个笔画解析成直线曲折相连,这样就可以得到对应绘图轨迹。G代码(G-code)是最为广泛使用的计算机数控编程语言,主要在计算机辅助制造中用于控制自动机床。
我们使用开源工具svg_to_gcode,把svg文件转成G代码文件。
图12G代码文件
查看G代码文件,可以看到都是G1指令,说明都是直线插补命令。这说明我们只用直线插补命令就能完成绘图。对应的绘图图案如下,不同的颜色对应不同的笔划,可以看到图片包含十八笔的仿真笔画图。
图13 笔画轨迹图片
每一笔划都要有进笔(笔尖触及纸张),作画(笔尖写字)和退笔(笔尖远离纸张)。G代码中进笔对应M3指令(进刀),退笔对应M5指令(退刀)。这样才能书写多个笔划。
目标图形总共有十八笔的笔画,要想作画就得先对笔画进行排序。这里使用最直观的笔划排序算法,先左后右,先上后下。
加入笔画的连接,可以得到以下的笔画仿真绘图。
图14 连笔笔画绘图
可以看到,仿真效果大体上符合我们的预期。我们就可以在运动控制器中运行G代码脚本。使用ssh连接运动控制器,启动控制程序。设置左下方为原点,沿着纸张往右边写字,纸张宽度至少280mm,高度60mm。使用梯形速度规划,配置最大速度100mm/s,最大加速度和最大减速度为100mm/s^2。进笔和退笔,对应z轴上下的运动,进笔量和退笔量都设为10mm。为了提高绘图效率,开启了连续插补,运动前瞻和拐角减速。
图15 绘图可以看到,我们使用ZMC300E控制器漂亮地完成了绘图。
-
控制器
+关注
关注
112文章
16392浏览量
178451 -
Linux
+关注
关注
87文章
11314浏览量
209795
发布评论请先 登录
相关推荐
评论