色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

博途Modbus RTU通信如何實現?

laidenongfhs ? 來源:中泰PLC自動化教學 ? 2023-08-10 14:21 ? 次閱讀

TIA V13 SP1版本軟件中提供了2個版本的Modbus RTU指令:

b06ead64-3743-11ee-9e74-dac502259ad0.png

圖1. 兩個版本Modbus RTU指令

早期版本的Modbus RTU指令(圖1. 中 MODBUS (V2.2))僅可通過CM1241通信模塊或CB1241通信板進行Modbus RTU通信。

新版本的 Modbus RTU指令(圖1. 中 MODBUS(RTU) V3.0)擴展了Modbus RTU的功能,該指令除了支持CM1241通信模塊、CB1241通信板,還支持 PROFINET 或 PROFIBUS 分布式 I/O 機架上的PTP通信模塊實現Modbus RTU通信。

新版本 Modbus RTU指令所支持的PTP模塊如下圖2.所示:

b08558a2-3743-11ee-9e74-dac502259ad0.png

圖2. 新版本 Modbus RTU指令所支持的PTP模塊 新版本Modbus RTU指令的使用

新版本Modbus RTU指令中包含Modbus RTU 主站指令和從站指令。本文以 CPU1217C+CM1241 RS422/485+ET200SP CM PTP 模塊為例,介紹新版本 Modbus RTU 指令主從通信的編程步驟。

其中CPU 機架CM1241 RS422/485作為Modbus RTU從站,分布式機架ET200SP 中 CMPTP 模塊作為Modbus RTU主站。網絡結構圖如下:

b094c7ce-3743-11ee-9e74-dac502259ad0.png

圖3. Modubus RTU 網絡通信結構圖本項目中使用到的硬件和軟件如下:

硬件:

① CPU1217C (訂貨號:6ES7 217-1AG40-0XB0),固件版本V4.1.3

② CM1241 RS422/485模塊 (訂貨號:6ES7 241-1CH32-0XB0),固件版本V2.1

③ 24V 電源PS307(訂貨號:6ES7307-1KA02-0AA0)

④ ET200 SP IM155-6PN HF(訂貨號:6ES7155-6AU00-0CN0)

⑤ CM PTP模塊(訂貨號:6ES7137-6AA00-0BA0)

軟件:

① TIA V13 SP1 UP 9

1.設備組態

a.組態CM1241 RS422/485模塊

打開設備視圖,添加S7-1200CPU,并在硬件目錄里找到“通信模塊”→“點到點”→“CM1241(RS422/485)”,拖拽此模塊至CPU左側即可,如下圖4.所示:

b0a9d344-3743-11ee-9e74-dac502259ad0.png

圖4. 添加 CM 1241 RS422/485模塊

注意:

固件版本>=V2.1的CM 1241 RS422/485模塊,才支持新版本Modbus RTU指令。

接下來,在“設備視圖”中用鼠標選中CM1241(RS422/485)模塊,在“屬性”→“端口組態”中配置此模塊硬件接口參數

本例以傳輸率=9.6Kbps,奇偶校驗=無奇偶校驗,數據位=8位字符,停止位=1為例。如CM 1241 端口組態設置如下圖5.所示:

b0b27990-3743-11ee-9e74-dac502259ad0.png

圖5. CM1241 RS422/485 模塊端口組態

最后在“硬件標識符”里確認一下硬件標識符為269(該參數在程序編程中會被使用),如下圖6.所示:

b0c5eae8-3743-11ee-9e74-dac502259ad0.png

圖6 硬件標識符

另外,S7-1200 還提供了系統和時鐘存儲器功能,為了便于后續指令,建議使能該功能。在CPU “屬性”→“常規”→“系統和時鐘存儲器”使能系統和時鐘存儲器功能,如圖7. 所示。

b0d4cd06-3743-11ee-9e74-dac502259ad0.png

圖7. 系統和時鐘存儲器功能

b.組態ET200 SP CM PtP 模塊

