如何用西門子S7-200實現(xiàn)Modbus通信?
要使用Modbus協(xié)議必須先在STEP 7 Micro/Win上安裝指令庫 。
Modbus主站協(xié)議只支持STEP 7 Micro/Win V4.0 SP5及其以上版本.。
1. 硬件設(shè)置
2. 參數(shù)匹配
3. 指令庫的存儲地址
4. 保持寄存器值得傳輸
1. 硬件設(shè)置
例程中的Modbus通訊是在兩個S7-200 CPU的0號通訊口間進行的(最好每個CPU都有兩個通訊口)。在主站側(cè)也可以選擇相應(yīng)庫文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通過1號通訊口通信。通訊口1與Micro/WIN建立PG或PC連接,兩個CPU的通訊口0通過PPI電纜進行連接(電纜的 針腳 連接為2,3,7,8)。
圖01
圖01
2. 參數(shù)匹配
對于MODBUS通訊, 主站側(cè)需要程序庫 "MBUS_CTRL" 和 "MBUS_MSG", 從站側(cè)需要程序庫 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要為主站和從站新建一個項目,程序與參數(shù)設(shè)置見圖.02。
必須要保證主站與從站的“Baud”和"Parity"的參數(shù)設(shè)置要一致,并且程序塊"MBUS_MSG"中的"Slave"地址要與程序塊"MBUS_INIT"中的"Addr"所設(shè)置的一致 (見圖. 02)。
Micro/WIN“系統(tǒng)塊”中設(shè)置的0通訊口的波特率與MODBUS協(xié)議無關(guān)("Mode" = "1")。
圖02
下面的表格列出了程序塊各個參數(shù)選項及其意義
主站
MBUS_CTRL
參數(shù) 意義 選項 EN 使能 Mode 協(xié)議選擇 0=PPI, 1=MODBUS Baud 傳輸速率 kbps 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Parity 校驗選擇 0=無校驗, 1=奇校驗, 2=偶校驗 Timeout 從站的最長響應(yīng)時間 ms Done “完成”標(biāo)志位 Error 錯誤代碼 1) 表 01
1) 參看STEP 7 Micro/WIN 幫助: "MODBUS主站執(zhí)行MBUS_MSG時的錯誤代碼MBUS_MSG" 。
MBUS_MSG
參數(shù) 意義 選項 EN 使能 First 讀寫請求位 Slave 從站地址 RW "讀" 或 "寫" 0=讀, 1=寫 Addr 讀寫從站的數(shù)據(jù)地址 0 .. 128 = 數(shù)字量輸出 Q0.0 .. Q15.7
1001 .. 10128 = 數(shù)字量輸入 I0.0 .. Q15.7
30001 .. 30092 = 模擬量輸入 AIW0 .. AIW62
40001 .. 49999 = 保持寄存器 2 Count 位或字的個數(shù) (0xxxx, 1xxxx) / words (3xxxx, 4xxxx) DataPtr V存儲區(qū)起始地址指針 Done 完成 標(biāo)志位 Error 錯誤代碼 1) 表 02
1)參看STEP 7 Micro/WIN 幫助: "MODBUS主站執(zhí)行MBUS_MSG時的錯誤代碼MBUS_MSG" 。
從站
MBUS_INIT
參數(shù) 意義 選項 EN 使能 Mode 協(xié)議選擇 0=PPI, 1=MODBUS Addr 從站地址 Baud 傳輸速率 kbps 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Parity 校驗 0=無校驗, 1=奇校驗, 2=偶校驗 Delay 超時時間 ms MaxIQ 可使用的數(shù)字輸入輸出點數(shù) 2) MaxAI 可使用的模擬量輸入點數(shù) 2) MaxHold 保持寄存器字的最大數(shù)量 2) HoldStart 保持寄存器的起始地址(40001) Done 完成標(biāo)志位 Error 錯誤代碼 3) 表 03
2) 最大的地址取決于所用CPU的類型及其最大值。
3)參看STEP 7 Micro/WIN 幫助: “MODBUS從站協(xié)議的錯誤代碼”。
MBUS_SLAVE
參數(shù) 意義 選項 EN 使能 Done 完成標(biāo)志位 Error 錯誤代碼 3) 表 04
3)參看STEP 7 Micro/WIN 幫助: “MODBUS從站協(xié)議的錯誤代碼” 。
3. 庫的存儲地址
項目完成后必須要在Micro/WIN中定義庫的存儲地址,當(dāng)定義完存儲區(qū)后, 要保證在任何情況下不能再被其它程序所使用 (主站側(cè): "DataPtr" + "Count" 從站側(cè): "HoldStart" + "MaxHold")。
圖03
圖03
4. 保持寄存器值的傳輸
將程序下載到相應(yīng)的CPU后,可以在狀態(tài)表中給主站側(cè)的V存儲區(qū)賦值,然后監(jiān)視從站的變化。
當(dāng)主站的I0.0使能后,VW2中的內(nèi)容就被發(fā)送到從站并寫入從站的VW2 。
保持寄存器值的傳輸見圖. 04。
指針"DataPtr" 代表了V區(qū)被讀的起始地址。
參數(shù) "Count" 表明了地址"Addr" = "4xxxx" (保持寄存器)以字為單位被讀的個數(shù)。
主站中被讀取的V存儲區(qū)被寫入地址為"Addr" = "40002" ("RW" = "1")的保持寄存器中。
保持寄存器是以字為單位工作的,它與從站的V區(qū)地址對應(yīng)。
指針 "HoldStart" 明確了與保持寄存器起始地址40001相對應(yīng)的V存儲區(qū)的初始地址。
可以這樣計算從站的V區(qū)目標(biāo)指針:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
另外,要保證"MaxHold" 定義的數(shù)據(jù)區(qū)能夠包含主站側(cè)所要寫入的數(shù)據(jù)區(qū) :
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
圖04
關(guān)于STEP 7 Micro/WIN MOBDUS 庫的更多信息可以參看 S7-200 系統(tǒng)手冊 ( Entry ID 1109582) 和 STEP 7 Micro/WIN 幫助。
如何在 STEP 7 Micro/WIN 中找到 Modbus RTU 協(xié)議和 USS 協(xié)議操作庫?
說明:
在 STEP 7 Micro/WIN 中,Modbus RTU 協(xié)議和 USS 協(xié)議操作庫位于操作樹的“庫”文件夾中。MODBUS 函數(shù)庫要求 STEP 7 Micro/WIN 為 V3.2 或更高版本。
這些庫是附加函數(shù)庫,并非組態(tài)軟件 STEP 7 Micro/WIN 的組成部分。
您如果需要使用 Modbus RTU 協(xié)議,必須購買“SIMATIC STEP 7 Micro/WIN ADD ON: Function Library V1.1 (USS + MODBUS) for STEP 7 Micro/WIN 32”軟件。
這個可選附加函數(shù)庫的訂貨號是 6ES7830-2BC00-0YX0。
安裝順序:
先安裝“STEP 7 Micro/WIN 32 Toolbox V1.0”(包括庫),然后安裝“STEP 7 Micro/WIN”。
注意:
這個函數(shù)庫包含可以在 STEP 7 Micro/WIN V3.2 中使用的 Modbus RTU 協(xié)議庫和 USS 協(xié)議庫。
如果您安裝了 STEP 7 Micro/WIN V4.0 SP5 或者更高版本,那么操作庫中就會包含下列函數(shù):
Modbus RTU Master V1.2 對應(yīng)端口 0 和端口 1
Modbus RTU Slave V1.0 對應(yīng)端口 0
USS protocol V2.3 對應(yīng)端口 0 和端口 1
評論