上一个篇主要介绍伺服轴组态,以及一些伺服轴的基本设置。这是运动控制的基础。

        下图是一个接线原理图,有利于理解接下来的今天的编程。图中的CPU,就是咱们要编程的对象,里面可以写入咱们的程序,CPU和驱动器之间用网线链接,CPU给驱动器发送指令,然后驱动器通过控制驱动线缆的电流和电压,实现控制电机的目的。但是有时候驱动电机,会出现一些误差,所以编码器是用来检查电机实际转动情况,驱动器拿到这个编码器反馈,就可以动态矫正电机控制。达到精准控制的目的。说到这里,其实大家也明白了,驱动器实际上是一个自带运算和驱动控制的单元,基本上就是伺服系统的核心了。

        这里主要来介绍使用梯形图来进行运动控制编程,以及我个人的一个编程模式(存粹是个人编程风格,没有啥好不好的)。本篇主要分为以下几个部分:

1:基本运动控制块的调用

2:绝对定位注意事项

3:手动控制+自动控制

4:自动逻辑编程模式

废话少说,直接开始

一:基本运动控制块调用

        博图里面基本运动控制块有:使能,点动,定位,回原,急停,复位,读取参数,写入参数。这几个。

        首先是使能:MC_power。还是看上面的图,驱动器上电以后,并没有直接给电机上电,这个时候,电机是可以用手转动的(带抱闸的除外)。MC_power的作用就是让驱动器给电机上电,一旦上电,电机就会产生力矩,用手转动电机,能明显感觉到有反作用力。所有运动控制的前提是必须使能,不使能无法控制。

        使能块调用见下图:一般情况EN是常闭,enable信号要给一个。Status和error可以选择性的取一个。status=true的时候,error就是0。有故障的时候,使能就不会成功。

startmode默认是1,就是位置可控模式。位置不可控,就是步进电机了。

        接下来是点动块,点动一般是手动操作的时候,需要使用。调用方式见下图。需要传入的是轴对象,正反项运动信号,以及点动速度,注意这个速度必须是正值。为0也不会动。

         绝对定位块是运动控制里面用的比较多的,见下图。需要输入轴信号,启动信号(上升沿),目标位置,定位速度。

        重点:启动信号是一个上升沿,意思就是如果你这个信号一直是true,中间目标位置变化了,不会进行重复定位。如果是上升沿时间很短,有可能扫描不到,也不会动。

        重点2:定位速度必须大于0

         回原,是用来给轴当前定义一个原点,或者回到原点信号(需要有输入信号)。

        重点:定位运行之前,必须先回原,否则不会执行定位。

        重点:定位运行之前,必须先回原,否则不会执行定位。

        重点:定位运行之前,必须先回原,否则不会执行定位。

        回原块见下图。回原信号是一个上升沿信号,参考定位。当mode=0,立即回原,给当前位置设置为输出的原点值,一般都是0,这种模式下,轴是不动的,此模式相当于给轴定义一个原点位置(软位置)。

        当mode=3,主动回原,这个时候,轴会动起来,往靠近原点信号的位置走,到达信号以后,会来回触发几次,完成精确定位。原理图见下图。这样做的原因是信号触发会有误差,来回触发几次,保证误差最小。

其他回原模式就不介绍了,帮助文件里面有。

        急停,顾名思义,就是出现紧急情况,马上停止运动,见下图。这个块触发以后,所有运动都会停止。除了使用急停,实际情况,也可以把使能去掉,但是不推荐这样做。

        使能,点动,定位,急停,回原,是几个最重要的块。

        剩余的还有复位,当出现故障的时候,用来清除故障。有些故障可以清除,例如碰到限位,定位的时候没有回原。有些不能清除,比较严重的故障,例如线接错了,运动方向不对,编码器不对等。有故障的时候,定位块是不会动的。复位块见下图:

         另外就是一个就是运动过程中,需要读取一些参数,例如当前轴的位置,以及写入一些参数。见下图:

