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