运动控制卡协调控制步进电机的问题 点击:904 | 回复:19



sanywangjun

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-25 09:36:06
楼主

目前在做一个5自由度机械手的问题。机械手由五节臂组成,靠五个关节运动实现机械臂末端的运动。现在是要求机械臂末端实现一个轨迹运动,我的思路是采用工控机(IPC)+运动控制卡+步进电机(驱动器)来实现。在上位机完成轨迹规划与轨迹的离散化,以及在每个关节的运动学计算,以求得在每个末端轨迹点所对应的5个关节的运动量。然后每隔一个固定的周期(初步定20ms),向下位机(运动控制卡)发送一次数据,然后运动控制卡再经过运算,向5个关节的步进电机发送脉冲,控制步进电机的运动,最终实现机械臂末端轨迹。我现在遇到的问题是这样的:

1.由于之前没有使用过运动控制卡,因此,运动控制卡是怎么协调5个电机的运动的?看了几款运动控制卡的使用说明,没有发现如何使用其完成协调控制功能?难道是使用其单轴控制函数,分别实现5个关节的控制?

2.上位机向运动控制卡发送的数据包括5个电机的运动距离和运动速度,这个运动距离和速度指的是一个运动周期内的距离和速度,也就是20ms,运动距离根据末端轨迹点和运动学计算可以求得,运动速度我的思路是求得的运动距离除以运动时间来求,而这个运动时间我理解为一个运动周期,也就是20ms。也就是说,要完成每个周期内的运动距离,运动控制卡要以给定的脉冲频率连续发送20ms才可以。而事实上,在每个运动周期里面(从运动控制卡接到上位机开始),运动控制卡本身需要运行一段程序,然后才能开始向外发送脉冲给步进驱动器,我的问题是,运动控制卡本身运行程序的时间是否会短到可以忽略不计?如果不能忽略不计,我假设这个时间是1ms(有些夸张),那么在每个运动周期(20ms)运动控制卡都会拿出1个ms来进行程序的运行,也就是每个运动周期过后,脉冲输出完成的时间延时都要增加1个ms,这样的话20个周期以后,缓冲区里面就会同时有两条数据指令(上位机发过来的数据不能及时地被控制卡执行)。以此类推,经过比较多的周期以后,从理论上来说,不管缓冲区有多大,运动控制卡的缓冲区都有被填满(溢出)的可能性,而缓冲区被填满的话上位机发送过来的数据是不能被控制卡接收的,这样的话这个数据指令就会丢掉(这个不是步进电机的丢步,是因为步进控制卡没有空余的缓冲区,不能接收上位机发送过来的数据指令)。而对于步进电机这种进行增量控制的驱动机构来说,丢失一个周期的脉冲是不可原谅的。不知道这样的问题该怎么解决呀?

急盼有经验的大侠的热心帮助,谢谢了。




c-w-h

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 76回
  • 年度积分:0
  • 历史总积分:252
  • 注册:2004年12月10日
发表于:2010-04-25 21:47:49
1楼
运动控制卡是通过直线插补协调5个电机的运动的,上位机只需发坐标,运动,速度方向,及查询运动卡是否在忙就行了,运动控制卡就会自己计算,不用关心.

c-w-h

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 76回
  • 年度积分:0
  • 历史总积分:252
  • 注册:2004年12月10日
发表于:2010-04-25 21:51:36
2楼
缓冲区被填满的话就等,一有空就传数据,不会丢失步数的

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-25 22:51:55
3楼

你的意思是只要把两个轨迹点的坐标发给控制卡?不需要上位机计算本运动周期各个关节的运动量及其速度吗?

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2010-04-26 17:07:17
4楼
你的意思是只要把两个轨迹点的坐标发给控制卡?不需要上位机计算本运动周期各个关节的运动量及其速度吗?
通常的插补就是这样了。如果多轴之间的空间关系比较复杂,又有较高的速度要求,例如这个5轴的机械臂,控制卡的插补就不一定能符合要求了,这时就必须由上位机来计算本运动周期各个关节的运动量及其速度了

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-26 17:30:01
5楼

