金華市西門子一級PLC模塊代理商
| 更新時間 2024-12-02 08:00:00 價格 請來電詢價 西門子PLC 西門子觸摸屏 西門子伺服電機 西門子變頻器 西門子直流調速器 西門子電纜 聯系電話 13922889745 聯系手機 18475208684 聯系人 向小姐 立即詢價 |
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 從站指令
Modbus_Slave指令各參數意義如下表3所示:
引腳 | 說明 |
MB_ADDR | Modbus 從站的標準尋址: |
MB_HOLD_REG | 數據指針,指向Modbus 保持寄存器的地址, Modbus 保持寄存器可以為M存儲區或DB數據區。 |
NDR | 可用的新數據: · FALSE - 無新數據 · TRUE – 表示新數據已由 Modbus 主站寫入 |
DR | 讀取數據: · FALSE - 無新數據 · TRUE –表示該指令已將 Modbus 主站接收到的數據存儲在目標區域中。 |
ERROR | 如果上一個請求完成出錯,則 ERROR 位將變為 TRUE 并保持一個周期。如果執行因錯誤而終止,則 STATUS 參數中的錯誤代碼僅在 ERROR = TRUE 的周期內有效。 |
STATUS | 錯誤代碼 |
表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通信了。
三、常見問題匯總
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版本。
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. 方式編程。
圖19. 獲取通訊錯誤代碼STATUS
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684