前面的文章我們介紹了Modbus RTU通信中主站S7-1200的配置和編程,今天這篇文章,我們來(lái)介紹從站S7-200 Smart的配置及編程。
本例程從站使用S7-200 Smart的CPU ST40,通信端口使用CPU模塊本體的RS485接口,modbus地址為2。
打開(kāi)編程軟件STEP 7-Micro/WIN SMART,在指令庫(kù)中找到文件夾“Modbus_RTU_Slave”,里面有兩個(gè)指令:MBUS_INIT和MBUS_SLAVE,如下圖:
指令I(lǐng)NIT用來(lái)初始化從站的地址、通信的波特率、存儲(chǔ)器地址等相關(guān)信息。選中該指令將其拖放到主程序MAIN中,如下圖:
該指令的相關(guān)參數(shù)含義見(jiàn)下面的表格:
注意:
1)MaxIQ用于設(shè)置modbus參數(shù)地址0xxxx與1xxxx對(duì)應(yīng)的PLC的輸出Q與輸入I的地址,在S7-200 Smart中,最大可設(shè)置為256(不同類型的PLC該值不同)。當(dāng)設(shè)置為0時(shí),將禁用輸入及輸出的讀寫操作;
2)MaxAI用于設(shè)置modbus參數(shù)地址3xxxx對(duì)應(yīng)的PLC的字輸入寄存器的地址,也就是模擬量輸入(AI)的地址。對(duì)于S7-200 Smart緊湊型CPU(CR20s、CR30s、CR40s、CR60s)而言,建議設(shè)置為0;其它標(biāo)準(zhǔn)型CPU,建議設(shè)置為56;
3)MaxHold用于設(shè)置modbus地址4xxxx或4yyyyy對(duì)應(yīng)的PLC的保持存儲(chǔ)區(qū)的大小,以字為單位。例如,如果要允許modbus主站訪問(wèn)2000個(gè)字節(jié)的從站V存儲(chǔ)區(qū),則MaxHold應(yīng)設(shè)置為1000;
4)MBUS_INIT僅在CPU啟動(dòng)后的第一個(gè)掃描周期執(zhí)行一次即可;如果更改通信參數(shù),則重新再執(zhí)行一次;
MBUS_INIT指令的完整代碼如下圖:
接下來(lái)我們將MBUS_SLAVE指令添加到主程序塊中,并設(shè)置其參數(shù)如下圖:
調(diào)用STEP 7 - Mciro/WIN SMART Instruction Library(指令庫(kù))需要分配庫(kù)指令數(shù)據(jù)區(qū)(Library Memory)。庫(kù)指令數(shù)據(jù)區(qū)是相應(yīng)庫(kù)的子程序和中斷程序所要用到的變量存儲(chǔ)空間。
MBUS_SLAVE指令庫(kù)需要一個(gè)781個(gè)字節(jié)的全局 V 存儲(chǔ)區(qū)。 分配方法如下:
右鍵單擊“程序塊”,在彈出的菜單中單擊“庫(kù)存儲(chǔ)器”,如下圖:
在彈出的庫(kù)存儲(chǔ)器分配對(duì)話框中,選擇“Modbus RTU Slave”,如下圖:
點(diǎn)擊“建議地址”,系統(tǒng)會(huì)自動(dòng)分配可用的V存儲(chǔ)區(qū)作為庫(kù)存儲(chǔ)區(qū)。