恭喜,你发布的帖子
发布于 2023-09-26 14:54:58
21楼
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,更少。换一下顺序我也试过,一样的现象。我这个现象跟中断里的执行时间应该没关系。
1这个如果你信的话就不需要再验证了。能通过的。下一次的中断可以在上一个值上增加1000啊。这增加没阻碍高计的计数。而复位是影响到高计计数的。都说了。来一个脉冲到底清不清除这个脉冲。而修改设定值,修改归修改,计数归计数,河水不犯井水。
2……后面的。这个知道就是了。有时间我再仔细看你的程序。
计算脉冲密度最好是使用Bitime时间刻度,扫描扫到什么值就什么值。分子是脉冲个数,分母是Bitime刻度。随时读个分子紧跟读个分母,不论间隔多久,一除还是对的。避开了所有准不准的问题。100个脉冲用了100毫秒算出来是1khz,106个脉冲用了106毫秒,仍然算出来是1khz。
请填写推广理由:
分享
只看
楼主