首页 上一页 1 2 下一页 尾页

步进+编码器精度能达到多少? 点击:1863 | 回复:23



风筝和线

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-06 17:29:00
楼主
我现在手上有这个项目,一台小型立式钻孔机,是用步进和编码器一起控制的,但精度还是不能保证在正负0.05mm内.具体控制方式是这样的,我用编码器的信号来控制步进的启停,不采用步进本身的脉冲完成信号.丝杆是4mm的,即转一圈4mm,步进是800脉冲一转,编著码器用500的.现在问题是精度达不到,为什么啊,请大家在不改变硬件的基础,能否指点一下.......哪怕是编程方法.....谢谢!



风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-06 17:48:00
1楼
波恩版主:给我提点醒吧,我记得你说是你是做步进出身的啊,有没好的方法啊,或者我这套能否实现客户的要求呢?我下周三之前要交货了。。。。。。。谢谢!

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-06 18:02:00
2楼
......这设备钻盲孔时钻削和排屑是交替的,速度当然也是不慢的空进和空退目前是30MM/S,进给量及速度也是经常变动的。我怀疑是不是有累积误差。。。还是编码器我取的中断信号不够快,我已经把PLC的扫描时间改成5ms了,监控了一下,还是不行。。。

波恩

  • 精华:10帖
  • 求助:0帖
  • 帖子:203帖 | 11028回
  • 年度积分:0
  • 历史总积分:36300
  • 注册:2003年6月12日
发表于:2007-10-06 18:47:00
3楼
丝杆导程4mm,步进800脉冲一转,合脉冲当量为0.005mm,高于精度要求(正负0.05mm)10倍;编码器500ppr,脉冲当量为0.008mm或0.002mm(四倍频后),也大大高于精度要求。所以就脉冲当量和精度的匹配关系而言,选型基本上不存在问题。

接下来就是控制问题了,PLC扫描时间5ms,空进和空退速度30MM/S,合每个扫描周期运行距离为0.15mm,如果楼主是按PLC的扫描周期读取编码器累计反馈,判是否到位,再采取制动措施,则直观的失控距离就是在0.15mm这个量级上,为减小误差,建议楼主根据反馈行程和目标点的误差,提前规划减速,而不是到了目标点才停机,否则必然会有过冲。

不知楼主目前的偏差到底是过冲还是不到位?步进是否有是不现象?空运行时,打表检测,编码器反馈和步进运行距离是否正确?

想起时正是忘记

  • 精华:0帖
  • 求助:0帖
  • 帖子:42帖 | 1651回
  • 年度积分:0
  • 历史总积分:1960
  • 注册:2007年1月26日
发表于:2007-10-07 03:55:00
4楼
位置控制用中断啊

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-09 16:56:00
5楼
首先,谢谢版主和“想起时正忘记”的帮助,我用上周的程序试加工了十个产品,最大的相差值为0.12mm,而且没有规律,没有一个值是相同的。我今天把以前的程序全部划分掉了,把一些复位和手动及保护程序用子程序和CJ跳转来调用。而主程序就留自动程序和变频器的通讯程序了。由于,工作中的进给速度和进给量及退屑等参数都是和步进直接关联,所以我想先以步进本身为基准来整理一下程序,今天刚完成了以步进本身的信号来控制的程序,把工作原点重新设为一个软原点,即不取光电信号了(只取一次),程序运行后以软原点来进行工作,我想这样应该可消除光电处的误差,内部回归全部通过运算成脉冲量来动作。试了下了,还行,每次工作后回到的软原点是基本一样的(步进细分到了1600脉冲每转)。
等下,我想这样,大家看行不:
把参数部分分为编码器的和步进的,而参数设定部分用步进的,而编码器的参数只用于位置控制(以中断方式),即高速信号为桥来连接下一步的任务,这样,其信号又要受扫描周期的影响了。。。
所以,还想问问大家,这样行不?哎,由于,小弟对高速指令不是很懂,那资料我看了不下二十次了,看来看去,给我的收获只是感觉,想中断取某个脉冲的信号不难(计数),但把不同的脉冲信号连续发给程序中的各部分进行比较运算,计数器本身还要及时归零,有点把不住脉啊,所以还请大家指点啊。。。。再次感谢!

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-09 17:50:00
6楼
楼主谈到“加工了十个产品,最大的相差值为0.12mm”,而根据你系统中电机的脉冲当量,0.12mm相当于脉冲数量上的差别达到了二十几个脉冲了,你的位置控制不会做得这么差吧,还是机械结构方面不过关呢?

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-09 18:02:00
7楼
因为不论通过什么方法控制步进电机,最终总是一定数量的脉冲被电机执行了。在保证机械结构没有问题的情况下,钻的盲孔的深度不一致,差别大就说明在钻每个孔的时候,电机执行的脉冲数是完全不同的,并且差别比较大。所以,应该从电机实际执行的脉冲数量上入手去找问题,尤其是编码器的反馈信号的处理方面。由于对你的系统不是很明了,以上说法仅供参考。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2007-10-09 18:06:00
8楼
真的能保证机械部分没有问题吗?

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-09 18:58:00
9楼
谢谢swift1972,因为前面的那个程序是步进执行脉冲数,而停止由编码器定的,由于每加式一个产品回一次机械原点(光电开关处),所以我想应该是编码器给信号时受影响了.因此,我把回机械原点次数减少了,另设一个软位置,直接用步进本身的发脉冲完成信号来控制写了一个程序,空运行程序,最后回软原点的精度基本一致(合要求).其它各部分的精度明天再打表,现在,我还是想让编码器的信号用起来,程序正在写,而我敢肯定,用步进本身的完成标志来控制,发脉冲的数量应该没问题,但反过来,用编码器以中断形式来控制步进,那我不敢保证所发脉冲数是否能走完.....机械部分,应该有一点点问题吧,但我想问题不大.好了,明天打表再来请教各位......

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-10 08:58:00
10楼
关于楼主的问题,我再来谈几点:

