概述
本程序适用于SIMATICS7-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节“中断指令”,为您提供了更多的有关输入输出中断的信息。