回复:如何准确的测量多个频率(或转速)?

已锁定

手机用户20230828277407

  • 帖子

    9
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2023-08-28

普通 普通 如何晋级?

发布于 2023-09-26 16:09:39

22楼

展开查看
以下是引用芳季在2023-09-26 14:54:58的发言 >21楼

1这个如果你信的话就不需要再验证了。能通过的。下一次的中断可以在上一个值上增加1000啊。这增加没阻碍高计的计数。而复位是影响到高计计数的。都说了。来一个脉冲到底清不清除这个脉冲。而修改设定值,修改归修改,计数归计数,河水不犯井水。

2……后面的。这个知道就是了。有时间我再仔细看你的程序。

计算脉冲密度最好是使用Bitime时间刻度,扫描扫到什么值就什么值。分子是脉冲个数,分母是Bitime刻度。随时读个分子紧跟读个分母,不论间隔多久,一除还是对的。避开了所有准不准的问题。100个脉冲用了100毫秒算出来是1khz,106个脉冲用了106毫秒,仍然算出来是1khz。

以下是引用手机用户20230828277407在2023-09-25 17:09:54的发言 >10楼: 1、先说说你的其二...

引用10楼详细内容:

 1、先说说你的其二,你是对的,但操作层面有点问题。     

      不复位的话,下一次减上一次是可以的。(当然靠近最大值拐角处要再验证一下算法的有效性,ARDUINO对系统计时有大拿进行过分析)。

     另外,要再梳理一下细节。我这个中断程序存在两个细节,一是将当前值清0,二是用HSC指令激活。可以当前值不清0,那下一次计满1000次中断怎么办?不是清当前值CV就是重设中断时的值PV。都得用HSC指令激活。是激活时算复位吗?

2、我最初是用的定时中断里对多个HSC采样,也是不一样的,差别也较大。这个按你的方法去试可能更有操作性。不过我这台SMART硬件定时中断有17%的不准,现在是提高HSC的准确度和一致性问题,时基准不准先可以不考虑。

3、对你的第一条,我觉得跟我这个现象不是一个问题。瞬间的脉冲属于正负1误差问题,可以接受,我试出来的4%的差别太大了。

4、至于进入中断和和处理结果的时差问题,除非中断中间系统又去做别的了,否则可以忽略不计。因为资料里说指令是us级的,中断里没几条指令。因为PLC指令不是处理器的汇编指令,没法去查真正的用时,应该对应的机器指令也长不了。资料里说中断也不支持嵌套,这是针对用户用的中断,实际系统有没有嵌套我就不知道了。这些都可以用BITIM大概看一下,回头我试一下。问题是,如果跟这个有关系,那后取数的应该比先取数的更多,实际是HSC0是1013,HSC3是971,更少。换一下顺序我也试过,一样的现象。我这个现象跟中断里的执行时间应该没关系。


以下是引用芳季在2023-09-25 13:23:31的发言 >8楼:其一。这里就只看见...

引用8楼详细内容:

其一。这里就只看见程序,就只聊程序。重启这瞬间来了个脉冲,那么这个脉冲你说是清了它还是留着它?

其二。高计从3456走到4567走了几?另一个高计从0000走到1111又是走了几?谁说必须复位的?租房子不是包租婆也是给你抄表底的吗?谁会把水表拨回0开始算?

再者,进入中断和处理得到结果是有时差的。这些细微的时间多了就看得见了。

 1、       最新的试验结果出来了,达到了多个高速计数基本相同的效果,三个显示在1012和1013之间跳。这是正常的,因为存在正负1误差。正负1误差可以通过多次采样平均来优化。

         那么,按我这个思路精确测频率就可以实现了。用Q0.0产生标准频率,接入I0.0进行HSC0,中断中重置HSC0,获得准确时间;并且采样另外被测脉冲。

        相对主贴的改动就是不在中断里重置HSC3和HSC4,及算前后两次中断的差值。HSC0还是重置,不想重计算中断比较值。

        多谢芳季、大连穆工,你们反复说不要重置。也多谢其他网友,后面有时间一起探讨,因为关于中断响应时间、定时中断准不准等问题还需要跟大家探讨学习。

2、新的问题:

     2.1  为什么HSC重置会影响计数准确性?这个影响不是正负1误差影响(不认可方季的解释),而是高达4%的影响(1000次有40次的影响,或40ms)。我估计跟HSC激活指令的实际执行时刻有关。多个HSC指令倒底是在中断里立马执行还是退出后执行?执行时是前后脚执行,还是有可能相差多达30多个ms间隔执行?

      以及,为什么我重置HSC0一个又没有影响?理论上,HSC3和HSC4不断计数,但重置HSC0的时刻不是即时的话,假设存在10ms的延时,那HC0和其他两个不可能相同。这么看的话,应该是在中断中立即执行重置了。

3、遗留问题:

     3.1 上面有版主yanxiao怀疑中断响应时间13ms太长,我也怀疑。现在找不到官方资料,从单片机的角度来说,应是us级的。有没有可能还是跟我重置HSC0有关。

    3.2 网友winter938做的测试是没有发现有13ms存在,也就是在HSC0的比较中断中再次读取HC0的值仍是1000,跟我这里的不一样。差异性到底在哪里还要再分析,请winter938再研究一下,或贴出测试程序。非常感谢!

   3.3 计算前后两次中断里HSC读数,存在着到达顶部后拐弯的问题。相关的减法会不会出一次问题,我还要再验证一下。这个有时间再说。



   

        

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9487条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。