不小心错用了高计

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15507
  • 精华

    101
  • 被关注

    960

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

不小心错用了高计

1116

3

2012-06-30 08:54:01

自己明明知道的一个事情,在一个使用中却犯了错。
我的意图是用高计计算编码器的速度的。在定时中断中计算先后两次高计值,得到当前增量。
程序大概是这样的:(初始化不写了)

LD SM0.0
MOVD HC0 VD4
-D VD0 VD4\\当前值减旧值。
MOVD HC0 VD0\\当前值保存为旧值。

这样VD4得到的是增量。
可是,这就有错发生了。
第二行读一次高计。第四行又读一次高计。其实两次的读取已经不是同一个数的高速计数器的工作频率很高,在一个指令的执行过程中已经在后台中加了不少数量的脉冲了。然后在第二次读取的话当前值已经变化了。
可能有人有个疑问,其实两次中断之间的两个“MOVD HC0 VD0”指令的时差仍然是固定时间啊。这个说法是对的。当用于速度控制的话这个事情的确可以忽略。因为速度再新鲜毕竟已经是一个历史数据。而用到位置控制的话这个影响就会凸现。每个周期下来脉冲量差了几个脉冲,这个不是精度问题,而是变成了对错问题。
为了得到正确的值,要把高速计数器当前值先保存起来,然后在以后的过程中只使用保存的这个值。这样就会统一起来。不出现差错。

LD SM0.0
MOVD HC0 LD0
MOVD LD0 VD4
-D VD0 VD4\\当前值减旧值。
MOVD LD0 VD0\\当前值保存为旧值。

凡是对高计的读取操作都要注意到实时更新的问题。最经常看见的错误还有是复位高计的操作。复位动作的过程中难保没有一个脉冲漏掉,最好是尽量别复位。
不小心错用了高计 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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