当前位置:
台达用编码器测转速怎样比较准
回复 | 人气 | 打印
刘雨菡2011 个人主页 给TA发消息 加TA为好友 发表于:2015-11-08 19:42:54 楼主

我想请教台达的大神,怎样写用编码器测转速的程序比较准,就是写出来的结果跟用转速表测得结果差不多的,用SPD指令应该有一点误差,然后再用系数修正,有没有比较准一点的写法,另外一种是我用的M1013的上下沿测半秒内的脉冲数,结果再*120就是一分钟内的脉冲数,这样不知道跟 SPD指令相比,哪一个准,还有没有大神写过的好的程序 ,并且用转速表测过的的程序给个思路,

分享到: 关注收藏 邀请回答 回复 举报
江湖再见-余辉 个人主页 给TA发消息 加TA为好友 发表于:2015-11-08 21:25:57 1楼
 

高手呢   一起期待            

  回复 引用 举报
第五纪冰川 个人主页 给TA发消息 加TA为好友 发表于:2015-11-09 20:39:52 2楼
 

使用硬件计数器,时间中断,DCNT指令写在中断程序里面,执行到DCNT指令的时候就会去读硬件计数器的现在值,读到后立即执行复位计数器指令。

500mS时间比较长,需要在中断程序中做计数多长中断到500mS。

比如中断时间设置为50mS,中断程序中每次都执行DCNT指令(这样PLC启动后50mS就启动计数器了),再设置一个计数器,当计数到10次时(也就是500mS)就把计数器值读出来,立即复位计数器。

这样做最极端的情况下就是丢失一个脉冲而已,也就是在DCNT指令执行到复位计数器之间的几步指令之间(也就是数uS)内正好到来一个脉冲,这个脉冲虽然被计数器记录到,但却被复位了。也就是复位计数器指令要与DCNT指令尽量靠近,最小也得有一条DMOV指令把计数器读出来的指令。

  回复 引用 举报
刘雨菡2011 个人主页 给TA发消息 加TA为好友 发表于:2015-11-10 07:34:26 3楼
 

回复内容:

对: 第五纪冰川 使用硬件计数器,时间中断,DCNT指令写在中断程序里面... 内容的回复!

 嗯,我试一下,我不是在PLC启动后50ms就启动计数器,需要在指定的M启动后才启动计数器,这样写您有用转速表在现场实际测过吗,在速度恒定的情况下误差有多少

  回复 引用 举报
第五纪冰川 个人主页 给TA发消息 加TA为好友 发表于:2015-11-10 15:00:03 4楼
 

使用时间中断的目的是非常精确的定位时间段,只有这个时间精确了才有测准确的基础。

如果要在指定的M启动后才开始计数,比较麻烦一点。因为时间中断是不受控的,是由系统自动启动的。启动M到来后到开始计数最大的允许延迟时间是多少?如果50mS觉得比较长,只能把时间中断调小些,比如10mS,但这样中断太过频繁,开销过大。


当然做过的,感觉特准确。


在忽略定时误差的情况下,最大也就是1个脉冲的误差。这个误差就是从DCNT指令开始到复位计数器的这个短暂时间内所丢失的脉冲。这个时间不过就是数uS定义为T1。速度脉冲的频率PLC最大接受100kHz,实际上比如用1000线的编码器,50rps,也就是50kHz的频率,周期20uS,显然大于T1,也就是最大丢一个脉冲。

检测周期你为500mS,那么1000线*50rpS*(500mS1/S)=25000个脉冲,也就是在忽略时间中断误差的情况下最大误差为1/2W5。定时中断的时间精度没有看到台达给出的参数,但应该是非常高的,估计在uS级别,即使在100uS级别,也不过就是100uS/20uS+1=6,也就是误差不过就是6/2W5.

再考虑晶体振荡器时间误差的情况(现在的高频晶体减震器精度还是挺高的),我觉得0.5/1000的综合精度是完全没有问题的。

  回复 引用 举报
刘雨菡2011 个人主页 给TA发消息 加TA为好友 发表于:2015-11-11 07:49:17 5楼
 

 

回复内容:

对: 第五纪冰川 使用时间中断的目的是非常精确的定位时间段,只有这个时间... 内容的回复!

 谢谢老师的回答,我想错了一个问题,这个时间中断我可以上电就开始运行,但这个脉冲数我不但要用来计转速,我在程序中还要它来经过计算复位一个指定的M,就是我要计它的脉冲数到了指定的脉冲数如D100来复位一个M,那就意味着这个脉冲数我不能清零,那这样可以做吗

  回复 引用 举报
