當(dāng)前位置:機(jī)電之家首頁 >> PLC技術(shù)>> PLC文案資料 >> PLC論文 >> S7-200 如何實(shí)現(xiàn)Modbus通信?
S7-200 如何實(shí)現(xiàn)Modbus通信?

下面的例程說明了在S7-200CPU之間設(shè)置一個簡單的Modbus通訊。
這個例子是關(guān)于Modbus功能碼6的(寫從站保持寄存器), 也可以作為其他所支持的功能碼:1, 2, 3, 4, 5, 15 和16 的基本參數(shù)設(shè)置步驟 。

要求:
要使用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號通訊口間進(jìn)行的(最好每個CPU都有兩個通訊口)。在主站側(cè)也可以選擇相應(yīng)庫文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通過1號通訊口通信。通訊口1與Micro/WIN建立PG或PC連接,兩個CPU的通訊口0通過PPI電纜進(jìn)行連接(電纜的針腳 連接為2,3,7,8)。

( 26 KB )
圖. 01

2. 參數(shù)匹配
對于MODBUS通訊, 主站側(cè)需要程序庫 "MBUS_CTRL" 和 "MBUS_MSG", 從站側(cè)需要程序庫 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要為主站和從站新建一個項(xiàng)目,程序與參數(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")。

( 40 KB )
圖. 02

下面的表格列出了程序塊各個參數(shù)選項(xiàng)及其意義

主站

MBUS_CTRL
 

參數(shù) 意義 選項(xiàng)
EN 使能  
Mode 協(xié)議選擇 0=PPI, 1=MODBUS
Baud 傳輸速率 kbps 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
Parity 校驗(yàn)選擇 0=無校驗(yàn), 1=奇校驗(yàn), 2=偶校驗(yàn)
Timeout 從站的最長響應(yīng)時(shí)間 ms  
Done “完成”標(biāo)志位  
Error 錯誤代碼 1)
表 01

1) 參看STEP 7 Micro/WIN 幫助: "MODBUS主站執(zhí)行MBUS_MSG時(shí)的錯誤代碼MBUS_MSG" 。

MBUS_MSG
 

參數(shù) 意義 選項(xiàng)
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時(shí)的錯誤代碼MBUS_MSG" 。

從站

MBUS_INIT
 

參數(shù) 意義 選項(xiàng)
EN 使能  
Mode 協(xié)議選擇 0=PPI, 1=MODBUS
Addr 從站地址  
Baud 傳輸速率 kbps 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
Parity 校驗(yàn) 0=無校驗(yàn), 1=奇校驗(yàn), 2=偶校驗(yàn)
Delay 超時(shí)時(shí)間 ms  
MaxIQ 可使用的數(shù)字輸入輸出點(diǎn)數(shù) 2)
MaxAI 可使用的模擬量輸入點(diǎn)數(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ù) 意義 選項(xiàng)
EN 使能  
Done 完成標(biāo)志位  
Error 錯誤代碼 3)
表 04

3)參看STEP 7 Micro/WIN 幫助: “MODBUS從站協(xié)議的錯誤代碼” 。

3. 庫的存儲地址
項(xiàng)目完成后必須要在Micro/WIN中定義庫的存儲地址,當(dāng)定義完存儲區(qū)后, 要保證在任何情況下不能再被其它程序所使用 (主站側(cè): "DataPtr" + "Count" 從站側(cè): "HoldStart" + "MaxHold")。

 

( 137 KB )
圖. 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ū)的初始地址。
可以這樣計(jì)算從站的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

( 38 KB )
Fig. 04

作者:未知 點(diǎn)擊:321次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:S7-200 如何實(shí)現(xiàn)Modbus通信?
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請《S7-200 如何實(shí)現(xiàn)Modbus通信?》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個人求購

楊異乾 【求購】  電涌保護(hù)器  2025-11-28
趙焱 【求購】  電氣溫控閥  2025-11-28
張揚(yáng)瓊 【求購】  ABB火檢...  2025-11-27
張雪根 【求購】  固體除垢劑  2025-11-26
趙經(jīng)理 【求購】  變壓器  2025-11-26
羅經(jīng)理 【求購】  巡邏車跟蹤...  2025-11-26
趙經(jīng)理 【求購】  柴油發(fā)電機(jī)  2025-11-26
沈雙 【求購】  柴油過濾紙  2025-11-26
VIP公司推薦