西門子伺服電機驅動器電纜(中國授權)東莞市一級代理商
| 更新時間 2024-12-02 08:00:00 價格 請來電詢價 PLC觸摸屏代理商 西門子代理商 伺服電機驅動電纜 西門子一級代理商 變頻器直流調速器 西門子一級總代理商 聯系電話 13922889745 聯系手機 18475208684 聯系人 向小姐 立即詢價 |
西門子 S7-1200PLC之數組間接尋址,給大家學習一下!
S7-1200 使用數組實現間接尋址
S7-1200 自固件版本 V2.0 起便允許使用變量作為數組下標,因此數組成了實現間接尋址的Zui便捷手段。通過變動下標變量的值,可以完成多種功能。
數組間接尋址通常有這么幾種
DB 中數組、或者塊接口、Static、Temp 的數組
字符串字符間接尋址
I、Q 的數組、FB 多重背景的數組、DB_ANY 的數組
下面就這幾種情況分別介紹。
在編程中,數組間接尋址通常與 SCL(Structured Control Language)一起使用,尤其是在需要循環結構如 FOR 循環的情況下。然而,這并不意味著 LAD(Ladder Diagram)無法實現數組間接尋址。正如在之前的數組說明中所提及的,LAD 同樣可以支持變址操作。
1. 普通數組變量
普通數組變量通常是在 DB 塊中直接定義的數組,或者在塊接口中定義的,比如常見的靜態變量數組。下面舉例說明如何從數組中找出Zui大值和Zui小值,然后將它們剔除并按原順序放入另一個數組。整個過程可以參考下面的步驟。
1. 定義兩個數組,一個用于存儲原始數據,另一個用于存儲篩選后的數據。
2. 使用循環結構遍歷原始數據數組,找出Zui大值和Zui小值。
3. 剔除Zui大值和Zui小值,并將剩余值按原順序存入篩選后的數組。
4. 完成以上步驟后,篩選后的數組即包含剔除Zui大值和Zui小值后的數據。整個過程如圖 1、2、3、4 所示。
以下例程僅供參考。讀者如欲采納,風險自擔。
圖 1. 定義 FC 塊接口
圖 2. 編寫程序
圖 3. 調用塊
圖 4. 監視結果
2. 字符串字符間接尋址
默認情況下,字符串類型 String 和 WString 都預設為包含 254 個字符。而 WString 類型Zui多可以擴展到 16382 個字符。這些字符可以通過索引進行訪問,類似于數組中的變址尋址。
請注意,字符的索引是從 1 開始的。
舉例來說,如果我們想要移除 String[8] 數組中除了 0-9 和 A-F(以及 a-f)之外的所有字符,并將處理后的結果轉換為一個 DWord 變量,我們可以按照以下步驟進行:
1. 初始化一個 DWord 變量來存儲結果。
2. 遍歷 String[8] 數組中的每個字符。
3. 使用條件語句檢查每個字符是否在 0-9 或 A-F(以及 a-f)范圍內。
4. 如果是,將該字符添加到 DWord 變量中。
5. Zui后,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 個模擬量進行標定,我們可以定義一個 PLC 數據類型,其中包含一個數組來存儲這些模擬量數據。然后,在程序中直接訪問該數組,而無需使用 PEEK 指令來手動訪問內存地址。
這種方式簡化了程序的編寫和維護,提高了代碼的可讀性和可維護性。值得注意的是,在實際應用中,需要確保數組的大小和數據類型與處理的數據一致,以免發生錯誤。整個過程如圖 10、11、12、13、14 所示。
以下例程僅供參考。讀者如欲采納,風險自擔。
圖 10. 編寫程序
圖 11. 定義 PLC 數據類型
圖 12. 定義 PLC 變量
圖 13. 定義數據塊
圖 14. 調用程序
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684