(1)、插入一個ET200SP分布式站點。

打開網絡視圖并拖入一個ET200SP站點,并將其分配給相應的IO 控制器(本例CPU1217C 為 IO 控制器),如圖8.所示。

b0fae748-3743-11ee-9e74-dac502259ad0.png

圖8. 插入ET200SP站點

(2)、組態ET200SP 站點。

在ET200SP的"設備視圖"環境下,為ET200SP 站點添加信號、通信模塊和服務器模塊,在本例中只添加了CM PTP模塊和服務器模塊。

注意:

ET200SP站點中,服務器模塊是必須組態的。服務器模塊隨接口模塊一起采購,無需單獨購買。

ET200SP接口模塊需要為其分配IP地址和Device Name, 有關ET200 SP 分布式IO 組態詳細步驟,請參考《ET200 SP 使用快速入門》,本例不再描述Profinet IO通信的相關設置與步驟。

在ET200SP"設備視圖"中用鼠標選中CM PTP,在“屬性”→“常規”→“接口”→“操作模式”中配置此模塊硬件接口參數,

本例設定“指定工作模式":"半雙工(RS485)2線制操作";"接收線路的初始狀態":"無"。如下圖9.所示:

b12157a2-3743-11ee-9e74-dac502259ad0.png

圖9. CM PTP 操作模式

接下來,在“屬性”→“常規”→“接口”→“端口組態”中配置此模塊端口組態參數,

本例設定"協議":"Freeport/Modbus";"端口參數"設置:傳輸率=9.6Kbps,奇偶校驗=無奇偶校驗,數據位=8位字符,停止位=1為例。端口組態設置如下圖10.所示:

b13a093c-3743-11ee-9e74-dac502259ad0.png

圖10. CM PTP 端口組態

最后需要在“硬件標識符”里確認一下CM PTP 模塊硬件標識符,該參數在程序編程中會被使用。

2.軟件編程

a.Modbus 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主站,其相關編程步驟如下:

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

b1437fa8-3743-11ee-9e74-dac502259ad0.png

圖11. 拖入Modbus RTU 主站指令

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

b15fe04e-3743-11ee-9e74-dac502259ad0.png

表1 MB_COMM_LOAD指令參數意義

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

b16bd76e-3743-11ee-9e74-dac502259ad0.png

表2 Modbus_Master指令參數意義

注意:

①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.所示。

b1a1c0d6-3743-11ee-9e74-dac502259ad0.png

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

③Modbus_Master指令的“DATA_PTR”參數用于指向要進行數據寫入或數據讀取的數據區域地址,該數據區域支持優化訪問的數據塊或者非優化(標準的)數據塊,建議采用非優化訪問的數據塊。

本例中使用的數據區為非優化訪問的數據塊,在數據塊的屬性中取消“優化的塊訪問”即可將數據塊修改為非優化訪問的數據塊(鼠標右鍵數據塊,選擇“屬性”,取消“優化的塊訪問”),如圖13. 所示。

b1c64bfe-3743-11ee-9e74-dac502259ad0.png

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

當Modbus_Master指令的“DATA_PTR”指向非優化訪問的數據塊時,該輸入參數需要使用指針方式填寫如P#DB3.DBX0.0 WORD 5 方式填寫。

④當Modbus RTU網絡中存在多個modbus RTU從站或一個modbus RTU從站同時需要讀操作和寫操作,則需要調用多個Modbus_Master指令,Modbus_Master指令之間需要采用輪詢方式調用。

下圖14. 用于描述兩個Modbus_Master指令輪詢調用的方式。

b1de42cc-3743-11ee-9e74-dac502259ad0.png

圖14.Modbus_Master輪詢調用方式

(2)、插入"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. 所示。

b1e6cbc2-3743-11ee-9e74-dac502259ad0.png

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

注意:

①OB83 中調用Modbus_Comm_Load指令的背景數據塊需要與OB1中調用的Modbus_Comm_Load指令的背景數據塊相同。

