展开查看
一个应用,基于高速计数器实现定长切割,当达到计数长度后,需要中断事件将高速计数器当前值清零,开始再次技术,我遇到的问题是高速计数器当前值无法清零,求大佬指导,
S7-200SMART高速计数器中断子程序清零当前计数值
提问者:weirilin
第10000个脉冲执行清零。但是清零动作中第10001个脉冲来到,结果被清掉。下一个回合白白少了一个脉冲。
如果觉得一个两个脉冲没什么所谓,就清零啦。
你最好就是习惯使用当前值减过去值得到增量。而你喜欢把过去值一直看成0而已。所以当前值减0就是当前值。省脑。(54322234-54321234=多少?很难算是吧。看着都烦。1000-0=多少?这个都不用算:1000。)这个数是plc算的,又不花你脑汁。
这习惯的好处没发现罢了,遇到的时候你想起来就够了。例如同一把尺上存在两个观察点移动,当一个离开了,你清零不?清了,后面这个坐标不要了?后面这个没走完第三个又来了。没法从0开始算了吧?
查看完整帖子:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1870982&bid=64芳季工程师提供了有效建议,用当前值减去过去值,是我没想到的算法方式,赞!
基于设备时连续运行的工况,这个算法可预见到的问题会是,当高速计数器的当前值寄存器SMD38/HC0寄存器溢出后,数据失效,依旧需要高速计数器当前值清零,HC0控制字SMB37的定义如下:
SM37.0 HSC0 复位的有效电平控制:FALSE:高电平激活时复位,TRUE:低电平激活时复位
SM37.1 保留
SM37.2 HSC0 正交计数器的计数速率选择:FALSE:4x 计数速率;TRUE:1x计数速率
SM37.3 HSC0 方向控制位:TRUE:加计数
SM37.4 HSC0 更新方向:TRUE:更新方向
SM37.5 HSC0 更新预设值:TRUE:将新预设值写入 HSC0 预设值
SM37.6 HSC0 更新当前值:TRUE:将新当前值写入 HSC0 当前值
SM37.7 HSC0 使能位:TRUE:启用
唯一可以看到的关联的是,SM37.6置1,更新当前值写入HSC0,怎么实现更新为0呢?