- 艾寶物聯(lián)IOBOV? ─ 工業(yè)無(wú)線測(cè)控專家
概述
本程序適用于SIMATIC S7-212和S7-214的計(jì)數(shù)器,可以從0計(jì)到255,這要取決于輸入10.0的狀態(tài)。如果將輸入10.0置為1,則程序減計(jì)數(shù);如果將輸入10.0置為0,則程序加計(jì)數(shù)。
如果輸入10.0的狀態(tài)改變,則將立即激活輸入/輸出中斷程序,中斷程序0或1分別將有儲(chǔ)器位M0.0置成1或0。
例圖
程序框圖
程序和注解
本程序是一個(gè)輸入/輸出中斷程序的范例,計(jì)數(shù)器從0計(jì)到255。如果輸入10.0為0,則程序加計(jì)數(shù);如果輸入10.0為1,則程序減計(jì)數(shù)。
本程序包括以下三個(gè)程序:
Main (主程序) 初始化和計(jì)數(shù)
INT0 (中斷程序0) 輸入10.0為1時(shí),減計(jì)數(shù)。
INT1 (中斷程序1) 輸入10.0為0時(shí),加計(jì)數(shù)。
本程序長(zhǎng)度為32個(gè)字
//標(biāo)題:事件中斷
//********主程序*********
//主程序包括初始化程序和計(jì)數(shù)程序。
//計(jì)數(shù)器的存儲(chǔ)器標(biāo)志位M0.0的0或1狀態(tài),決定計(jì)數(shù)方向?yàn)榧踊驕p計(jì)數(shù)。
//當(dāng)輸入10.0山0變?yōu)?/span>1時(shí),產(chǎn)生中斷事件0,激活中斷程序0 (INT0)。
//中斷程序0將存儲(chǔ)器位M0.0置成1,導(dǎo)致主程序減計(jì)數(shù)。
//當(dāng)輸入10.0山1變?yōu)?/span>0時(shí),產(chǎn)生中斷事件1,激活中斷程序1 (INT1)。
//中斷程序1將存儲(chǔ)器位M0.0置成0,導(dǎo)致主程序加計(jì)數(shù)。
//主程序
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 |
//僅首次掃描時(shí),SM0.1才為1,進(jìn)行以下初始化 //將計(jì)數(shù)累加器ACO清Oa //允許中斷。 //輸入10.0為上升沿時(shí)激活事件中斷0 //輸入10.0為上升沿時(shí)激活事件中斷1 //如果存儲(chǔ)器的標(biāo)志位M 0.0為0狀態(tài) //且計(jì)數(shù)累加器ACO的當(dāng)前計(jì)數(shù)值小于或等于254 //且0.5秒脈沖 //且上升沿 //那么計(jì)算累加器ACO加1 |
LD AB<= A EU DECW |
M0.0 16#1,AC0 SM0.5
ACO |
//如果存儲(chǔ)器的標(biāo)志位M 0.0為1狀態(tài) //且計(jì)數(shù)累加器ACO的當(dāng)前計(jì)數(shù)值大于或等于 //且0.5秒脈沖 //且上升沿 //那么計(jì)算器累加器ACO減1 |
LD MOVB MEND |
SM0.0 AC0, QB0 |
// SM0.0總是1。 //在輸出端00.0至00.7顯示ACO的當(dāng)前計(jì)數(shù)值。 //主程序結(jié)束。 |
//******中斷程序0******
//事件中斷程序0將存儲(chǔ)器的標(biāo)志位M0.0置成
//此情況下程序減計(jì)數(shù)。
//
INT 0 //中斷事件0減計(jì)數(shù)。
S M0.0,1 //將存儲(chǔ)器的標(biāo)志位M0.0置成
RETI //中斷程序0結(jié)束。
//******中斷程序1******
//事件中斷程序1將存儲(chǔ)器的標(biāo)志位M 0.0置成Oa
//此情況下程序增計(jì)數(shù)。
INT 1
R M0.0,1
RETI
//中斷事件1加計(jì)數(shù)。
//將存儲(chǔ)器的標(biāo)志位M0.0置成O。
//中斷程序1結(jié)束。
請(qǐng)參考SIMATIC S丁EP 7編程參考手冊(cè)的6.2節(jié)“中斷指令”,為您提供了更多的有關(guān)輸入輸出中斷的信息。