導(dǎo)讀:今天接到我們一個(gè)學(xué)員的求助電話,說他有個(gè)S7-200SMART的設(shè)備,有一段要求是這樣的,需要根據(jù)存儲(chǔ)器中的值等于多少來實(shí)現(xiàn)有多少個(gè)位輸出,如存儲(chǔ)器中的值等于10,則會(huì)與10個(gè)位的輸出。目前他使用的比較指令來做的程序,但是程序不夠靈活,且需要寫的比較程序較多,問有沒有辦法對這程序進(jìn)行優(yōu)化。 思路:聽到這個(gè)要求后首先第一反應(yīng)是采用譯碼指令,但細(xì)想譯碼指令只能根據(jù)值的多少,實(shí)現(xiàn)相應(yīng)位的輸出,既然要多個(gè)位輸出,那么是不是就可以考慮使用移位寄存器指令呢?那么移位寄存器的指令需要移的位數(shù)就是我們存儲(chǔ)中的大小,在通過配合循環(huán)指令來對移位指令的執(zhí)行的控制是否就可以實(shí)現(xiàn)呢? 程序:有思路了就動(dòng)手編寫程序,然后下載到PLC中進(jìn)行測試,看是否可以實(shí)現(xiàn)效果,先以32個(gè)輸出位標(biāo)準(zhǔn)寫段成測試下。 測試:給當(dāng)前值VW0賦值5,說明當(dāng)前有5個(gè)位的輸出,監(jiān)控QD0中的位狀態(tài),有5個(gè)位的狀態(tài)為1. 思考:若超過32個(gè)位,那么程序應(yīng)該如何進(jìn)行調(diào)整呢? |
|