1. 硬件設(shè)置
程序中的 Modbus 通訊是在兩個(gè) S7-200 CPU 的 0 號通訊口間進(jìn)行的(最好每個(gè) CPU 都有兩個(gè)通訊口)。在主站側(cè)也可以用相應(yīng)庫文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通過1號通訊口通信。通訊口 1 用 Micro/WIN 與 PG 或 PC 建立連接,兩個(gè) CPU 的通訊口 0 通過 Profibus 纜進(jìn)行連接(電纜的針腳 連接為3,3,8,8 -> 見圖 01)。另外,需要確定邏輯地M相連 。
2. 參數(shù)匹配
對于 MODBUS 通訊,主站側(cè)需要程序庫 "MBUS_CTRL" 和 "MBUS_MSG",從站側(cè)需要程序庫 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要為主站和從站新建一個(gè)項(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")。
下面的表格列出了程序塊各個(gè)參數(shù)選項(xiàng)及其含義。
主站
MBUS_CTRL
MBUS_MSG
從站
MBUS_INIT
MBUS_SLAVE
3. 庫的存儲地址
項(xiàng)目完成后必須要在 Micro/WIN 中定義庫的存儲地址,當(dāng)定義完存儲區(qū)后, 要保證在任何情況下不能再被
其它程序所使用 (主站側(cè): "DataPtr" + "Count" 從站側(cè):"HoldStart" + "MaxHold")。
4. 保持寄存器值的傳輸
將程序下載到相應(yīng)的 CPU 后,可以在狀態(tài)表中給主站側(cè)的 V 存儲區(qū)賦值,然后從站側(cè)監(jiān)視數(shù)值的變化。
當(dāng)主站的 I0.0 使能后,VW2 中的內(nèi)容就被發(fā)送到從站并寫入從站的 VW2 。
保持寄存器值的傳輸見圖. 04。
指針 "DataPtr" 代表了被讀的 V 區(qū)起始地址。
參數(shù) "Count" 指定了被寫入地址 "Addr" = "4xxxx" (保持寄存器)字的個(gè)數(shù)。
相應(yīng) V 存儲區(qū)的變量將被寫到保持寄存器啟始地址 "Addr" = "40002" ("RW" = "1")中。
保持寄存器是以字為單位傳輸?shù)模c從站的 V 區(qū)地址對應(yīng)。
指針 "HoldStart" 指定了與保持寄存器起始地址 40001 相對應(yīng)的V存儲區(qū)的初始地址。
可以按下面公式計(jì)算從站的V區(qū)目標(biāo)指針:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
另外,要保證主站側(cè)所要寫入的數(shù)據(jù)區(qū)包含在 "MaxHold" 定義的數(shù)據(jù)區(qū)內(nèi) :
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2