循環程序用來完成大量的重複的操作。西門子S7-1200plc沒有像西門子S7-300PLC的LOOP那樣的循環程序專(zhuan) 用的指令,為(wei) 了編寫(xie) 循環程序,可以用FieldRead指令實現間接尋址,用普通指令來編寫(xie) 循環程序。
生成一個(ge) 名為(wei) “循環程序”的項目。首先生成全局數據塊DB1,在DB1中生成有10個(ge) 字節元素的數組,設置各數組元素的初始值。
生成一個(ge) 功能塊FB1,定義(yi) 它的輸入參數“字節數”(Int)、“初始下標”(Dint)、“數組”(Array)和輸出參數“異或結果”(Byte)。
在FB1的程序段1用MOVE指令將“異或結果”清零(見圖1)。
程序段2的跳轉標簽Back表示循環的開始。指令FieldRead用來實現間接尋址,其參數INDEX是要讀寫(xie) 的數組元素的下標,其數據類型為(wei) DInt(雙整數)。參數MEMBER的實參必須是該數組的第一個(ge) 元素,參數VALUE是讀取的數組元素的值。
讀取數組元素值後,將它與(yu) 輸出變量“異或結果”作異或運算,將地址指針“起始下標”加1,它指向下一個(ge) 數組元素。將作為(wei) 循環次數計數器的輸入變量“字節數”減1。減1後如果非0則返回標簽Back處,開始下一次循環的操作。
圖1
在OB1中調用FB1(見圖2),求DB1中的數組1從(cong) 下標為(wei) 2的元素開始的3個(ge) 數組元素的異或值,異或的結果用MB4保存。
將程序下載到CPU,將CPU切換到RUN模式。搬動I0.2對應的小開關(guan) ,在I0.2的上升沿調用FB1。用監視表監視MB4中的運算結果,驗證了程序的正確性。
圖2