西门子atch指令详解_西门子PLC中断指令?

题主的这段代码来自S7-200 (Smart) 的编程。

先说答案,这段代码能实现200ms数据采集的。

题主的疑问来自对“中断”理解的不到位。

首先,这是两个程序块的代码:

一个是主程序(MAIN);一个是中断服务程序(名称为:INT_EX);

主程序三行代码分析:

1)MOVB 200,SMB34

解释:这行代码把SMB34的值变为200。SMB是时间中断0的时基,单位为毫秒。所以这行代码把时间中断0的时基设为200ms。

2)ATCH INT_EX,10

解释:这行代码把中断程序块INTEX和中断事件10联系起来,也就是说,一旦CPU检测到中断事件10发生了,就调用INT_EX来对中断进行处理。“中断事件10”是什么呢?其实就是时间中断0。看下图:

3)ENI

解释:全局范围内使能中断程序。在CPU启动后,中断默认是关闭的。需要使用ENI使能才能使用。

好了,这三行代码的前面还有一行代码:

LD SM0.1

SM 0.1为特殊存储区SMB0的第1位,仅在CPU上电的的第一个循环扫描周期为真。有了这行代码,其后的三行代码都是仅在第一个扫描周期执行的。也就是仅执行一次,相当于程序的初始化。

至此,主程序对中断做好了设置:CPU会每隔200ms调用一次INT_EX中断处理程序。

中断处理程序INT_EX:

1)LD SM0.0

解释:SM0.0 为特殊存储区SMB0的第0位,永远为真。

因此,它后面这行代码会继续执行。

2)MOVW AIW0,VW200

解释:这行代码把模拟量AIW0的值传输到VW200的地址,实现了数据的采集。

这样解释,看懂了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值