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

已锁定

winter938

  • 帖子

    1550
  • 精华

    33
  • 被关注

    41

论坛等级:至圣

注册时间:2005-06-09

黄金 黄金 如何晋级?

发布于 2023-09-26 19:50:22

24楼

以下是我的测试程序,硬件上Q0.0接线到I0.0,I0.0滤波选了最小的0.2us



ORGANIZATION_BLOCK MAIN:OB1

TITLE=程序注释

BEGIN

Network 1 

// Q0.0以20us周期10us脉宽输出脉冲(50KHz)

LD     SM0.1

MOVB   16#81, SMB67

MOVW   20, SMW68

MOVW   10, SMW70

PLS    0

Network 2 

// I0.0接收Q0.0输出脉冲进行计数,在计数到1000000进入中断0

LD     SM0.1

LPS

MOVB   16#F8, SMB37

MOVD   0, SMD38

MOVD   1000000, SMD42

HDEF   0, 0

ATCH   INT0, 12

AENO

ENI

LPP

HSC    0

Network 3 

// 以250ms为周期产生定时中断,每隔250ms进入中断1

LD     SM0.1

MOVB   250, SMB34

ATCH   INT1, 10

AENO

ENI

END_ORGANIZATION_BLOCK

SUBROUTINE_BLOCK SBR_0:SBR0

TITLE=子程序注释

BEGIN

Network 1 

// 程序段注释

END_SUBROUTINE_BLOCK

INTERRUPT_BLOCK INT_0:INT0

TITLE=中断例程注释

BEGIN

Network 1 

// 计数中断读HC0当前值获得中断响应延迟

LD     SM0.0

MOVD   HC0, VD0

END_INTERRUPT_BLOCK

INTERRUPT_BLOCK INT_1:INT1

TITLE=中断例程注释

BEGIN

Network 1 

// 250ms定时中断获取当前HC0值减去上次值从而计算出两次定时中断期间HC0的计数差

LD     SM0.0

MOVD   HC0, VD4

MOVD   VD4, VD12

-D     VD8, VD12

MOVD   VD4, VD8

Network 2 

// 程序段注释

END_INTERRUPT_BLOCK




从监控数据看高计中断响应延迟在60us 左右,250ms 的定时中断读得的高计差值在12500。当脉冲频率提升到100KHz时高计中断响应延迟仍在60us 左右,250ms 的定时中断读得的高计差值在25001.数据是符合预期的。

工控爱好者
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8936条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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