西门子200 smart PLC几个“绝端”状态下的测试

已锁定

WWCWWC

西门子1847工业学习平台

  • 帖子

    7980
  • 精华

    145
  • 被关注

    1328

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

西门子200 smart PLC几个“绝端”状态下的测试

2530

9

2019-01-11 08:10:44

star star

西门子200 smart PLC几个“绝端”状态下的测试

   今天在“找答案”栏目看到有这样一个提问,提问大致描述:在OB1主程序中,当输入10.0将要使能前,中断触发条件满足了被优先调用去执行中断,当中断执行完毕离开时,这时输入I0.0使能信号也“同时”也离开了。问,这时的I0.0在主程序段还有效?

提问链接:http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=209691&cid=1072#

其实,这个问题已经很显然了,在OB1主程序中的程序段扫描(采集)I0.0是没有得到有效使能的。首先,在OB1主程序网络中I0.0(将要被使能),说明此时该点信号并没有被输入刷新,而当被执行中断时和中断执行完毕后,该输入I0.0使能已经离开,说明仍然没有被使能的。那如果同时被使能呢?情况会咋样,为验证这个环境下的真实结果,唯有进行验证、测试才能够理解明白。

测试步骤:

1)  初始化调用程序的地址区,确保调用程序的地址值自初始开始;

2)  定义一个外部输入中断,中断事件0#的I0.0外部上升沿中断、指定中断子程序INT_0;

3)  连接一个外部的I0.0硬件输入;

程序:


当I0.0捕捉到一个上升沿时,首先优先触发中断。在中断子程序中先在VB0加1,然后,复位M0.0。复位M0.0的目的是为了“同时”触发I0.0有效时,让OB1的I0.0上升沿有效,由I0.0重新触发一次M0.0产生的上升沿脉冲,当然,直接用I0.0替代M0.0的效果是一致的。

中断子程序:


验证结果,同时使能I0.0时,中断及上升沿触发均有效。

VB0 = 2的累加过程:

当OB1捕捉到I0.0上升沿信号时,先处理中断子程序,使VB0 = 1,中断返回到OB1时,系统捕捉上升沿脉冲时,VB0 = 1+1 = 2。也就是说VB0在一个周期内被执行“加”了2次的程序。

下面2个程序的比较,可以明显看出中断程序的优先效果了。

没有将中断程序的条件添加到循环指令时的程序:


添加中断程序处理结果后的程序:


可见,cpu先执行外部上升沿中断程序后,将M0.2使能,“切断”了INC_DW指令的累加条件,而并非是没有执行循环体指令。

验证结果小结:

    当中断及上升沿在同一个周期内同时被触发,显然,是先执行中断程序内的优先,中断执行完毕后,把中断运行后的结果值传送到OB1再继续执行其余的程序段。这个结果应该可以让那位网友理解最基本的plc工作机制了。


西门子200 smart PLC几个“绝端”状态下的测试 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7476条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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