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