前麵的文章我們(men) 介紹了Modbus RTU通信中主站S7-1200的配置和編程,今天這篇文章,我們(men) 來介紹從(cong) 站S7-200 Smart的配置及編程。
本例程從(cong) 站使用S7-200 Smart的CPU ST40,通信端口使用CPU模塊本體(ti) 的RS485接口,modbus地址為(wei) 2。
打開編程軟件STEP 7-Micro/WIN SMART,在指令庫中找到文件夾“Modbus_RTU_Slave”,裏麵有兩(liang) 個(ge) 指令:MBUS_INIT和MBUS_SLAVE,如下圖:
指令INIT用來初始化從(cong) 站的地址、通信的波特率、存儲(chu) 器地址等相關(guan) 信息。選中該指令將其拖放到主程序MAIN中,如下圖:
該指令的相關(guan) 參數含義(yi) 見下麵的表格:
注意:
1)MaxIQ用於(yu) 設置modbus參數地址0xxxx與(yu) 1xxxx對應的PLC的輸出Q與(yu) 輸入I的地址,在S7-200 Smart中,最大可設置為(wei) 256(不同類型的PLC該值不同)。當設置為(wei) 0時,將禁用輸入及輸出的讀寫(xie) 操作;
2)MaxAI用於(yu) 設置modbus參數地址3xxxx對應的PLC的字輸入寄存器的地址,也就是模擬量輸入(AI)的地址。對於(yu) S7-200 Smart緊湊型CPU(CR20s、CR30s、CR40s、CR60s)而言,建議設置為(wei) 0;其它標準型CPU,建議設置為(wei) 56;
3)MaxHold用於(yu) 設置modbus地址4xxxx或4yyyyy對應的PLC的保持存儲(chu) 區的大小,以字為(wei) 單位。例如,如果要允許modbus主站訪問2000個(ge) 字節的從(cong) 站V存儲(chu) 區,則MaxHold應設置為(wei) 1000;
4)MBUS_INIT僅(jin) 在CPU啟動後的第一個(ge) 掃描周期執行一次即可;如果更改通信參數,則重新再執行一次;
MBUS_INIT指令的完整代碼如下圖:
接下來我們(men) 將MBUS_SLAVE指令添加到主程序塊中,並設置其參數如下圖:
調用STEP 7 - Mciro/WIN SMART Instruction Library(指令庫)需要分配庫指令數據區(Library Memory)。庫指令數據區是相應庫的子程序和中斷程序所要用到的變量存儲(chu) 空間。
MBUS_SLAVE指令庫需要一個(ge) 781個(ge) 字節的全局 V 存儲(chu) 區。 分配方法如下:
右鍵單擊“程序塊”,在彈出的菜單中單擊“庫存儲(chu) 器”,如下圖:
在彈出的庫存儲(chu) 器分配對話框中,選擇“Modbus RTU Slave”,如下圖:
點擊“建議地址”,係統會(hui) 自動分配可用的V存儲(chu) 區作為(wei) 庫存儲(chu) 區。