<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

      西門子中國(授權)一級代理 西藏代理商PLC

      更新時間
      2024-12-02 08:00:00
      價格
      請來電詢價
      西門子變頻器
      西門子觸摸屏
      西門子伺服電機
      西門子PLC
      西門子直流調速器
      西門子電纜
      聯系電話
      13922889745
      聯系手機
      18475208684
      聯系人
      向小姐
      立即詢價

      詳細介紹

      S7-1200 Modbus RTU 主站編程

      在硬件組態部分,我們插入了兩個485塊,CB1241和CM1241,兩者硬件組態有略微差別,但是編程一致,下面我們以CB1241(硬件標識符:269)為例分享,如何實現主站編程;步驟如下:

      新建FC(一般通訊單獨放一個FC,方便調試),并拖入Modbus_Comm_Load 指令和 Modbus_Master 指令,始下圖:

      圖片image-20240603151559698

      為Modbus_Comm_Load配置參數

      圖片image-20240603153813166

      Modbus_Comm_Load 指令各參數意義如下表所示:

      引腳

      說明

      REQ

      上升沿觸發

      PORT

      通信端口的硬件標識符(硬件組態中的標識符)

      BAUD

      波特率選擇:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200

      PARITY

      奇偶檢驗選擇:0-無;1-奇校驗;2-偶校驗

      FLOW_CTRL

      流控制選擇:0-(默認值)無流控制

      RTS_ON_DLY

      RTS 延時選擇:0-(默認值)

      RTS_OFF_DLY

      RTS 關斷延時選擇:0-(默認值)

      RESP_TO

      響應超時: 默認值  = 1000 ms。Modbus_Master 允許用于從站響應的時間(以毫秒為單位)。

      MB_DB

      對 Modbus_Master 或 Modbus_Slave   指令的背景數據塊的引用。    MB_DB 參數必須與 Modbus_Master 或   Modbus_Slave 指令中的靜態變量 MB_DB 參數相連。

      DONE

      如果上一個請求完成并且沒有錯誤,DONE 位將變為 TRUE 并保持一個周期。

      ERROR

      如果上一個請求完成出錯,則 ERROR 位將變為 TRUE 并保持一個周期。 STATUS 參數中的錯誤代碼僅在 ERROR = TRUE 的周期內有效。

      STATUS

      端口組態錯誤代碼(可在編程軟件中按F1幫助查看)

      注意:

      Modbus_Comm_Load 指令不建議在啟動組織塊 OB100 中調用,建議在 OB1 中調用。其輸入位“REQ”需使用上升沿觸發,本例中該輸入位采用 “FirstScan”  系統存儲器位。

      Modbus_Comm_Load 指令背景數據塊中的靜態變量 “MODE” 用于描述點對點模塊的工作模式,有效的工作模式包括:

      0 = 全雙工 (RS232)

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

      2 = 全雙工 (RS422) 四線制模式(多點主站)

      3 = 全雙工 (RS422) 四線制模式(多點從站)

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

      圖片image-20240603161553538

      配置Modbus_Master參數

      圖片image-20240603163841961

      Modbus_Master 指令各參數意義如下表所示:

      引腳

      說明

      EN

      使能端

      REQ

      TRUE = 請求向 Modbus 從站發送數據 ,建議采用上升沿觸發

      MB_ADDR

      Modbus   RTU 從站地址。默認地址范圍:0 至 247;擴展地址范圍:0 至 65535。值 0 被保留用于將消息廣播到所有 Modbus 從站。

      MODE

      模式選擇: 指定請求類型(讀取或寫入)(通常0為讀取,1為寫入)。

      DATA_ADDR

      從站中的起始地址:指定 Modbus 從站中將供訪問的數據的起始地址。

      DATA_LEN

      數據長度:指定要在該請求中訪問的位數或字數。

      DATA_PTR

      數據指針: 指向要進行數據寫入或數據讀取的 M 區或數據塊地址。

      DONE

      完成位:上一請求已完成且沒有出錯后,DONE 位將保持為 TRUE 一個掃描周期時間。

      BUSY

      FALSE – Modbus_Master 無激活命令;TRUE – Modbus_Master 命令執行中

      ERROR

      如果上一個請求完成出錯,則 ERROR 位將變為 TRUE   并保持一個周期。 STATUS 參數中的錯誤代碼僅在 ERROR = TRUE 的周期內有效。

      STATUS

      端口組態錯誤代碼(可在編程軟件中按F1幫助查看)

      注:

      REQ上升沿有效,通常Modbus需要輪詢程序,同一時間只能有1個通信請求;

      Modbus_Master 指令的 “DATA_PTR” 參數用于指向要進行數據寫入或數據讀取的數據區域地址,該數據區域在指令 V3.0后  支持非優化(標準的)數據塊,但一般建議使用指針方式填寫,如上圖中 P# DB200.DBX0.0 word 10表示,這樣不容易出錯,如果由于數據長度造成的報錯,也可以很快找出來;

      四S7-1200 Modbus RTU 從站編程

      CB1214從站編程步驟,同主站編程類似,區別在于主站編程調用主站程序,從站編程調用從站編程;但是第一步都是需要調用Modbus _Comm_Load指令,對串口進行初始化;從站編程步驟如下:

      調用Modbus_Comm_load指令,并設置參數;可參考主站編程設置此處不在贅述(注意硬件標識符要與使用串口一致);

      圖片image-20240603165149041

      調用Modbus_Slave指令,并初始化Modbus從站地址,及數據存儲區

      圖片image-20240603165440517

      Modbus_Slave 指令各參數意義如下表

      引腳

      說明

      MB_ADDR

      Modbus 從站的標準尋址:      標準尋址范圍(1 到   247),    擴展尋址范圍(0 到 65535)

      MB_HOLD_REG

      數據指針,指向 Modbus 保持寄存器的地址, Modbus   保持寄存器可以為 M 存儲區或 DB 數據區。

      NDR

      可用的新數據:

      DR

      讀取數據:

      ERROR

      如果上一個請求完成出錯,則 ERROR 位將變為 TRUE   并保持一個周期。 如果執行因錯誤而終止,則 STATUS 參數中的錯誤代碼僅在 ERROR = TRUE 的周期內有效。

      STATUS

      錯誤代碼(可在編程軟件中按F1幫助查看)

      注:Modbus_Slave 指令的 “MB_HOLD_REG” 用于定義 CPU 的 Modbus 保持寄存器的數據區域地址,該數據區域在 指令V3.0后  支持非優化(標準的)數據塊。但是,一般建議使用指針方式填寫

      Modbus RTU 從站數據區定義如下表:

      地址區定義說明輸出位Q0.0 開始
      輸入位I0.0 開始
      輸入寄存器IW0 開始
      保持寄存器由 MB_HOLD_REG 定義

      例如:MB_HOLD_REG 為 P#M100.0 WORD 8,則 MW100 為 40001,MW102 為 40002,MW104 為 40003...MW114 為 40008

      例如:MB_HOLD_REG 為 優化 DB 中 INT 數組[0..7],數組名為 “XXX”.AA,則 “XXX”.AA[0] 為 40001,“XXX”.AA[1] 為 40002,“XXX”.AA[2] 為 40003...“XXX”.AA[7] 為 40008

      指針指向的第一個字為 40001,第二個字為 40002...

      IW0 為地址 30001,IW2 為地址 30002,IW4 為地址 30003...

      I0.0 為地址 10001,I0.1 為地址 10002,I0.7 為地址 10008,I1.0 為地址 10009...

      Q0.0 為地址 1,Q0.1 為地址 2,Q0.7 為地址 8,Q1.0 為地址 9...

      FALSE : 無新數據

      TRUE :表示該指令已將 Modbus 主站接收到的數據存儲在目標區域中。如果上一個請求完成并且沒有錯誤,DR 位將變為 TRUE 并保持一個周期。

      FALSE : 無新數據

      TRUE : 表示新數據已由 Modbus 主站寫入,如果上一個請求完成并且沒有錯誤,NDR 位將變為 TRUE   并保持一個周期。


      相關產品

      聯系方式

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