在使用Modbus協(xié)議時,計算機(jī)與S7-200之間通訊直接使用PPI通訊電纜即可。但如果通訊距離較遠(yuǎn),或者需要將多個S7-200連接到一個通訊總線上時,我們可以通過如下方法配制通訊鏈路。
選配一個計算機(jī)通訊端口
由于S7-200通訊端口物理層使用的是RS-485通訊規(guī)范,因此我們需要在計算機(jī)端增加一個RS-485通訊端口,才能與計算機(jī)通訊建立通訊。如果計算機(jī)閑置的串口,我們可以選配一個RS-232轉(zhuǎn)RS-484轉(zhuǎn)換器即可;如果沒有閑置的串口,我們通過在計算機(jī)中增加一個RS-485通訊卡也可以;現(xiàn)在很多計算機(jī)都有USB口,我們也可以在計算機(jī)上外接一個USB轉(zhuǎn)RS-485轉(zhuǎn)換器。連接通訊電纜
S7-200的通訊端口是一個9孔(famel)D型插頭,針腳分布如下所示:
針腳 | 信號 |
1 | 地線 (RS-485 邏輯地) |
2 | 24 V 地線 (RS-485 邏輯地) |
3 | 信號B (RxD/TxD+) |
4 | RTS (TTL level) |
5 | 地線 (RS-485 邏輯地) |
6 | (空) |
7 | 24 V 電源 |
8 | 信號A (RxD/TxD-) |
9 | 通訊選擇 |
S7-200通訊端口(端口0)與RS-485板卡或RS-485/RS-232轉(zhuǎn)換器之間接線,如下圖所示:
S7-200編程及設(shè)置
在缺省情況下S7-200的通訊端口是不支持Modbus協(xié)議的,要想實現(xiàn)Modbus通訊必需在PLC的主程序模塊中調(diào)用Modbus通訊子程序。Modbus通訊子程序可以從“STEP 7-Micro/WIN Add-On: Instruction Library (STEP 7-Micro/WIN附件:指令庫)”中獲得。在安裝了“STEP 7-Micro/WIN附件:指令庫”后,在導(dǎo)航樹“指令/庫”下面我們可以找到“Modbus Protocol”。在其下面包含了MBUS_INIT和MBUS_SLAVE兩個子程序,MBUS_INIT用于對Modbus通訊進(jìn)行初始化,MBUS_SLAVE用于在指定端口上提供Modbus從站通訊服務(wù)。下在介紹如何在主程序中調(diào)相關(guān)子程序及環(huán)境參數(shù)設(shè)置:調(diào)用Modbus通訊初始化命令
首先為MBUS_INIT命令建立一個觸發(fā)條件(只觸發(fā)一次),如:SM0.1;從導(dǎo)航樹“指令/庫/ Modbus Protocol”下面,將MBUS_INIT指令拖拽到主程序塊中。再就是正確設(shè)置MBUS_INIT各項調(diào)用參數(shù)和執(zhí)行結(jié)果輸出地址,我們可以建立一下如下圖所示初始化調(diào)用過程:
Mode:協(xié)議類型,1-Modbus協(xié)議;0-PPI協(xié)議。
Addr: PLC地址,1~247,。
Baud: 通訊波特率,1200、2400、4800、9600、19200、38400、57600或11520。
Parity: 校驗方式,0-無校驗;1-奇數(shù)校驗;2-偶數(shù)校驗。
Delay:信息結(jié)束超時時間,0~32767,有線連接設(shè)置為0即可。
MaxIQ:0~128,映射在離散輸入寄存器或離散輸出寄存器中的I或Q數(shù)。建議為:128。
MaxAI:0~32;映射在模擬輸入寄存器中AIW數(shù);CPU 221為0,CPU 222為16,CPU 224、226和226XM為32。
MaxHold:V內(nèi)存映射在保持寄存器中的寄存器數(shù)。
HoldStart:V內(nèi)存的映射時的起始地址。
Done:初始化指完成時,輸出為開狀態(tài);開關(guān)量(Bit)。
Error:初始化錯誤代碼,請參閱Modbus從機(jī)協(xié)議執(zhí)行錯誤代碼;輸出為字節(jié)。調(diào)用Modbus從機(jī)通訊命令
初始化完成后,就可以調(diào)用Modbus從機(jī)通訊命令(MBUS_SLAVE)了。通常Modbus從機(jī)通訊命令在主程序塊的每個執(zhí)行周期都要初執(zhí)行(始終保持通訊狀態(tài)),因為可以用一個常開量作為命令的觸發(fā)條件,如:SM0.0。從導(dǎo)航樹“指令/庫/ Modbus Protocol”下面,將MBUS_SLAVE指令拖拽到主程序塊中。調(diào)用過程如下圖所示:
Done: 當(dāng)MBUS_SLAVE指令響應(yīng)對Modbus請求時,"Done"為開狀態(tài)。沒通訊請求時"Done"為關(guān)狀態(tài)。
Error:指令執(zhí)行結(jié)果。只有"Done"為開狀態(tài)時,此狀態(tài)有效。請參閱Modbus從機(jī)協(xié)議執(zhí)行錯誤代碼;輸出為字節(jié)。庫存儲區(qū)分配
在完成前面兩個指令調(diào)用后,還要為庫指令使用的符號分配內(nèi)存。當(dāng)庫指令被插入到主程序塊中,在導(dǎo)航樹“程序塊”下會出現(xiàn)一個“庫”節(jié)點(diǎn)。在“庫”節(jié)點(diǎn)上點(diǎn)擊鼠標(biāo)右鍵,在彈出菜單中選擇“庫存儲區(qū)”,進(jìn)入“庫存儲區(qū)分配”對話框。
在地址框中輸入分配內(nèi)存的開始地址,或者通過點(diǎn)擊“建議地址”按鈕自動分配內(nèi)存。注意,分配的內(nèi)存不要與已使用的內(nèi)存重疊
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8578瀏覽量
146562 -
RS-485
+關(guān)注
關(guān)注
11文章
669瀏覽量
84068 -
ModBus協(xié)議
+關(guān)注
關(guān)注
3文章
171瀏覽量
33350
原文標(biāo)題:西門子S7-200使用Modbus協(xié)議(最全解析)
文章出處:【微信號:GKYXT1508,微信公眾號:工控云學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論