②CM PTP模塊的硬件標識符也可以在"PLC變量"--->"系統常數"中查詢,如圖16. 所示。

b1faee86-3743-11ee-9e74-dac502259ad0.png

圖16. 系統常量

(3)、插入"Rack or Station failure" 中斷OB86。

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

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

b20e8ebe-3743-11ee-9e74-dac502259ad0.png

圖17. OB86中調用Modbus_Comm_Load 指令

注意:

①OB86 中調用Modbus_Comm_Load指令的背景數據塊需要與OB1中調用的Modbus_Comm_Load指令的背景數據塊相同。

②分布式IO 站點的硬件標識符也可以在"PLC變量"--->"系統常數"中查詢。

b.Modbus 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. 所示

b235d708-3743-11ee-9e74-dac502259ad0.png

圖18. 拖入Modbus RTU 從站指令

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

b2634fa8-3743-11ee-9e74-dac502259ad0.png

表3 Modbus_Slave指令參數意義

注意:

①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 全雙工模式),需要根據CM1241 RS422/485模塊實際組態修改該數值,本例中CM1241 RS422/485模塊工作在RS485半雙工模式需要將該數值修改為4,如何修改“MODE”靜態變量見圖12.所示。③Modbus_Slave指令的“MB_HOLD_REG”用于指向Modbus 保持寄存器的數據區域地址,該數據區域支持優化訪問的數據塊或者非優化(標準的)數據塊,建議采用非優化訪問的數據塊。

本例中使用的數據區為非優化訪問的數據塊,固該輸入參數需要使用指針方式填寫如P#DB6.DBX0.0 WORD 100 方式填寫。

如何在數據塊的屬性中取消“優化的塊訪問”,見圖13. 所示。

將程序下載到PLC中,并使用Profibus DP通信電纜將CM1241 RS422/485與CM PTP串口模塊連接起來,即可測試Modbus RTU通信了。

3.常見問題FAQ

1. 新版本 Modbus RTU指令的使用是否存在些限制條件?

新版本 Modbus RTU指令通過CM1241通信模塊或CB1241通信板進行Modbus RTU通信時,需要滿足如下條件:

a. S7-1200 CPU 的固件版本不能低于V4.1;

b. CM1241通信模塊或CB1241通信板的固件不能低于V2.1。

S7-1200 V4.0 固件CPU可以通過固件更新到V4.1版本,V2.0固件的CM1241通信模塊也可以通過固件更新的方式更新到V2.1版本。

相關固件更新的方法請參考 S7-1200 固件更新 。

2 .Modbus_Comm_Load指令背景數據塊中的靜態變量“MODE”的作用是什么?為什么一般項目中,都需要對該變量進行修改?

新版本的 Modbus RTU指令擴展了Modbus RTU的功能,該指令除了支持CM1241通信模塊、CB1241通信板還支持 PROFINET 或 PROFIBUS 分布式 I/O 機架上的PTP通信模塊實現Modbus RTU通信。

而分布式 I/O 機架上的PTP通信模塊可以支持多種工作模式,以ET200SP CM PtP模塊(訂貨號:6ES7137-6AA00-0BA0)為例,其可以支持RS232、RS485以及RS422等多種工作模式。

Modbus_Comm_Load指令背景數據塊中的靜態變量“MODE”則用于定義PTP模塊的工作模式。

“MODE”的默認數值為0,代表“全雙工 (RS232)”工作模式,實際項目組態中則需要根據實際工作模式對該變量進行修改。

3. Modbus_Comm_Load指令能否在啟動組織塊OB100中調用?

Modbus_Comm_Load指令不建議在啟動組織塊OB100中調用。新版本的Modbus RTU指令擴展了Modbus RTU的功能,該指令支持 PROFINET 或 PROFIBUS 分布式 I/O 機架上的PtP通信模塊實現Modbus RTU通信。

