<object id="ayu7o"></object>

      <object id="ayu7o"></object>

    1. <menuitem id="ayu7o"></menuitem>
      <object id="ayu7o"></object>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      西門子 S7-1200PLC之數組間接尋址,給大家學習一下!
      發布時間: 2024-09-14 16:27 更新時間: 2024-12-02 08:00
      觀看西門子 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