关于硬件上升沿中断的问题

已锁定

伊默

西门子1847工业学习平台

  • 帖子

    4260
  • 精华

    119
  • 被关注

    201

论坛等级:至圣

注册时间:2003-10-24

黄金 黄金 如何晋级?

关于硬件上升沿中断的问题

9371

34

2007-03-05 09:53:04

事情的起因: 在我的一个项目中使用了松下A4伺服,需要回原点的功能。我设置了伺服编码器的Z相做为零位,将该信号接入到S7-226的I0.0,使能I0.0的硬件中断。 然后让电机以30RPM的转速寻找原点。 结果情况是眼睛都能看到I0.0的上LED灯一闪一闪的(电机每圈一个Z脉冲),可是I0.0上升沿中断就是没有执行!
最初的判断: 既然眼睛都能看到LED灯闪,那么说明Z相输出的脉冲周期应该足够长了。

可是为什么I0.0接收不到呢? 一直在找原因,一个上午没有头绪。后来经同事指点,说改用高速计数HSC0试试,结果一试就好。后来又有网友提示说是Z相脉冲太短了,故I0.0捕捉不到。。。 可是眼睛都能看到LED灯啊! 我不能不相信自己的眼睛吧? 带着疑问,刚刚做了一个实验,实验对象CPU224XP,将Q0.0直接接到I0.0上。 写了一个程序:
LD SM0.1
MOVB 16#85, SMB67
MOVW VW200, SMW68
MOVD 1, SMD72
ATCH INT_0, 0
ENI

LDN M0.0
TON T37, 10
A T37
= M0.0
R Q0.0, 1
PLS 0
中断程序:
LD SM0.0
INCB VB100
程序的原意是让程序以每秒输出一个脉冲,周期为VW200。同时通过监控VB100的值,就能知道中断中否被执行。
第一步,强制VW200=200(us),结果发现I0.0的LED一闪一闪的......这说明我的眼睛欺骗了我啊! 0.2ms周期的脉冲,眼睛也能看得见!呵呵。问题被发现了,这说明有时也不能轻易相信自己的眼睛啊!
第二步,将VW200的值逐步增大,一直到了周期几毫秒!I0.0中断还是没反应!这下我坐不住了。S7-200怎么能这样呢! 以前可从没考虑过这上升沿中断信号的长度问题呀!(因为一般长度都够了,呵呵)。后来再仔细想想...再想想,想出下面的图来了:


看看上面的滤波! 把I0.0-I0.3组的时间设为0.2ms,再来把VW200强制为400us(脉冲时间就为0.2ms了!),中断有反应了!再试试临界条件,将VW200逐步减小到360,这时中断有时有反应有时就没有了! 所以说大概就是周期等于该滤波时间的两倍吧!

现在想想,有时不能太相信自己的眼睛呐!还有,对于软件还有很多没有真正明白的,或者说因为使用条件本来很充分,所以没有注意到这个问题的。适当的时候要多否定自己啊,呵呵。 另外找出了一个曲线救国的办法,就是脉冲周期实在是太短了,小于0.4ms,而又想捕捉该点的上升沿中断,咋办?用高速计数吧! 设置SMB37=16#FC,SMD38=0,SMD42=1,使能HSC0的Pv=Sv中断。
关于硬件上升沿中断的问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33777条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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