S7-1200 支持Modbus RTU通信模式的模塊可作為Modbus RTU主站。以下以 CPU1215C DC/DC/DC和CM1241 RS485 模塊為例,介紹S7-1200 Modbus RTU 主站通信組態及編程步驟。
硬件和軟件需求及所完成的通信任務:
硬件:① CPU1215C DC/DC/DC ② CM1241 RS485③ PS 307電源 ④ PC(帶以太網卡) ⑤ TP以太網電纜
軟件:① STEP 7 Professional V11 SP2 UPD4+HSP② ModSim(該軟件是第三方軟件,可以從 Internet 網絡下載)所完成的通信任務:將Modbus RTU從站ModSim中Modbus地址從40001開始的5個字中的數據,分別讀取到Modbus RTU主站CPU1215C 中地址DB1.DBW0開始的5 個字中。
1.組態Modbus RTU 通信模塊
在硬件目錄裡找到"通信模塊"→"點到點"→"CM1241(RS485)",雙擊或拖拽此模塊至CPU左側即可,如下圖1所示:
接下來,在"設備視圖"中用鼠標選中CM1241(RS485)模塊,在"屬性"→"端口組態"中配置此模塊硬件接口參數。如下圖2所示:
以下以傳輸率=9.6Kbps,奇偶校驗=無奇偶校驗,數據位=8位字符,停止位=1,其它保持默認設置為例。
最後在"硬件標識符"裡確認一下硬件標識符為271,如下圖3所示:
2.添加啟動OB
在項目樹下選擇"CPU1215C DC/DC/DC"→"程序塊"→"添加新塊",在彈出的窗口中選擇"OB 組織塊"→ "Startup",添加啟動OB 100,如下圖4所示:
3.調用MB_COMM_LOAD指令
為使端口一啟動就被設置為Modbus RTU通信模式,可在OB 100中調用"MB_COMM_LOAD"指令。調用"MB_COMM_LOAD"指令時會自動彈出創建相應背景數據塊的界面,如下圖5所示:
點擊"確認"為該指令創建背景數據塊後,為各輸入/輸出引腳分配地址。尤其需注意MB_DB輸入引腳需指向"MB_MASTER"指令的背景數據塊,如下圖6所示:
注意: "MB_COMM_LOAD"指令輸入位"REQ"需使用上升沿觸發。由於OB 100只在S7-1200啟動時執行一次,因此,此例中將"REQ"設為"TRUE"。
MB_COMM_LOAD指令參數意義如下表1所示:
4.創建DATA_PTR數據發送、接收緩衝區
通過"程序塊"→ "添加新塊",選擇"數據塊(DB)"創建 DB 塊,選擇"標準與S7- 300/400兼容" ,點擊"確認"鍵。在DB中創建數據類型為5個字的數組,如下圖7所示:
注意:DATA_PTR數據發送、接收緩衝區使用的DB訪問類型必須是標準與S7- 300/400兼容。
5.調用MB_MASTER指令
在OB1中調用"MB_MASTER"指令,調用該指令時會自動彈出創建相應背景數據塊的界面,如下圖8所示:
點擊"確認"為該指令創建背景數據塊後,併為各輸入/輸出引腳分配地址,如下圖9所示:
注意:"MB_MASTER"指令的輸入位"REQ"必須使用上升沿觸發。
以下以S7-1200作為Modbus RTU主站,用F03功能碼讀取Modbus RTU從站2,從Modbus地址40001開始的五個字,接收的數據存放在緩衝區DB3.DBW0開始區域為例。設置如下所示:MB_ADDR=2,MODE=0,DATA_ADDR=40001,DATA_LEN=5。
地址對應關係如下表2所示:
閱讀更多 PLC遠程控制系統 的文章