用普通指令編寫S7-1200的循環(huán)程序
發(fā)布時間:2019-08-01 10:49:41來源:
用普通指令編寫S7-1200的循環(huán)程序
循環(huán)程序用來完成大量的重復(fù)的操作。S7-1200沒有像S7-300的LOOP那樣的循環(huán)程序?qū)S玫闹噶睿瑸榱司帉懷h(huán)程序,可以用FieldRead指令實(shí)現(xiàn)間接尋址,用普通指令來編寫循環(huán)程序。生成一個名為“循環(huán)程序”的項目。首先生成全局?jǐn)?shù)據(jù)塊DB1,在DB1中生成有10個字節(jié)元素的數(shù)組,設(shè)置各數(shù)組元素的初始值。
生成一個功能塊FB1,定義它的輸入?yún)?shù)“字節(jié)數(shù)”(Int)、“初始下標(biāo)”(Dint)、“數(shù)組”(Array)和輸出參數(shù)“異或結(jié)果”(Byte)。
在FB1的程序段1用MOVE指令將“異或結(jié)果”清零(見圖1)。
程序段2的跳轉(zhuǎn)標(biāo)簽Back表示循環(huán)的開始。指令FieldRead用來實(shí)現(xiàn)間接尋址,其參數(shù)INDEX是要讀寫的數(shù)組元素的下標(biāo),其數(shù)據(jù)類型為DInt(雙整數(shù))。參數(shù)MEMBER的實(shí)參必須是該數(shù)組的第一個元素,參數(shù)VALUE是讀取的數(shù)組元素的值。
讀取數(shù)組元素值后,將它與輸出變量“異或結(jié)果”作異或運(yùn)算,將地址指針“起始下標(biāo)”加1,它指向下一個數(shù)組元素。將作為循環(huán)次數(shù)計數(shù)器的輸入變量“字節(jié)數(shù)”減1。減1后如果非0則返回標(biāo)簽Back處,開始下一次循環(huán)的操作。 圖1 在OB1中調(diào)用FB1(見圖2),求DB1中的數(shù)組1從下標(biāo)為2的元素開始的3個數(shù)組元素的異或值,異或的結(jié)果用MB4保存。
將程序下載到CPU,將CPU切換到RUN模式。搬動I0.2對應(yīng)的小開關(guān),在I0.2的上升沿調(diào)用FB1。用監(jiān)視表監(jiān)視MB4中的運(yùn)算結(jié)果,驗證了程序的正確性。