操作系統需要調用讀取數據記錄和寫入數據記錄等指令來實現與分布式I/O機架上PtP模塊的Modbus RTU通信。讀取數據記錄和寫入數據記錄指令為異步讀寫指令,指令的執行需要N個掃描周期,所以不建議Modbus_Comm_Load指令在啟動組織塊OB100中調用。

4. 如何查詢Modbus RTU通信錯誤時的錯誤代碼?

以Modbus_Master指令為例,當通信出現錯誤時,Modbus_Master指令的“ERROR”輸出位將變為 TRUE 但是只保持一個掃描周期,所以通過TIA 軟件程序監控時無法查詢到錯誤。

Modbus_Master指令“STATUS” 參數中的錯誤代碼僅在“ERROR” = TRUE 的掃描周期內有效,為了獲取了Modbus RTU通信錯誤的錯誤代碼我們可以采用下圖19. 方式編程。

b2795b86-3743-11ee-9e74-dac502259ad0.png

圖19. 獲取STATUS

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6114

    瀏覽量

    136770
  • MODBUS
    +關注

    關注

    28

    文章

    1857

    瀏覽量

    77759
  • 指令
    +關注

    關注

    1

    文章

    614

    瀏覽量

    35938
  • PROFIBUS
    +關注

    關注

    3

    文章

    398

    瀏覽量

    38261
  • RTU
    RTU
    +關注

    關注

    0

    文章

    422

    瀏覽量

    28888
