軟件編程
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主站,其相關編程步驟如下:
圖11. 拖入Modbus RTU 主站指令
注意
① 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輪詢調用方式
本例中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. 系統常量
分布式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變量"--->"系統常數"中查詢。
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 從站指令
- PLC編程實例|基本控制電路設計方法,教你吃透控制原理! 2024-12-02
- 西門子S7-1200 PLC基礎:創建一個完成項目 2024-12-02
- 如何降低電機損耗?這里有妙招 2024-12-02
- 伺服驅動器和伺服電機的區別 2024-12-02
- 線性伺服驅動器在精密運動平臺的應用 2024-12-02
- 工業伺服編碼器應用 2024-12-02
- 液壓伺服控制系統的控制要求 2024-12-02
- 電氣伺服驅動裝置包括直流伺服和交流伺服嗎? 2024-12-02
- 伺服電機加速度的一般范圍 2024-12-02
- 工業控制——PLC電氣控制系統中,如何選擇步進電機和伺服電機 2024-12-02
- 一文讀懂伺服系統組成及其控制原理 2024-12-02
- 詳析面向伺服驅動器的運動控制解決方案 2024-12-02
- 伺服驅動器時不可忽視的那些小細節 2024-12-02
- 伺服系統控制架構解析及應用 2024-12-02
- 中國伺服電機行業現狀及競爭格局分析 2024-12-02
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684