1、正如波恩所说,系统的进给速度是30mm/s,而PLC的扫描周期为5ms,那可以肯定地说,当PLC根据编码器反馈发现到位的时候,PLC读到的编码器反馈回来的脉冲数是不可能完全一致的。至于到底每次到位时,PLC读取的编码器脉冲数差别是多少,楼主应该是有答案的。

2、楼主谈到“每加工一个产品回一次机械原点(光电开关处)”,且不说是否需要这样来做,因为不知道楼主的应用中每个产品要钻多少个盲孔,如果很多,那可能需要这样,如果很少,比如几个或者几十个,就没有这个必要了,因为回零动作目的是消除机械累计误差,除非机械做的不太好,否则这种回零动作是不需要这么频繁来做的,况且这样还会影响系统的产能。关键问题是,这样的回零方式在一般的运动控制系统中都是作为“粗零位”的,因为光电开关的位置精度是很差的,如果光点开关信号给出的位置精度很差,也就是零位严重不一致,那就应该先解决这个零位问题,选择一种更精确的回零方式,或采用目前方式的某种变通方法。

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-10 09:28:00
11楼
3、根据30mm/s的进给速度和4mm的螺距,大概知道电机工作在400转/min左右,一般的步进电机在这种转速下扭矩都会有下降,由此需要考察一下电机是否有丢步现象,有些丢步现象在高细分的情况下不容易觉察。

4、另外,我个人感觉可能问题出在“步进+编码器”这种基本控制结构上,倒不是说这种结构有什么问题,关键看是如何利用和控制它,问题在于你不能将步进的“步”与编码器的脉冲一一对应,这就需要在控制上采用一定的方法,建议多看看这方面的资料,包括网上的。

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-10 11:50:00
12楼
首先谢谢 swift1972: ,今天一早我就去写了下程序,想把编码器的信号用上,而且用双信号(步进的数据用步进本身的,而编码只做制位动作),为了让编码信号有优先权,我把每次给步进的脉冲数量加上了100,这样不会担心步进脉冲发完,而编码器脉冲还差一两个的问题了。正因为这个问题,我就麻烦了,动作完成后,一到回软原点步进就不听使唤了,一直往上冲,我仔细检查了它们的逻辑关系,没发现哪里。。。。我觉得奇怪,步进细分1600脉冲/转和编码器两倍频1000脉冲/转,这样,我反4mm放大K10000来除以1600,则为25(0。0025MM=脉冲),做为步进的数据,而编码的我把4MM放大K1000来除以1000,那么得到4mm,都是整数啊,运算上没有丢失啊,为什么让编码控制走10MM和让步进本身的发脉冲走10MM而出现步进本身的脉冲已走完,而编码器反而还差呢,我是不C251以中断方式计数的呀

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-10 11:52:00
13楼
 首先谢谢 swift1972: ,今天一早我就去写了下程序,想把编码器的信号用上,而且用双信号(步进的数据用步进本身的,而编码只做制位动作),为了让编码信号有优先权,我把每次给步进的脉冲数量加上了100,这样不会担心步进脉冲发完,而编码器脉冲还差一两个的问题了。正因为这个问题,我就麻烦了,动作完成后,一到回软原点步进就不听使唤了,一直往上冲,我仔细检查了它们的逻辑关系,没发现哪里。。。。我觉得奇怪,步进细分1600脉冲/转和编码器两倍频1000脉冲/转,这样,我把4mm放大K10000来除以1600,则为25(0。0025MM=脉冲),做为步进的数据,而编码的我把4MM放大K1000来除以1000,那么得到4mm,都是整数啊,运算上没有丢失啊,为什么让编码控制走10MM和让步进本身的发脉冲走10MM而出现步进本身的脉冲已走完,而编码器反而还差呢,我是用C251以中断方式计数的呀。。。。

wenjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:27帖 | 629回
  • 年度积分:0
  • 历史总积分:733
  • 注册:2005年2月21日
发表于:2007-10-10 13:13:00
14楼
关注中,希望楼主公布最后结果!

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-10 13:30:00
15楼
根据楼主最后的贴子,其中提到“让编码控制走10MM和让步进本身的发脉冲走10MM而出现步进本身的脉冲已走完,而编码器反而还差呢”,同样的10MM,按步进本身的脉冲当量算是4000个脉冲,而按照编码器的脉冲当量算是2500个脉冲,那么直接给步进4000个脉冲而不管编码器的反馈和当编码器接收到2500个脉冲就停,比较这两种情况下,钻头进给的距离,正常情况下,应该相同,也就是应该为10MM。否则看是哪种情况下,进给不是10MM。

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-10 13:41:00
16楼
1、如果是给电机4000个脉冲,进给不是10mm,就肯定是电机执行有问题,如出现丢步,或者是机械部分有问题,造成电机执行了4000步,但钻头没有推进10mm

2、如果是编码器接收到了2500个脉冲时,进给不是10mm,首先应该怀疑编码器的信号以及与PLC之间的通讯问题,比如通讯受到干扰,PLC把一些波形上的毛刺也当成了脉冲了。如果确信编码器部分没有问题,那就要分析整个控制逻辑了。在“步进+编码器”这种结构里,编码器是基准,首先保证它不能错,也就是说,当编码器接收到1000个脉冲时,丝杆正好转了一圈。

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-10 16:35:00
17楼
首先谢谢swift1972:的指导,以编码器信号为基准的程序,刚刚写完了,动作也到位了,本来今天想比较一下以步进本身的信号为基准和以编码器信号为基准的两个程序,他们到底会相差多少,至于相差的原因我想应该是swift1972:所分析的吧。现在快下班了,我借不到百分表了,所以还请各位谅解,明天再把结果告诉大家吧,谢谢! 

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-11 10:44:00
18楼
大家早上好,首先谢谢各位的帮助和指点.我刚刚打表了,以步进为基准的程序,在空载的情况下,运行一周后,没有丝毫误差(0.01精度).每次回归的软原点是一样的....而以编码器为基准的空运行后,在正负13丝(0.13内摆动)......
设软原点为步进消除了机械信号的误差,精度是达到了,但我担心在工作中(加工产品),如果转矩不够的话应该为失步吧...而且此误差会累加....
而以编码为基的,因为我用电话线加长了一米,不知是否正如SWIFT1972所说,信号给得不对.但我确实觉得很难啊,因为假如我用C251计数要求值为别为K1000,K100,K-100,,K200,K-200,这样快速工作直达到要求孔深,速度越快,给我的计数到位脉冲信号宽度越窄,所以.....不知有没好办法啊,是不是我的编写方法错了呢?.(计数到位信号都是中断输出的呀DHSCS,DHSCR),谢谢!

风筝和线

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 68回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2004年3月16日
发表于:2007-10-11 10:46:00
19楼
等下我去要产品去了,下午用以步进为准的程序来加工几个产品再看看,至于编码器的,还请各位师付们多指点啊,谢谢!

swift1972

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 97回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2007年7月09日
发表于:2007-10-11 13:03:00
20楼
根据楼主最后的实验结果,其实已经很说明问题了,问题就是出在编码器部分,这一部分包括编码器本身、PLC与编码器的通讯,以及根据编码器的到位中断停电机等主要几个方面。要检验编码器本身以及与PLC通讯是否正常,可以用相反的简单方法来验证:因为通过实验,目前看来电机及相关执行机构没有问题,那么就可以给电机发4000个脉冲,然后看当脉冲全部完成时,编码器反馈的脉冲是不是2500个就清楚了。

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页