1. 硬件設置
程序中的 Modbus 通訊是在兩(liang) 個(ge) S7-200 CPU 的 0 號通訊口間進行的(最好每個(ge) CPU 都有兩(liang) 個(ge) 通訊口)。在主站側(ce) 也可以用相應庫文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通過1號通訊口通信。通訊口 1 用 Micro/WIN 與(yu) PG 或 PC 建立連接,兩(liang) 個(ge) CPU 的通訊口 0 通過 Profibus 纜進行連接(電纜的針腳 連接為(wei) 3,3,8,8 -> 見圖 01)。另外,需要確定邏輯地M相連 。
2. 參數匹配
對於(yu) MODBUS 通訊,主站側(ce) 需要程序庫 "MBUS_CTRL" 和 "MBUS_MSG",從(cong) 站側(ce) 需要程序庫 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要為(wei) 主站和從(cong) 站新建一個(ge) 項目,程序與(yu) 參數設置見圖.02。
必須要保證主站與(yu) 從(cong) 站的“Baud”和 “Parity” 的參數設置要一致,並且程序塊 "MBUS_MSG" 中的 "Slave" 地址要與(yu) 程序塊 "MBUS_INIT" 中的 "Addr" 所設置的一致 (見圖. 02)。
在 Micro/WIN“係統塊”中設置的通訊口 0 的波特率與(yu) MODBUS 協議無關(guan) ("Mode" = "1")。
下麵的表格列出了程序塊各個(ge) 參數選項及其含義(yi) 。
主站
MBUS_CTRL
MBUS_MSG
從(cong) 站
MBUS_INIT
MBUS_SLAVE
3. 庫的存儲(chu) 地址
項目完成後必須要在 Micro/WIN 中定義(yi) 庫的存儲(chu) 地址,當定義(yi) 完存儲(chu) 區後, 要保證在任何情況下不能再被
其它程序所使用 (主站側(ce) : "DataPtr" + "Count" 從(cong) 站側(ce) :"HoldStart" + "MaxHold")。
4. 保持寄存器值的傳(chuan) 輸
將程序下載到相應的 CPU 後,可以在狀態表中給主站側(ce) 的 V 存儲(chu) 區賦值,然後從(cong) 站側(ce) 監視數值的變化。
當主站的 I0.0 使能後,VW2 中的內(nei) 容就被發送到從(cong) 站並寫(xie) 入從(cong) 站的 VW2 。
保持寄存器值的傳(chuan) 輸見圖. 04。
指針 "DataPtr" 代表了被讀的 V 區起始地址。
參數 "Count" 指定了被寫(xie) 入地址 "Addr" = "4xxxx" (保持寄存器)字的個(ge) 數。
相應 V 存儲(chu) 區的變量將被寫(xie) 到保持寄存器啟始地址 "Addr" = "40002" ("RW" = "1")中。
保持寄存器是以字為(wei) 單位傳(chuan) 輸的,它與(yu) 從(cong) 站的 V 區地址對應。
指針 "HoldStart" 指定了與(yu) 保持寄存器起始地址 40001 相對應的V存儲(chu) 區的初始地址。
可以按下麵公式計算從(cong) 站的V區目標指針:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
另外,要保證主站側(ce) 所要寫(xie) 入的數據區包含在 "MaxHold" 定義(yi) 的數據區內(nei) :
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2