基于EMAC200运动控制器的圆弧插补算法研究.PDF

基于EMAC200运动控制器的圆弧插补算法研究.PDF

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于EMAC200运动控制器的圆弧插补算法研究

基于EMAC200运动控制器的 圆弧插补算法研究 关键词:开放式运动控制器;圆弧插补算法; 一、简介 北京元茂兴控制设备技术有限责任公司的EMAC200 运动控制器是一款开放性很强的控制 器,它提供一种轨迹生成的方式——“External Profile Mode”。利用它,我们可以设定每一 个(或者每几个)伺服周期的电机位置,速度,加速度,加加速度参数,从而我们可以实现复 杂的轨迹曲线。 在这篇文章里,介绍了使用EMAC 的“External Profile Mode”如何实现圆弧插补,其中包 括,圆弧插补的一种数学计算方法,及EMAC 如何实现。 二、圆弧插补的数学计算方法 我们采用起点,终点及半径方法来实现圆弧插补。及已知圆弧的起点,终点,半径,及插补 方向(顺时针或逆时针)来实现圆弧插补。 我们先来讨论最简单的情况,即圆弧的圆心就在坐标(0,0)点,如图1所示。 图1 在圆上任意取一点A(x1,y1),由圆的极坐标公式可以得出: x1=Rcosa; y1=Rsina; R为圆的半径,a为A点与X轴的夹角。 因为R已知,角a是一个变化量。对于图1所示圆,相当于角a从0°旋转到360°,就形 成了圆。 上面我们提到,EMAC可以设置每一个伺服周期(或每几个)伺服周期的位置,因此只要得出 在某一个伺服周期的角a值,就可以得出该伺服周期X轴及Y轴两个电机的位置。 对于圆弧插补,我们一般给出圆弧插补的线速度V,因此我们可以计算出角速度 ω=V/R 下面我们可以自己设定一个固定的插补周期T,该插补周期要为控制卡伺服周期的整数倍。 有了角速度及插补周期T,我们可以计算出每一个插补周期角a的变化量θ。 θ=w﹡T。 这样,角a从0°开始,每到下一个插补周期,角a的当前值都增加一个θ值,直到旋转到 360°为止。从而可以计算出每一个插补周期的x和y的坐标值。 对于非整圆的弧,我们的计算方法完全相同,只是需要再计算出角a的起始角度及最终角度 即可。 三、使用EMAC控制器实现 EMAC 的“External Profile Mode”允许用户自己设定运动轨迹,包括运动位置,速度,加 速度,加加速度,及时间5个参数。我们通过数学方法生成这些参数后,可以将他们的值写 到EMAC 的双端口RAM 中。整个RAM 将类似于一个数据表,如图2所示。 图2 整个双端口RAM 可以写16K个32bit变量,如果我们的数据很多,无法一次全部放到双端 口RAM 中,那么我们可以让这个RAM 区以一种旋转缓冲区的方式工作。我们可以通过 EMAC的指令GetBufferWriteIndex及GetBufferReadIndex来获得当前RAM区中读指针及写 指针的位置。通过比较这两个指针的位置,我们可以命令什么时候可以写入新的数据,什么 时候可以安全的覆盖掉旧的数据。 在我们提供的demo程序中,就是采用这种旋转缓冲区的方式来实现圆弧插补的。 四、关于圆弧插补的进一步讨论 上面我们讨论的圆,圆心在(0,0)点,但是对于绝大部分圆弧,圆心不在坐标原点。对于这样 的圆弧,我们可以使用坐标平移的方法来解决问题。如图3所示。 图3 圆弧的计算方法是相同的,只是在计算每个插补周期的A 点位置时,都要加上圆心的坐标 值。即: x1=Rcosa+Xc; y1=Rsina+Yc; 那么,问题的重点就变为如何找到圆心。有了正确的圆心坐标后,我们的问题就能得到解决。 下面首先我们来看如何通过起点坐标,终点坐标及半径值,计算出圆心坐标。 图4 如图4所示:我们可以计算出起点及终点弦长AB。 AB= (X2− X1)2+(Y2−Y1)2 做直线段CM⊥AB。则M为线段AB的中点。 M点的坐标Xm及Ym及线段BM长度我们也可以计算出来。 有了这些,我们就可以计算出弦AB所对的圆心角。 图5 如图5所示: 过M 点及A点分别做线段MD//Y 轴,AD//X 轴。 过M 点及C点分别做线段ME//Y 轴,MC//X 轴。 首先我们可以计算出线段MD 及AD 的长度, MD=|Ym-Y1|, AD=|X

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档