刘版主,如果说需要向控制卡发送各个关节的运动距离(也就是脉冲个数)和运动速度(也就是脉冲频率的话),那么各关节的运动脉冲是由脉冲个数除以运动时间计算得到的,脉冲个数通过轨迹点和机器人的运动学计算可以得到,运动时间怎么确定呢?理论上说,这个运动时间应该是上位PC向运动控制卡发送数据的时间间隔,也就是我问题中说的20ms。事实上,前后相邻两次数据发送间隔的20ms里,控制卡是要拿出一部分时间进行程序运行的,这就减少了运动控制卡发送脉冲给电机驱动器的有效时间,因此这个脉冲是不是需要设置的稍微大于PC机向控制卡发送数据的时间间隔(20ms)呢?

谢谢了。

沈阳大刘

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 77回
  • 年度积分:0
  • 历史总积分:356
  • 注册:2008年12月18日
发表于:2010-04-27 10:40:31
6楼

"刘版主,如果说需要向控制卡发送各个关节的运动距离(也就是脉冲个数)和运动速度(也就是脉冲频率的话),”

首先,一般很少有人这么用卡的,大把的银子买来的卡,仅仅作为一个脉冲转发器来用,可惜可惜啊!

 

“那么各关节的运动脉冲是由脉冲个数除以运动时间计算得到的,脉冲个数通过轨迹点和机器人的运动学计算可以得到,运动时间怎么确定呢?"

你上位做的运动学解算,你在做解算时是如何考量各个轴(轨迹及时间)?

 

考量了各个轴的轨迹(解算后的),担心执行时各轴之间的联动,可以在卡上开发底层程序,上位给卡的只要是数组变量即可,各轴的协同、插补可由卡来完成

能量控制

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 537回
  • 年度积分:0
  • 历史总积分:1576
  • 注册:2003年9月17日
发表于:2010-04-27 11:20:20
7楼

如果你有现成的轨迹算法,把轨迹计算任务交给运动控制器来做都没有问题的。反正轨迹是事先定义好的,算好了执行就可以。在此,多轴联动,电子凸轮是两个关键词。

如果轨迹计算太复杂,通过点动试教,来实现轨迹重现是最简单和实用的办法。好的控制器会实现自动轨迹平滑,你试教有限的点就可以实现平滑运动需求。

当然如果你是搞论文拿学位,用多轴联动,电子凸轮这两个概念,在加上运动学计算,画出几条漂亮曲线,学部委员评委也挑不出多少毛病。

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-27 16:23:04
8楼
回复内容:
对:能量控制 关于

如果你有现成的轨迹算法,把轨迹计算任务交给运动控制器来做都没有问题的。反正轨迹是事先定义好的,算好了执行就可以。在此,多轴联动,电子凸轮是两个关键词。

内容的回复:


对于机械手这样的各个驱动轴不是正交的,相互在空间的位置关系比较复杂的多轴控制系统,也有多轴控制卡可以完成轨迹规划与控制么?可否推荐一款这样的产品?我一直没有找到有类似功能的控制卡。多谢

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-27 16:26:57
9楼
沈阳大刘,能量控制,二位是否方便留个电话?想仔细请教下这方面的问题。

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-27 16:29:28
10楼
回复内容:
对:c-w-h 关于缓冲区被填满的话就等,一有空就传数据,不会丢失步数的 内容的回复:


如果我是PC机每隔固定的时间向运动控制卡发送一次数据,而在某个时刻,有数据发过来,而运动控制卡的缓冲区又满了,那这个数据不是丢失了吗?

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-27 16:41:51
11楼


“首先,一般很少有人这么用卡的,大把的银子买来的卡,仅仅作为一个脉冲转发器来用,可惜可惜啊! ”

这样使用也不是仅仅作为一个脉冲转发器呀,还是使用了运动控制卡的多轴协调运动功能,也就是使用了他的多轴插补函数


“你上位做的运动学解算,你在做解算时是如何考量各个轴(轨迹及时间)?”

这个时间跟上位的运动学结算没有关系吧?根据末端轨迹点坐标就可以利用运动学计算得到各关节长度,与上个轨迹点对应的各关节长度只差就是本周期各关节的运动量。也就是说,本周期各关节的运动量只是取决于本周期进行运动学计算的离散轨迹点距上个周期进行运动学计算的轨迹离散点的相对距离,而这个相对距离就是这个周期的末端运动速度乘以时间,这里的时间也就是就是相邻两轨迹点之间的时间。而如果运动控制卡在收到本周期各个关节的运动量和运动速度(也就是脉冲个数和脉冲频率),也按照刚才说的时间去插补运算的话,那么在这个时间内是不能输出要求个数的脉冲的,因为运动控制卡需要拿出一部分时间用于运行卡上程序,即使这个时间非常小。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2010-04-28 17:36:00
12楼