动态调整轴参数不太常用,见下图:

        注意:运动控制块都是FB,也就是有自己的背景数据块,所以,当轴多了,并且运动方式都一样的时候,不能直接复制块。或者复制完以后,右键更新块的实力,保证重复使用这个块。

        注意:运动控制块都是FB,也就是有自己的背景数据块,所以,当轴多了,并且运动方式都一样的时候,不能直接复制块。或者复制完以后,右键更新块的实力,保证重复使用这个块,

二:绝对定位注意事项

       绝对定位是自动运行的时候,最常用的运动方式。上面已经提到了一些注意事项,这里再次总结一下,因为很重要:

        1:定位之前,必须回原。否则不能动。

        2:定位信号上升沿有效,所有长闭信号并不能实现连续定位。(方波信号可以)

        3:定位信号如果上升沿时间太短,没有检测到,也不会动。

        4:定位触发后,信号变成false,定位也不会停止(点动会马上停止),因为信号是上升沿。

        5:定位速度必须是大于0的。

        6:出现故障以后,例如到达限位,必须先复位故障,然后再次回原,才能进行定位。

三:手动控制和自动控制

        首先明确,手动和自动在控制系统里面是都需要的,对于一个轴的控制,手动和自动控制的是同一个块,就是第一部分里面提到的块。为啥不手动一个块,自动一个块呢?因为容易冲突,一个块让动,一个块不让动,但是电机只有一个,怎么办?

        接下来完全是我个人的做法,谈不上对或者不对,反正是能实现功能就行了。

        首先是定义一组用于轴控制的变量,我一般是单独定义一个DB块,如下图。这个信号(变量)直接链接到运动控制块。就是上面第一部分。

然后定义手动控制的变量,和自动控制的变量,分别用两个DB块,里面的变量和上面这个轴控变量,几乎一样。见下图:

 原理大致如下图。我估计大家应该都是这样做的。

 下面这个图是具体梯形图的实例,仅供参考。

 

 四、自动控制编程模式

        手动控制这个很好理解,就是控制第三部分里面,手动操作DB块里面的变量。由IO点或者是触摸屏控制。这个就比较简单了。

        自动控制,就是编写设备自动运行的逻辑,以实现设备功能。以下是个人总结的一套方法,不一定是最优的,也不一定适合所有情况,仅供参考。

        以具体项目为例,本次项目有五个伺服轴,其中三个用来打磨工件,另外两个组成一个机械抓手,用来抓取工件。抓放动作使用的是气缸。

大致的设备原理图如下。大致分为下料部分,打工部分,以及抓取部分。

        工作原理,当加工部分空闲,下一个料,给加工部分。加工部分开始加工A面。

        A面加工完毕,机械爪伸进去,给工件翻转一下,再退出来,继续加工B面。

        B面加工完毕,机械爪进去,给工件取出来,放到传送带。

加工部分还分为5个不同的加工步骤,这里就不详细说了。

下面说一下具体的编程思路:

        首先根据上面的工作流程,制定一个工作流程图。见下图。我是用excel弄的。简单明了。重点,做这个流程图的时候,要尽量把所有步骤考虑全面。       

工作流程图分量部分,上图颜色有区分。两个状态字,分别代表抓取部分的状态字,和加工部分的状态字。

每一行代表一个轴,或者一个开关,或者一个气缸。有了这个表格,就可以按照表格的内容,绘制梯形图,实现每个元件的控制。

例如下图,就是机械爪的控制逻辑

 例如下图,是Z轴的控制逻辑。实际就是根据上面的表格,具体某一个状态,到达某一个位置。

当然还得写状态字控制的逻辑,如下图。当然太复杂的逻辑,也可以考虑使用ST语言。

 最后附上一个机床实际工作的视频:

机床工作视频

 五、总结

        到此为止,博图运动控制编程基本上科普完了,这两个文章,适合有一定电气基础的,没有搞过运动控制的人来科普。整个项目里面还有很多细节的东西,时间有限,就先到这里。由于涉及到一定的商业问题,代码无法分享。

        下次再整理一下电子手摇轮的使用方式。

        有问题或者不对的地方欢迎指正。

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