斑主提供的S7-200程序中的中断问题? 点击:805 | 回复:11



qx100

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 124回
  • 年度积分:0
  • 历史总积分:255
  • 注册:2005年9月06日
发表于:2007-08-22 15:54:00
楼主
下面是老菜鸟斑主提供的摩托车装配线的一个高速计数器到达预设值时产生的一个中断程序。研究了半天没有弄明白,1、该中断里的定时器是怎样工作的?是一直计时,还是调用时才计时?2、T96是如何复位的?请高手相助,以解心头之惑。谢谢!


网络1
LD     SM0_0:SM0.0
MOVW   T96, VW1950
网络2
LDN    SM0_0:SM0.0
TON    T96, 32767

网络3
LD     SM0_0:SM0.0
MOVD   +0, SMD_38:SMD38
MOVD   VD3000, SMD_42:SMD42
MOVB   16#F8, SMB_37:SMB37
HSC    0
TON    T96, 32767



老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-08-22 22:00:00
1楼
T96应该是在主程序中计时的;网络1是把T96的值写入到VW1950;
我今天在网吧,看不到整个源程序,方便的时候我会尽快回复。

qx100

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 124回
  • 年度积分:0
  • 历史总积分:255
  • 注册:2005年9月06日
发表于:2007-08-23 07:49:00
2楼
谢谢!斑主您好!我已给您发过邮件了,不知收到没有,我的邮箱bijingqun9600@126.com

qx100

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 124回
  • 年度积分:0
  • 历史总积分:255
  • 注册:2005年9月06日
发表于:2007-08-27 09:50:00
3楼
斑主,菜鸟急切盼望您的答复!不知道是程序问题还其原因,本人实在迷惑不已。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-08-31 18:18:00
4楼
不好意思,因为个人原因今天才给你回复,抱歉!
    我看了一下这个程序,发现当时的编程方法确实有点另辟蹊径,或者旁门左道,呵呵@_@
    你编程序时完全可以按照你自己的思路来编写,不一定要用我的方法。因为条条道路通罗马,只要达到目的就OK了——总体编程思路和方法没问题就不存在原则性的问题。
    下面我解释一下你提出的这个问题:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-08-31 18:23:00
5楼

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-08-31 18:34:00
6楼
该中断程序是高速计数器0中断;
网络1:将当前的T96定时器的值传送到VW1950;
网络2:执行T96定时器指令——因为SM0.0始终是导通的,所以SM0.0的常闭触点就是断开的,执行这段程序的结果就是把T96的当前值置为0,T96常开触点断开;
网络3:将HSC0的初始值设置为0;将HSC0的预置值设置为VD3000中的数据;设置HSC0的控制字;设置高速计数器0;启动T96定时器。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-08-31 18:46:00
7楼
可以看出,T96是在中断程序的最后才开始计时的;当中断发生时,先把T96当前值保存下来,再将T96复位——网络2就是T96的复位程序(当然也可以采用MOV的方式来实现T96的复位);然后再重担程序的最后开始T96计时,完成一个循环......
    因为中断程序只有中断时才执行一次,所以在当前计数值还没达到预置值时时不会执行中断程序的,也就是说网络2不会被执行,T96也就不会被复位,也就一直计时。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-08-31 18:55:00
8楼
比较有意思的是:程序中采用的T96是1ms硬件定时器,只要启动了T96,即使不在扫描周期中刷新它,它也会自动执行刷新。

qx100

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 124回
  • 年度积分:0
  • 历史总积分:255
  • 注册:2005年9月06日
发表于:2007-09-01 10:25:00
9楼
谢谢!非常感谢!看了斑主的讲解,豁然开朗.让我对中断里的定时器的运用有了新的了解!祝斑主工作顺利!好人一生平安!

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-09-01 13:53:00
10楼
不客气。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2007-09-01 14:42:00
11楼
顶一顶!

热门招聘
相关主题

官方公众号

智造工程师