倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补

2022-11-02,,,,

对于MOVEJ的关节运动来说,我们只关心每个电机的角度(只需要考虑多个电机协同开始运动和结束运动,关键是对每个电机加速度均一化,从而一起跑一起停,这部分内容可以参考机器人学导论以获取更加详细的说明),我们要注意整个的流程是更新关节位置(MOVEJ)=>更新TCP(正解)=>更新关节速度和TCP速度

且由于正解是唯一的,在主程序的每个周期都要执行(当然你也可以不在主程序每个周期都执行,放在MoveUpdate里面也可以,不管执行何种运动都刷新一次正解)

 

对于MOVEL的TCP运动来说,我们只关心末端的位置和姿态(只需要考虑末端能否到目标位置,关键是求逆解,并把每个周期逆解对应的关节位置传递给电机,从而实现末端动,所有轴跟着联动的效果,同样可以参考机器人学导论研究更复杂的情况)。我们要注意整个的流程是更新TCP位置(MOVEL)=>更新关节位置(逆解)=>更新关节速度和TCP速度

且由于逆解不一定要做,只在MOVEL的时候才会执行,并且即便执行也是划归为跟MOVEJ一样的流程(MOVEUpdateDATA),更新数据之前判断关节位置,速度是否超过限制

 

对于两轴的直线模组来说比较简单,只有XY两个自由度,不涉及姿态,但是算法的流程和含义却是一样的。可以添加监控捕捉每个关节的位置和TCP的位置在启停的时候是否平滑(在本例中只有表示设备关节位置的theRadius和表示设备TCP位置的posRPYRadius两个数组是重要的,核心的)。点动的按钮都是会相互影响的,JOG关节会影响TCP位置,JOGTCP会影响关节位置。当然在直线模组中每个自由度是独立的,比如X的自由度只受J1电机控制(电机的角度算上丝杠导轨或者减速机,等比例的映射为多少mm,甚至可以测量得到简单结论)

J0:36CM=>72弧度

-45 弧度=>27    弧度

J1:40CM=>80弧度

-40 弧度=>40    弧度

因此可以简单认为每个模组每个关节1弧度运动量对应了X或者5mm的偏移(用弧度表示比较简洁,更多时候我们不关心电机的具体角度,只关心这个输出部分是多少)

 

要充分理解化归的思想,X和Y的点动本质上都是直线运动的一种,比如X+就是目标的Y不变,X给一个很大的值,然后执行直线运动。不管是JOG,还是回原点,还是弹出面板输入目标位置然后运动,本质都是同样的,只不过执行的目标位置和执行的流程有所区别。

 

虽然是直线插补,但是依然有很多讲究,比如启动过程可以直接按给定的速度,加速度进行孤立点位的计算(实际上就是等分直线段,每个PLC周期要求TCP到达孤立的直线段即可),还有一种方法是启动过程TCP的步子越来越大(想象人百米加速启动,也是越走越快,加速到指定速度之后再保持匀速)。再比如停止的时候还是可以分成多种情况讨论,再次只是简单演示了梯形加速和S形加速两种情况,停止的时候沿用了MOVEJ的关节停止,所以本质上末端TCP停止不再是保持直线,可以继续优化。

 

为了虚拟和真实模式的统一,在停止的时候也只采集虚拟的关节位置和关节速度(这两个虚拟的变量也可能是真实的,如果在真实模式下就从真实的驱动器获取)

 

由于是自定义的算法,我们无法从绝对运动模块中获取是否运动完毕,但是其实也可以自己写这样一个模块(执行的过程中不断判断是否当前位置和目标位置很接近,比如接近到一定范围之后就认为到位了),如果要在几个点来回运动,则必然需要等前面运动结束才能开始下一个运动。

最后虽然定义了MOVEJ和MOVEL运动方法,但是本质上绘制的轨迹却都是直线,因为关节和TCP是一个简单正比例关系(如果是串联纯转动结构的机器人,MOVEJ绘制的是空间不规则弧线,而MOVEL则保持TCP轨迹为直线)。MOVEJ由于不考虑求逆,所以大部分情况下可以获得比MOVEL更加平滑的轨迹和电机启停效果。

 

 

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

http://csrobot.gz01.bdysite.com/

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

 

倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补的相关教程结束。

《倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补.doc》

下载本文的Word格式文档,以方便收藏与打印。