概述
本程序适用于SIMATIC
S7-212和S7-214的计数器,可以从0计到255,这要取决于输入10.0的状态。如果将输入10.0置为1,则程序减计数;如果将输入10.0置为0,则程序加计数。
如果输入10.0的状态改变,则将立即激活输入/输出中断程序,中断程序0或1分别将有储器位M0.0置成1或0。
例图
程序框图
程序和注解
本程序是一个输入/输出中断程序的范例,计数器从0计到255。如果输入10.0为0,则程序加计数;如果输入10.0为1,则程序减计数。
本程序包括以下三个程序:
Main (主程序)
初始化和计数
INT0 (中断程序0)
输入10.0为1时,减计数。
INT1 (中断程序1)
输入10.0为0时,加计数。
本程序长度为32个字
//标题:事件中断
//********主程序*********
//主程序包括初始化程序和计数程序。
//计数器的存储器标志位M0.0的0或1状态,决定计数方向为加或减计数。
//当输入10.0山0变为1时,产生中断事件0,激活中断程序0
(INT0)。
//中断程序0将存储器位M0.0置成1,导致主程序减计数。
//当输入10.0山1变为0时,产生中断事件1,激活中断程序1
(INT1)。
//中断程序1将存储器位M0.0置成0,导致主程序加计数。
//主程序
LD
MOVB
ENI
ATCH
ATCH
LDN
AB>=
A
EU
INCW
|
SM0.1
+0, AC0
+0, 0
+1,1
M0.0
16#FE, ACO
SM0.5
AC0
|
//仅首次扫描时,SM0.1才为1,进行以下初始化
//将计数累加器ACO清Oa
//允许中断。
//输入10.0为上升沿时激活事件中断0
//输入10.0为上升沿时激活事件中断1
//如果存储器的标志位M
0.0为0状态
//且计数累加器ACO的当前计数值小于或等于254
//且0.5秒脉冲
//且上升沿
//那么计算累加器ACO加1
|
LD
AB<=
A
EU
DECW
|
M0.0
16#1,AC0
SM0.5
ACO |
//如果存储器的标志位M
0.0为1状态
//且计数累加器ACO的当前计数值大于或等于
//且0.5秒脉冲
//且上升沿
//那么计算器累加器ACO减1
|
LD
MOVB
MEND
|
SM0.0
AC0, QB0 |
// SM0.0总是1。
//在输出端00.0至00.7显示ACO的当前计数值。
//主程序结束。
|
//******中断程序0******
//事件中断程序0将存储器的标志位M0.0置成
//此情况下程序减计数。
//
INT 0 //中断事件0减计数。
S M0.0,1 //将存储器的标志位M0.0置成
RETI //中断程序0结束。
//******中断程序1******
//事件中断程序1将存储器的标志位M
0.0置成Oa
//此情况下程序增计数。
INT 1
R M0.0,1
RETI
//中断事件1加计数。
//将存储器的标志位M0.0置成O。
//中断程序1结束。
请参考SIMATIC
S丁EP 7编程参考手册的6.2节“中断指令”,为您提供了更多的有关输入输出中断的信息。