黑龍江西門(mén)子S7-200SMART代理商(歡迎您)

西門(mén)子S7-300/400PLC累加器指令
語(yǔ)句表中的累加器指令用于處理單個(gè)或多個(gè)累加器的內(nèi)容,指令的執(zhí)行與RLO(邏輯運(yùn)算結(jié)果)無(wú)關(guān),也不會(huì)對(duì)RLO產(chǎn)生影響。對(duì)于有4個(gè)累加器的CPU,累加器3、4的內(nèi)容保持不變。
1.TAK指令
指令TAK (Toggle ACCU l with ACCU2)交換累加器1和累加器2的內(nèi)容。
下面的程序用MW10和MW12中較大的數(shù)減去較小的數(shù),運(yùn)算結(jié)果存放在MW14中。
2.堆棧指令
S7-300的CPU有兩個(gè)累加器,S7-400的CPU有4個(gè)累加器。CPU中的累加器組成了一個(gè)堆棧,堆棧用來(lái)存放需要快速存取的數(shù)據(jù),堆棧中的數(shù)據(jù)按“*后出”的原則存取。堆棧指令是否執(zhí)行與狀態(tài)字無(wú)關(guān),也不會(huì)影響狀態(tài)字。
對(duì)于只有兩個(gè)累加器的CPU來(lái)說(shuō),PUSH(入棧)指令將累加器1的內(nèi)容復(fù)制到累加器2,累加器l的內(nèi)容不變。POP(出棧)指令將累加器2的內(nèi)容復(fù)制到累加器1,累加器2的內(nèi)容不變。
對(duì)于有4個(gè)累加器的CPU來(lái)說(shuō),PUSH(入棧)指令使堆棧中各層原有的數(shù)據(jù)依次向下移動(dòng)一層,棧底(累加器4)的值被推出丟失,如圖3-52所示。棧頂(累加器1)的值保持不變。即累加器3的內(nèi)容復(fù)制到累加器4,累加器2的內(nèi)容復(fù)制到累加器3,累加器1的內(nèi)容復(fù)制到累加器2,累加器1的內(nèi)容不變。
POP(出棧)指令使堆棧中各層原有的數(shù)據(jù)向上移動(dòng)一層(如圖3-53所示),原來(lái)第2層(累加器2)中的數(shù)據(jù)成為堆棧新的棧頂值,原來(lái)?xiàng)m敚ɡ奂悠?/span>1)中的數(shù)據(jù)從棧內(nèi)消失。即累加器2的內(nèi)容復(fù)制到累加器1,累加器3的內(nèi)容復(fù)制到累加器2,累加器4的內(nèi)容復(fù)制到累加器3,累加器4的內(nèi)容不變。
圖3-52 入棧指令執(zhí)行前后
圖3-53 出棧指令執(zhí)行前后
“進(jìn)入累加器堆棧”指令ENT(Enter Accmulator Stack)將累加器3的內(nèi)容復(fù)制到累加器4,累加器2的內(nèi)容復(fù)制到累加器3。使用ENT指令可以在累加器3中保存中間結(jié)果。
“離開(kāi)累加器堆棧”指令LEAVE (Leave Accumulator Stack)將累加器3的內(nèi)容復(fù)制到累加器2,累加器4的內(nèi)容復(fù)制到累加器3,累加器1、4保持不變。
例用下述程序?qū)崿F(xiàn)浮點(diǎn)數(shù)運(yùn)算(DBDO+DBD4)/(DBD8-DBD12)
3.加、減8位整數(shù)指令
字節(jié)加指令LNC(Increment ACCUl - LL)和字節(jié)減指令DEC(Decrement ACCUl - LL)將累加器1的低字節(jié)(ACCUl - LL)的內(nèi)容加上或減去指令中的8位常數(shù)(0~255),運(yùn)算結(jié)果仍在累加器的低字節(jié)中。累加器1的其他3個(gè)字節(jié)不變。
這些指令并不適合于16位或32位算術(shù)運(yùn)算,因?yàn)槔奂悠?/span>1的低字節(jié)和它的相鄰字節(jié)之間沒(méi)有進(jìn)位產(chǎn)生,16位或32位加法運(yùn)算可以分別使用INC和DEC指令。
4.地址寄存器指令
+ARl (Add to ARl)指令將地址寄存器AR1的內(nèi)容加上作為地址偏移量的累加器1的低字的內(nèi)容,或加上指令中的16位常數(shù)(-32768~+32767),結(jié)果存在AR1中。
+AR2 (Add to AR2)指令將地址寄存器AR2的內(nèi)容加匕作為地址偏移量的累加器1的低字的內(nèi)容,或加上指令中的16位常數(shù),結(jié)果存在AR2中。
16位有符號(hào)整數(shù)首先被擴(kuò)充為24位,其符號(hào)位不變,然后與AR1中的低24位有效數(shù)字相加。地址寄存器中的存儲(chǔ)區(qū)域標(biāo)識(shí)符(第24~26位)保持不變。
5.空操作指令
BLD<number>(程序顯示指令,空指令)并不執(zhí)行什么功能,也不會(huì)影響狀態(tài)位。該指令只是用于編程設(shè)備的圖形顯示,在STEP 7中將梯形圖或功能塊圖轉(zhuǎn)換為語(yǔ)句表時(shí),將會(huì)自動(dòng)生成BLD指令。指令中的<number>是編程設(shè)備自動(dòng)生成的。
NOP 0和NOP 1指令并不執(zhí)行什么功能,也不會(huì)影響狀態(tài)位,它們的指令代碼中分別由16個(gè)0或16個(gè)1組成,其作用與BLD指令類似。
在16位整數(shù)乘法運(yùn)算中,運(yùn)算結(jié)果為32位雙整數(shù),并存入累加器1中。如果運(yùn)算后狀態(tài)字的OS和OV位均為1,表示運(yùn)算結(jié)果超出了16位整數(shù)允許的范圍。
在16位整數(shù)除法運(yùn)算中,16位商存在累加器1的低字中,余數(shù)在累加器1的高字中。
在32位雙整數(shù)乘法運(yùn)算中,運(yùn)算結(jié)果為32位雙整數(shù),并存入累加器1中。如果運(yùn)算后狀態(tài)字的OS和OV位均為1,表示運(yùn)算結(jié)果超出了32位整數(shù)允許的范圍。
在32位整數(shù)除法運(yùn)算中,32位商存在累加器1中,余數(shù)被丟掉。
在梯形圖指令中,若運(yùn)算結(jié)果超出允許范圍,OS和OV位均為1,輸出為0。
例用語(yǔ)句表實(shí)現(xiàn)字運(yùn)算MW4+MW15-2的程序,其運(yùn)算結(jié)果送入MW10中。
例用梯形圖實(shí)現(xiàn)運(yùn)算(10000×MD6)/27666,結(jié)果存入MW10中。
雙整數(shù)運(yùn)算梯形圖實(shí)現(xiàn)如圖3-50所示。

數(shù)學(xué)運(yùn)算指令十分重要,因?yàn)橐话愕淖詣?dòng)控制系統(tǒng)都需要PID控制器,控制器的算法實(shí)現(xiàn)離不開(kāi)基本的數(shù)學(xué)運(yùn)算,在S7PLC中,可以對(duì)整數(shù)、雙整數(shù)和浮點(diǎn)數(shù)進(jìn)行數(shù)學(xué)運(yùn)算。這些指令是在累加器1和累加器2中進(jìn)行的。其中累加器2中的值作為被減數(shù)或被除數(shù),累加器1則作為減數(shù)或除數(shù),數(shù)學(xué)運(yùn)算結(jié)果保存在累加器1中,在進(jìn)行數(shù)學(xué)運(yùn)算時(shí),不必考慮對(duì)RLO的影響。需要考慮的是狀態(tài)字的CCO和CC1,OS、OV位,具體操作中運(yùn)用操作指令或條件跳轉(zhuǎn)指令進(jìn)行。
黑龍江西門(mén)子S7-200SMART代理商(歡迎您)