上升指令本是一條簡(jiǎn)單指令,和常開、常閉指令一樣都是常用的基本指令。以前在使用s7-200的時(shí)候基本不會(huì)去過(guò)多關(guān)注上升沿指令,因?yàn)槟菚r(shí)候不需要自己分配邊緣存儲(chǔ)器。現(xiàn)在在s7-1200中每次用到上升沿指令都需要自己分配邊緣存儲(chǔ)器,在編程上感覺(jué)確實(shí)不爽,由此開始想有沒(méi)有什么捷徑,心想“不就是一個(gè)簡(jiǎn)單的上升沿指令,用上一個(gè)掃描周期的狀態(tài)和當(dāng)前狀態(tài)做一個(gè)比較嗎?。(下面的程序是參考論壇網(wǎng)友優(yōu)化過(guò)的!)
程序:首先創(chuàng)建一個(gè)fb塊,里面添加幾行scl代碼。
測(cè)試1 :在主程序ob1中調(diào)用fb塊程序如下,測(cè)試效果正常,變量上升沿觸發(fā)正常!
測(cè)試二:同樣在主程序中調(diào)用fb塊程序如下,
步驟一:當(dāng)m30.2置1時(shí),測(cè)試正常,上升沿正常觸發(fā) 。
步驟二:當(dāng) m30.2置0,再將m30.0置1,間隔一個(gè)掃描周期以上再將m30.2置1,這時(shí)突然觸發(fā)一個(gè)上升沿。結(jié)果是測(cè)試失??!
測(cè)試三:使用系統(tǒng)的上升沿指令程序如下。
步驟一:和測(cè)試二的步驟二一樣,先將m30.2置0,再將m30.0置1,間隔一個(gè)掃描周期以上,再將m30.0置1,這是并沒(méi)有出現(xiàn)測(cè)試二的情況。
總結(jié):在測(cè)試三中,不管m30.2是否為1,邊緣存儲(chǔ)器 m30.3的狀態(tài)都隨 這m30.0的狀態(tài)發(fā)生變化。在測(cè)試二中,當(dāng)m30.2的狀態(tài)為0時(shí),fb塊中的邊緣存儲(chǔ)器并不隨m30.0變化,保持不變!
通過(guò)上面的測(cè)試得到的結(jié)果是:并不能通過(guò)fb塊編輯程序來(lái)代替系統(tǒng)的上升沿指令。