收藏 人收藏

    評論

    相關推薦

    Modbus TCP轉Modbus RTU實現

    使用ZLSN2040、NETCOM2040實現Modbus TCP到Modbus RTU的轉化。1.Modbus TCP與
    發表于 08-10 10:04

    基于Modbus RTU的串口調試軟件的實現

    摘 要:文中介紹了Modbus RTU通訊協議的特點,闡述了該協議在VC2005編程環境下串口調試軟件的具體實現方法。并編制了相關的程序,該程序采用了模塊化思想,結構清晰,操作簡便,實現
    發表于 12-18 19:18

    串口實現ModBus-RTU通信例程

    學習LABVIEW在本論壇借鑒了大家很多的資料,發一個自己的學習成果。1.ModBus-RTU通信 協議,自動添加CRC值。2、報文格式:010300000001CRC 地址+命令號+數據地址+數據長度+CRC3、連讀6號命令讀取的多數據分別存儲在AI0~AI5中。4、設
    發表于 10-15 21:55

    組態王modbus通信用法教程modbus-rtumodbus-tcp***康通信配置步驟

    本文詳細講解組態王modbus通信用法教程modbus-rtumodbus-tcp***康通信配置步驟,見附件下載:
    發表于 11-18 10:55

    力控modbus通信方法modbus-tcp、modbus-rtu***康通信配置步驟

    本文結合綜科智控品牌的io模塊詳細講解力控modbus通信方法modbus-tcp、modbus-rtu***康通信配置步驟,見附件下載:
    發表于 11-18 15:22

    Modbus-RTU協議模式學習下載

    1.Modbus定義: 是一種串行通信協議,一開始是為使用PLC(即可編程邏輯控制器)設備通信而發表,已成為工業上通信協議的標準,是工業電子設備間常用連接方式。2.
    發表于 07-02 06:12

    Modbus_RTU的通訊方式是什么

    Modbus_RTU的通訊方式RTU 半雙工通訊方式本次使用的是 CPU:1215C DC/DC /RLY通信模塊:CM1241(RS232/RS485)硬件標識符:269(如圖 1)圖 1
    發表于 02-16 06:52

    modbus-RTU設備的實現

    關注、星標嵌入式客棧,精彩及時送達[導讀] 大家好,我是逸珺。前面聊了modbus的物理層,協議標準,今天來實現一下modbus-RTU,本文主要聊從設備的實現。思路分析 前面聊mod
    發表于 02-22 07:38

    如何快速實現Modbus RTUModbus TCP協議轉換?

    Modbus RTUModbus TCP,實現不同協議設備通訊呢?01物通聯工業智能網關協議轉換功能,快速
    發表于 08-18 18:36

    Modbus RTUModbus TCP的區別

    將每個字節的二進制數據轉換成固定的二位十六進制字符串,然后依次串聯,以TCP代碼的形式傳輸數據。RTU通常使用最多。 2.不同的通信方式:以太網,相應的通信模式是MODBUS TCP。
    發表于 08-03 17:00 ?5.5w次閱讀

    使用Modbus Rtu通信進行SD讀寫

    電子發燒友網站提供《使用Modbus Rtu通信進行SD讀寫.zip》資料免費下載
    發表于 02-06 10:38 ?0次下載
    使用<b class='flag-5'>Modbus</b> <b class='flag-5'>Rtu</b><b class='flag-5'>通信</b>進行SD讀寫

    Modbus RTU通信概述

    Modbus RTU (Remote Terminal Unit) 是用于網絡中通信的標準協議,使用 RS232 或 RS422/485 連接在網絡中的 Modbus 設備之間進行串行
    發表于 06-25 09:35 ?3144次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b><b class='flag-5'>通信</b>概述

    請問一下Modbus RTU通信如何編程?

    早期版本的Modbus RTU指令(圖1. 中 MODBUS (V2.2))僅可通過CM1241通信模塊或CB1241通信板進行
    發表于 08-10 14:23 ?943次閱讀
    請問一下<b class='flag-5'>博</b><b class='flag-5'>途</b><b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b><b class='flag-5'>通信</b>如何編程?

    物通Modbus RTUModbus TCP網關有什么功能

    隨著Modbus TCP和Modbus RTU兩種協議在工業現場設備的普及,要實現這兩種協議互轉的需求日益增加。物通聯工業智能網關可以
    的頭像 發表于 09-20 14:21 ?683次閱讀
    物通<b class='flag-5'>博</b>聯<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>轉 <b class='flag-5'>Modbus</b> TCP網關有什么功能

    RS485與MODBUS RTU的區別 如何選擇合適的通信技術?

    RS485與MODBUS RTU的區別 如何選擇合適的通信技術? RS485是一種通信總線標準,而MODBUS
    的頭像 發表于 02-01 10:27 ?1.1w次閱讀
    主站蜘蛛池模板: 成人天堂婷婷青青视频在线观看 | 国产成人精品男人的天堂网站 | 日日干夜夜艹 | 歪歪爽蜜臀AV久久精品人人槡 | 一个人日本的视频免费完整版 | 日韩 国产 中文 无码 | 久久re这里精品23 | 色一伦一情一区二区三区 | 精品视频免费在线观看 | 亚洲宅男天堂a在线 | 蜜桃色欲AV久久无码精品 | 国产亚洲精品久久综合阿香蕉 | 美女脱了内裤张开腿让男人爽 | 国产区在线不卡视频观看 | 韩国污动漫无遮掩无删减电脑版 | 国产精品嫩草影院 | 亚洲人成网77777色在线播放 | 一道本无吗d d在线播放 | 久久伊人在 | 在线观看国产小视频 | 手机在线亚洲日韩国产 | 性按摩AAAAAAA片 | 9LPORM原创自拍达人 | 99RE6这里只有精品国产AV | aa级毛片毛片免费观看久 | 亚洲中字慕日产2020 | 老师好爽你下面水好多视频 | 亚洲AV 无码AV 中文字幕 | 2022久久精品国产色蜜蜜麻豆 | 国产精品一区二区AV白丝在线 | 无码日本亚洲一区久久精品 | 久久精品熟女亚洲AV国产 | 中文在线中文资源 | 日本激情网址 | 国产成人99久久亚洲综合精品 | 狠狠色综合久久婷婷 | 国产精品久久久久久久A片冻果 | 精品无码久久久久久国产百度 | 激情男女高潮射精AV免费 | 涩涩在线观看免费视频 | 日韩精品一区VR观看 |