使用下面的例程你可以在S7-200CPU之間設置一個簡單的Modbus通訊。這個例子是關于Modbus功能碼6的(寫從站保持寄存器), 也可以作為其他所支持的功能碼:1, 2, 3, 4, 5, 15 和16 的基本參數設置步驟 。
要求:要使用Modbus協議必須先在STEP 7 Micro/Win上安裝指令庫 。Modbus主站協議只支持STEP 7 Micro/Win V4.0 SP5及其以上版本.。
硬件設置
參數匹配
指令庫的存儲地址
保持寄存器值得傳輸
1.硬件設置例程中的Modbus通訊是在兩個S7-200 CPU的0號通訊口間進行的(最好每個CPU都有兩個通訊口)。在主站側也可以選擇相應庫文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通過1號通訊口通信。通訊口1與Micro/WIN建立PG或PC連接,兩個CPU的通訊口0通過PPI電纜進行連接(電纜的 針腳 連接為2,3,7,8)。
2.參數匹配對于MODBUS通訊, 主站側需要程序庫 "MBUS_CTRL" 和 "MBUS_MSG",
①從站側需要程序庫 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要為主站和從站新建一個項目,程序與參數設置見圖02。必須要保證主站與從站的“Baud”和"Parity"的參數設置要一致,并且程序塊"MBUS_MSG"中的"Slave"地址要與程序塊"MBUS_INIT"中的"Addr"所設置的一致 (見圖.02)。Micro/WIN“系統塊”中設置的0通訊口的波特率與MODBUS協議無關("Mode" = "1")。
下面的表格列出了程序塊各個參數選項及其意義
主站
MBUS_CTRL
表 01
1)參看STEP 7 Micro/WIN 幫助: "MODBUS主站執行MBUS_MSG時的錯誤代碼MBUS_MSG" 。
MBUS_MSG
表 02
1)參看STEP 7 Micro/WIN 幫助: "MODBUS主站執行MBUS_MSG時的錯誤代碼MBUS_MSG" 。
從站
MBUS_INIT
表 03
2)最大的地址取決于所用CPU的類型及其最大值。3)參看STEP 7 Micro/WIN 幫助: “MODBUS從站協議的錯誤代碼”。
MBUS_SLAVE
表 04
3)參看STEP 7 Micro/WIN 幫助: “MODBUS從站協議的錯誤代碼” 。
3.庫的存儲地址項目完成后必須要在Micro/WIN中定義庫的存儲地址,當定義完存儲區后, 要保證在任何情況下不能再被其它程序所使用 (主站側: "DataPtr" + "Count" 從站側: "HoldStart" + "MaxHold"
4.保持寄存器值的傳輸將程序下載到相應的CPU后,可以在狀態表中給主站側的V存儲區賦值,然后監視從站的變化。當主站的I0.0使能后,VW2中的內容就被發送到從站并寫入從站的VW2 。
①保持寄存器值的傳輸見圖.04。指針"DataPtr" 代表了V區被讀的起始地址。參數 "Count" 表明了地址"Addr" = "4xxxx" (保持寄存器)以字為單位被讀的個數。主站中被讀取的V存儲區被寫入地址為"Addr" = "40002" ("RW" = "1")的保持寄存器中。保持寄存器是以字為單位工作的,它與從站的V區地址對應。指針 "HoldStart" 明確了與保持寄存器起始地址40001相對應的V存儲區的初始地址。可以這樣計算從站的V區目標指針:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
另外,要保證"MaxHold" 定義的數據區能夠包含主站側所要寫入的數據區 :
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
-
寄存器
+關注
關注
31文章
5325瀏覽量
120034 -
cpu
+關注
關注
68文章
10827瀏覽量
211173 -
S7-200
+關注
關注
13文章
407瀏覽量
50331
原文標題:西門子S7-200 Modbus最強解析圖解
文章出處:【微信號:GKB1508,微信公眾號:工控幫】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論