<sup id="x7dny"><rp id="x7dny"><big id="x7dny"></big></rp></sup>
    • <label id="x7dny"><tt id="x7dny"><tfoot id="x7dny"></tfoot></tt></label>
      <dfn id="x7dny"></dfn>
      <small id="x7dny"><rp id="x7dny"><rt id="x7dny"></rt></rp></small>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      西門子1200PLC的Modbus(RTU)詳細說明(三)
      發布時間: 2024-07-27 11:29 更新時間: 2024-12-02 08:00

      軟件編程



      1Modbus RTU 主站編程



      Modbus RTU主站編程需要調用Modbus_Comm_Load指令和Modbus_Master指令,其中Modbus_Comm_Load指令通過Modbus RTU協議對通信模塊進行組態,Modbus_Master指令可通過由Modbus_Comm_Load指令組態的端口作為Modbus主站進行通信,Modbus_Comm_Load指令的MB_DB參數必須連接到Modbus_Master指令的(靜態)MB_DB參數。


      本例中分布式機架ET200SP中CM PTP模塊作為Modbus RTU主站,其相關編程步驟如下:


      a、OB1中插入一個FC函數,并在函數中拖入Modbus_Comm_Load指令和Modbus_Master指令。如圖11所示


      圖片

      圖11. 拖入Modbus RTU 主站指令

      4124269341.jpg

      4125865238.jpg



      注意

      ① Modbus_Comm_Load指令不建議在啟動組織塊OB100中調用,建議在OB1中調用。Modbus_Comm_Load指令在OB1中調用時,其輸入位“REQ”需使用上升沿觸發,本例中該輸入位采用 “FirstScan” 系統存儲器位。
      ② Modbus_Comm_Load指令背景數據塊中的靜態變量“MODE”用于描述PTP模塊的工作模式,有效的工作模式包括:

      · 0 = 全雙工 (RS232)

      · 1 = 全雙工 (RS422) 四線制模式(點對點)

      · 2 = 全全雙工 (RS 422) 四線制模式(多點主站,CM PtP (ET 200SP))

      · 3 = 全全雙工 (RS 422) 四線制模式(多點從站,CM PtP (ET 200SP))

      · 4 = 半雙工 (RS485) 二線制模式

      該靜態變量“MODE”默認數據為0(RS232 全雙工模式),需要根據CM PTP模塊實際組態修改該數值,本例中CM PTP模塊工作在RS485半雙工模式需要將該數值修改為4,如圖12所示。

      圖片

      圖12. Modbus_Comm_Load背景數據塊靜態變量“MODE”修改為4

      ③ Modbus_Master指令的“DATA_PTR”參數用于指向要進行數據寫入或數據讀取的數據區域地址,該數據區域支持優化訪問的數據塊或者非優化(標準的)數據塊,建議采用非優化訪問的數據塊。
      本例中使用的數據區為非優化訪問的數據塊,在數據塊的屬性中取消“優化的塊訪問”即可將數據塊修改為非優化訪問的數據塊(鼠標右鍵數據塊,選擇“屬性”,取消“優化的塊訪問”),如圖13所示。

      圖片圖13. 設置數據塊為非優化訪問

      當Modbus_Master指令的“DATA_PTR”指向非優化訪問的數據塊時,該輸入參數需要使用指針方式填寫如P#DB3.DBX0.0 WORD 5 方式填寫。
      ④ 當Modbus RTU網絡中存在多個modbus RTU從站或一個modbus RTU從站同時需要讀操作和寫操作,則需要調用多個Modbus_Master指令,Modbus_Master指令之間需要采用輪詢方式調用。
      下圖14用于描述兩個Modbus_Master指令輪詢調用的方式。

      圖片圖14.Modbus_Master輪詢調用方式




      b、插入"Pull or plug of modules" 中斷OB83。

      本例中Modbus RTU主站模塊安裝在分布式IO站點上,因此程序中需要考慮分布式IO站點故障、CM PTP 模塊插拔模塊等故障。 
      分布式IO站點中插出、拔入模塊時,操作系統都會調用一次OB83。通過OB83接口區的輸入變量“16#Event_Class”判斷故障的模塊和類型:事件類型16#39表示模塊被拔出,事件類型16#38表示模塊被插入。
      CM PTP 模塊被重新插入的時候,需要在中斷OB83中調用Modbus_Comm_Load 指令對通信模塊進行重新組態,如圖15所示。

      圖片

      圖15. OB83中再次調用Modbus_Comm_Load 指令





      注意

      ① OB83 中調用Modbus_Comm_Load指令的背景數據塊需要與OB1中調用的Modbus_Comm_Load指令的背景數據塊相同。
      ② CM PTP模塊的硬件標識符也可以在"PLC變量"--->"系統常數"中查詢,如圖16. 所示。


      圖片

      圖16. 系統常量





      c、插入"Rack or Station failure" 中斷OB86。

      分布式IO站點故障和恢復時,操作系統都會調用一次OB86。通過OB86接口區的輸入變量“16#Event_Class”判斷故障的模塊和類型:事件類型16#39表示站點故障,事件類型16#38表示站點恢復。

      CM PTP 模塊所在的IO站點恢復時,需要在中斷OB86中調用Modbus_Comm_Load 指令對通信模塊進行重新組態,如圖17所示。


      圖片

      圖17. OB86中調用Modbus_Comm_Load 指令





      注意

      OB86 中調用Modbus_Comm_Load指令的背景數據塊需要與OB1中調用的Modbus_Comm_Load指令的背景數據塊相同。
      ② 分布式IO 站點的硬件標識符也可以在"PLC變量"--->"系統常數"中查詢。







      2Modbus RTU 從站編程



      Modbus RTU從站編程需要調用Modbus_Comm_Load指令和Modbus_Slave指令,其中Modbus_Comm_Load指令通過Modbus RTU協議對通信模塊進行組態,Modbus_Slave指令可通過由Modbus_Comm_Load指令組態的端口作為Modbus從站進行通信,Modbus_Comm_Load指令的MB_DB參數必須連接到Modbus_Slaver指令的(靜態)MB_DB參數。


      本例中CPU機架CM1241 RS422/485作為Modbus RTU從站,其相關編程步驟如下:


      OB1中插入一個FC函數,并在函數中拖入Modbus_Comm_Load指令和Modbus_Slave指令。如圖18所示


      圖片

      圖18. 拖入Modbus RTU 從站指令

      4129556034.jpg

      4131020897.jpg




      聯系方式

      • 電  話:13922889745
      • 經理:向小姐
      • 手  機:18475208684
      • 微  信:18475208684