“如果我是PC机每隔固定的时间向运动控制卡发送一次数据,而在某个时刻,有数据发过来,而运动控制卡的缓冲区又满了,那这个数据不是丢失了吗?”

如果您的PC程序在发送数据中不包括检查缓冲区状态,这是您的编程问题。 

“对于机械手这样的各个驱动轴不是正交的,相互在空间的位置关系比较复杂的多轴控制系统,也有多轴控制卡可以完成轨迹规划与控制么?可否推荐一款这样的产品?我一直没有找到有类似功能的控制卡。多谢 ”

这个,恐怕不好找,一般运动控制卡在计算插补的矢量速度时,都默认各轴速度正交。实际机械设备中,各轴的空间关系可以是千变万化的,任何控制卡不可能涵盖所有的机械结构。如果是多关节的机械手,您就认命吧,不要指望通用运动控制卡了。

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-29 21:46:19
13楼

是的,没有找到能够对非正交的空间轴的插补,因此我的方法是,把轨迹离散成密集的点,在点与点之间采用直线插补的方法来实现各个轴的运动量,这样的方法应该是没有问题的。十分感谢论坛上各位的帮助,在这里学到很多东西。

感谢大家。

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-04-30 10:12:56
14楼

"如果您的PC程序在发送数据中不包括检查缓冲区状态,这是您的编程问题。 "

如果说我的PC机是从内部表格获得机械手末端姿态的话,可以先查询再取数据,可是如果说我的pc机是每隔固定时间间隔从外部设备,如手柄等得到机械手末端姿态,然后对这个末端姿态进行运动学计算呢?因为对手柄的采样肯定是严格按照周期进行的,总不能也首先要查询控制卡的缓冲区,有空余缓冲才采集手柄信息,没有空余就放弃采集吧?这样的话该怎么处理呢?

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2010-04-30 17:35:08
15楼

"因为对手柄的采样肯定是严格按照周期进行的,总不能也首先要查询控制卡的缓冲区,有空余缓冲才采集手柄信息,没有空余就放弃采集吧?这样的话该怎么处理呢?"

没有空余就报警停机

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-05-01 15:09:39
16楼

不知道论坛上有没有做机械手的朋友。机械手的控制是不是像我说的那样,把末端轨迹离散成密集点,在点与点之间采用多轴控制卡的多轴直线插补功能来控制各个电机?我觉得这样是可行的,但是因为之前没有接触过类似的东西,目前也还没到实际调试的阶段,所以心里不是很有底。

c-w-h

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 76回
  • 年度积分:0
  • 历史总积分:252
  • 注册:2004年12月10日
发表于:2010-05-01 21:57:05
17楼

看那些如CAM软件可知他们都是由上位机将路径全部路径计算一次(或者机器的位置状态),生成G代码,然后交由控制卡执行,机器人也是一样的.只不过机器人的路径算法可能不能直接套用CAM软件的.

sanywangjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 118回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2009年5月15日
发表于:2010-05-10 18:45:07
18楼
引用刘岩利 的回复内容:你的意思是只要把两个轨迹点的坐标发给控制卡?不需要上位机计算本运动周期各个关节的运动量及其速度吗?
通常的插补就是这样了。如果多轴之间的空间关系比较复杂,又有较高的速度要求,例如这个5轴的机械臂,控制卡的插补就不一定能符合要求了,这时就必须由上位机来计算本运动周期各个关节的运动量及其速度了

刘斑竹,如果需要自己计算各个轴的运动量及其速度,那么计算完成后,还是使用运动控制卡的直线插补功能来实现运动吗?我已经把机械手末端轨迹进行了离散,得到一系列估计点,这些点与点之间应该是可以用小段直线来代替的。谢谢

scwgt

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 27回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2009年12月21日
发表于:2010-05-24 13:24:53
19楼

用的是那个品牌的控制卡?推荐下 谢谢


热门招聘
相关主题

官方公众号

智造工程师