刘雨菡2011 个人主页 给TA发消息 加TA为好友 发表于:2015-11-11 07:51:51 6楼
 

回复内容:

对: 刘雨菡2011  回复内容:对: 第五纪冰川 使用时间中断的目的是非常... 内容的回复!

 

回复内容:

对: 第五纪冰川 使用时间中断的目的是非常精确的定位时间段,只有这个时间... 内容的回复!

 就是这个M置位后开始计脉冲,到了指定的脉冲数如D100后复位这个M,那这样就不能复位计数器了,D100是不确定的,是根据用户调整大小的,那这样好做吗

  回复 引用 举报
第五纪冰川 个人主页 给TA发消息 加TA为好友 发表于:2015-11-11 08:52:35 7楼
 


回复内容:

对: 刘雨菡2011 回复内容:对: 刘雨菡2011  回复内容:对: 第五... 内容的回复!

用两个输入点并联,启用2个硬件计数器,一个计数器用于测速(时间中断),一个用于脉冲控制(计数器到达中断)。

中断优先级我记不清楚了,你查下。要想精度高点,我也没有找到更好的方法。

本来用软件计数器方便些,但必须在扫描周期中来处理数据,精度肯定不行。

测速的话还有个脉宽测试可以用,但定时分辨率只有0.1mS,精度本来也还不错,但分辨率达不到你的要求。

  回复 引用 举报
刘雨菡2011 个人主页 给TA发消息 加TA为好友 发表于:2015-11-11 19:09:50 8楼
 

回复内容:

对: 第五纪冰川 回复内容:对: 刘雨菡2011 回复内容:对: 刘雨菡... 内容的回复!

 我用的是台达DVP48EH3-T,四个HHSC我都 已经用完了,没有办法并联了,两个用于伺服反馈的信号计算位置,两个用于编码器测转速,用AB相的话只有5KHZ的频率,不知道够不够用,我算出来编码器大概有600RPM,用500PPR的编码器的话就是5KHZ,再高的话就计不了了,我还有一个测线速的和计米的已经是用的软件计数器了,就是一个信号并联,一个测转速,一个计米,用的是NPN的感应头,一转10几个脉冲,就是两个编码器的转速我想测准一点,因为那个脉冲算出来是要给伺服的脉冲频率信号,转速越准伺服走得越准,

  回复 引用 举报
第五纪冰川 个人主页 给TA发消息 加TA为好友 发表于:2015-11-12 15:56:58 9楼
 

没招了!加个便宜点的PLC专门用来测速吧。

与伺服之间用通讯不行吗?留一部分工作给伺服自己做。

  回复 引用 举报
刘雨菡2011 个人主页 给TA发消息 加TA为好友 发表于:2015-11-12 17:13:18 10楼
 

回复内容:

对: 第五纪冰川 没招了!加个便宜点的PLC专门用来测速吧。与伺服之间用... 内容的回复!

 

谢谢你的回答,我先按照自己的思路来做一下试试看,不行就改吧,主要是这个机器用了两套伺服,轮流更换使用,占用了全部计数器,

  回复 引用 举报
cyandsyp01 个人主页 给TA发消息 加TA为好友 发表于:2018-03-16 20:14:20 11楼
 


回复内容:

对: 第五纪冰川 使用硬件计数器,时间中断,DCNT指令写在中断程序里面... 内容的回复!

有没有程序样例发我一份谢谢

  回复 引用 举报
love2009xiu 个人主页 给TA发消息 加TA为好友 发表于:2018-05-31 22:59:43 12楼
 

建立缓存区,BMOV 类似于堆栈先进先出,加定时中断,做动态采集比SPD 准确的多。

  回复 引用 举报
jack779 个人主页 给TA发消息 加TA为好友 发表于:2019-06-04 08:16:42 13楼
 

路过,谢谢

  回复 引用 举报
个人主页 给TA发消息 加TA为好友 发表于:2019-11-25 20:12:22 14楼
 

回复内容:

对:love2009xiu 建立缓存区,BMOV 类似于堆栈先进先出,加定时中断,做动态采集比SPD 准确的多。     内容的回复:

可以描述的再详细一些吗

  回复 引用 举报

周点击排行
周回复排行
最新求助