S7-1200 從 固件版本 V2.0 開始就支持數組下標使用變量的方式,這就意味著數組是最方便的間接尋址的方法,通過改變下標變量實現各式各樣的功能。
數組間接尋址通常有這么幾種
DB 中數組,或者塊接口、Static、Temp 的數組
字符串字符間接尋址
I、Q 的數組
FB 多重背景的數組
DB_ANY 的數組
下面就這幾種情況分別介紹。
通常數組間接尋址都是使用 SCL 進行編程,因為這往往伴隨著 FOR 循環方便實現,下面都是 SCL 的編程案例。但這不意味著 LAD 無法實現,可以在上面數組介紹中查看如何在 LAD 中實現變址。
1. 普通數組變量
普通數組變量就是一般常見的在 DB 塊中直接定義的數組,或者在塊接口中出現的,例如常見的 FB 靜態變量的數組。
舉例:從數組變量中找出最大和最小,然后剔除后按原順序送入另一數組。整個過程如圖 1、2、3、4 所示。
例子程序的源文件鏈接:源文件,使用鏈接的方式如下:使用方法。
以下例程僅供參考。
圖 1. 定義 FC 塊接口
圖 2. 編寫程序
圖 3. 調用塊
圖 4. 監視結果
2. 字符串字符間接尋址
默認情況下,數據類型 String 和 WString 都包含 254 個字符,WString 最多可以定義 16382 個字符,這些字符可以通過下標進行讀取,并且可以認為是數組實現變址尋址。
注意:字符下標是從 1 開始。
舉例:將 String[8] 中的 0 - 9 和 A-F、a-f 以外的字符去掉,然后轉換為一個 DWord 變量。整個過程如圖 5、6、7、8 所示。
因為 FC 無法定義帶長度的字符串參數接口,所以使用 FB。
例子程序的源文件鏈接:源文件,使用鏈接的方式如下:使用方法。
以下例程僅供參考。
圖 5. 定義 FB 塊接口
圖 6. 編寫程序
圖 7. 調用塊
圖 8. 監視結果
注:如果對字符串不處理直接進行 ATH 轉換,結果如圖 9 所示。所有的不合規的字符都轉換為 0。
圖 9. 監視結果
3. I、Q 的數組
在 PLC 變量表 I、Q 是不能直接定義為數組的,但是從 CPU V4.0 固件以后,I、Q 可以定義為 PLC 數據類型,這樣在 PLC 數據類型中定義數組,間接的使得 I、Q 成為數組數據類型,方便的間接尋址,無需再使用 PEEK 指令。
舉例:對 IW100 開始 16 個模擬量進行標定。整個過程如圖 10、11、12、13、14 所示。
例子程序的源文件鏈接:源文件,使用鏈接的方式如下:使用方法。
以下例程僅供參考。
圖 10. 編寫程序
圖 11. 定義 PLC 數據類型
圖 12. 定義 PLC 變量
圖 13. 定義數據塊
圖 14. 調用程序
4. FB 多重背景的數組
5. DB_ANY 的數組
上一篇:西門子博途SCL:REGION:構建程序代碼的步驟
下一篇:西門子1200PLC之間的ModbusTCP通訊如何實現?
推薦閱讀最新更新時間:2025-06-07 23:37

