西門子S7_200PLC與組態(tài)王的無(wú)線通信Modbus方案
在這里介紹一種PLC的MODBUS無(wú)線組態(tài)通信的實(shí)現(xiàn)方法。本方案可以作為西門子PLC與組態(tài)王通信的實(shí)例。
在工業(yè)現(xiàn)場(chǎng)可能會(huì)遇到這樣的情況,分布在不同地方(車間、控制室場(chǎng)所等)的PLC需要與總控中心的組態(tài)王軟件進(jìn)行遠(yuǎn)程通信,通常情況是采用有線RS485總線敷設(shè)電纜,通過(guò)MODBUS協(xié)議完成此功能。如果現(xiàn)場(chǎng)布線不方便的話,也可以采用無(wú)線方式進(jìn)行通信。本方案中采用了專門用于無(wú)線通信的智能數(shù)據(jù)終端DTD433M。
l 有線MODBUS網(wǎng)絡(luò):
S7-200
S7-200
STEP 7
S7-200
PG/PC
9.6kbps,8,N,1
人機(jī)界面
組態(tài)軟件
l
S7-200
STEP 7
PG/PC
RS485
9.6 kbps
人機(jī)界面
組態(tài)軟件
DTD433
DTD433
RS485
9.6 kbps
S7-200
RS485
9.6 kbps
DTD433
無(wú)線MODBUS網(wǎng)絡(luò):
在實(shí)際系統(tǒng)中,人機(jī)界面與PLC不在一起,中心計(jì)算機(jī)一般放置在控制室,而PLC安裝在現(xiàn)場(chǎng)車間,二者之間距離往往從幾十米到幾千米。如果布線的話,需要挖溝施工,比較麻煩,這種情況下比較適合采用無(wú)線通信方式。
一、PLC與組態(tài)王的Modbus通信
1. 下載S7_200程序
需要向 PLC中下載對(duì)應(yīng)的初始化程序(KVmoddbus.mwp),由亞控公司提供。此程序默認(rèn)的PLC通訊端口為 port0,地址為 2,波特率 9600,無(wú)校驗(yàn)(地址和波特率可由程SBR0 中的 VB8,SMB30 進(jìn)行修改);
2.設(shè)備選擇
選擇以下兩個(gè)設(shè)備都可以。
3. 演示程序界面
打開組態(tài)王演示工程文件
二、滿足西門子PLC的MODBUS通信協(xié)議的專用無(wú)線數(shù)據(jù)終端
為了滿足西門子PLC和組態(tài)王的MODBUS通信協(xié)議,對(duì)無(wú)線數(shù)據(jù)終端具有以下要求:
◆ 適合于RS232/RS485串口連接,可以直接代替有線的RS485網(wǎng)
DTD433M提供標(biāo)準(zhǔn)的RS232/RS485口。DTD433M接口波特率為9600bps,8 N 1。
◆ 具有獨(dú)特的軟件無(wú)線電技術(shù),保證高抗干擾能力和低誤碼率
基于FSK的調(diào)制方式,采用高效前向糾錯(cuò)信道編碼技術(shù),提高了數(shù)據(jù)抗突發(fā)干擾和隨機(jī)干擾的能力。大量應(yīng)用于高壓強(qiáng)干擾的電力系統(tǒng)監(jiān)控。
◆ 可以提供多種產(chǎn)品規(guī)格適應(yīng)于不同的傳輸距離
在空曠環(huán)境,天線安裝位置離地面高度大于2米的情況下,DTD433MA可靠傳輸距離可達(dá)300m,DTD433MB可靠傳輸距離可達(dá)1500m,DTD433MC可靠傳輸距離可達(dá)3000m。
◆ 自動(dòng)完成智能數(shù)據(jù)控制,用戶無(wú)需編制多余的程序
即使是半雙工通信,用戶也無(wú)需編制多余的程序,只要從接口收/發(fā)數(shù)據(jù)即可,其它如空中收/發(fā)轉(zhuǎn)換,控制等操作,DTD433M自動(dòng)完成。
◆ 無(wú)線數(shù)據(jù)終端的選擇原則
l 直線空曠距離在300米以內(nèi)可以選擇DTD433MA_S9600
l 直線空曠距離在1000米左右可以選擇DTD433MB_S9600
l 直線空曠距離在2000米左右可以選擇DTD433MC_S9600
三、試驗(yàn)設(shè)備及其接線
l 組態(tài)軟件:組態(tài)王6.53
l S7-200型號(hào):CPU224XP CN,1臺(tái)
l 無(wú)線數(shù)據(jù)終端:DTD433MB_S9600
PC電腦與無(wú)線數(shù)據(jù)終端DTD433M連接
RS-232連線
電腦RS232串口
DTD433M
DTD433M設(shè)置
RXD
DB9-Pin2 Rx
DB9-Pin2 Tx
K1: 1,2,3 OFF
4 ON
K2: 1,2,3,4 OFF
TXD
DB9-Pin3 TX
DB9-Pin3 Rx
GND
DB9-Pin5 GND
DB9-Pin5 GND
S7-200與無(wú)線數(shù)據(jù)終端DTD433M連接
RS-485連線
S7-200 Port0
DTD433M
DTD433M設(shè)置
RS485+ A
DB9-Pin3 B
RS485+ A
K1: 1,2,3 ON
4 OFF
K2: 1,2,3,4 OFF
RS485- B
DB9-Pin8 A
RS485- B
四、實(shí)物圖片
五、方案附件
l 組態(tài)王測(cè)試程序
l S7-200測(cè)試程序
l 組態(tài)軟件與西門子PLC的無(wú)線MODBUS通信方案.pdf
六、西門子提供的Modbus設(shè)備地址
1. Modbus主設(shè)備尋址
Modbus地址通常寫作包含數(shù)據(jù)類型和偏移量的5個(gè)字符的數(shù)值。第一個(gè)字符決定數(shù)據(jù)類型,最后四個(gè)字符在數(shù)據(jù)類型中選擇適當(dāng)?shù)臄?shù)值。然后,Modbus主設(shè)備指令將地址映射至正確的功能,以便發(fā)送到從站。Modbus主設(shè)備指令支持下列Modbus地址:
00001至09999是離散輸出(線圈)
10001至19999是離散輸入(觸點(diǎn))
30001至39999是輸入寄存器(通常是模擬量輸入)
40001至49999是保持寄存器
所有Modbus地址均以1為基位,表示第一個(gè)數(shù)據(jù)值從地址1開始。有效地址范圍將取決于從站。不同的從站將支持不同的數(shù)據(jù)類型和地址范圍。
2. Modbus 從站尋址
Modbus地址通常被寫為包含數(shù)據(jù)類型和偏移量的5個(gè)字符的數(shù)值。第一個(gè)字符決定數(shù)據(jù)類型,最后四個(gè)字符在數(shù)據(jù)類型中選擇適當(dāng)?shù)臄?shù)值。然后,Modbus主設(shè)備將地址映射至正確的功能。Modbus從站指令支持下列地址:
00001至00128是映射至Q0.0 - Q15.7的離散輸出
10001至10128是映射至I0.0 - I15.7的離散輸入
30001至30032是映射至AIW0至AIW62的模擬輸入寄存器
40001至4xxxx是映射至V存儲(chǔ)器的保持寄存器。
所有Modbus地址均以1為基位。下表顯示映射至S7-200地址的Modbus地址。
3. Modbus地址S7-200
00001 Q0.0
00002 Q0.1
00003 Q0.2
... ...
00127 Q15.6
00128 Q15.7
10001 I0.0
10002 I0.1
10003 I0.2
... ...
10127 I15.6
10128 I15.7
30001 AIW0
30002 AIW2
30003 AIW4
... ...
30032 AIW62
40001 Hold Start
40002 HoldStart+2
40003 HoldStart+4
... ...
4xxxx HoldStart+2 x (xxxx-1)
Modbus從站協(xié)議允許您限制Modbus主設(shè)備可存取的輸入、輸出、模擬輸入和保持寄存器(V存儲(chǔ)器)數(shù)量。
MBUS_INIT指令的MaxIQ參數(shù)指定Modbus主設(shè)備允許存取的離散輸入或輸出(I或Q)的最大數(shù)目。
MBUS_INIT指令的MaxAI參數(shù)指定Modbus主設(shè)備允許存取的輸入寄存器(AIW)的最大數(shù)目。
MBUS_INIT指令的MaxHold參數(shù)指定Modbus主設(shè)備允許存取的保持寄存器(V存儲(chǔ)器字)的最大數(shù)目。
請(qǐng)參閱MBUS_INIT指令說(shuō)明,了解有關(guān)為Modbus從站設(shè)定存儲(chǔ)器限制的進(jìn)一步詳情。
七、MODBUS常見問題解答
1. 我的設(shè)備支持 modbus設(shè)備,能否直接與組態(tài)王軟件連接?
只要設(shè)備是標(biāo)準(zhǔn)的 modbus 協(xié)議設(shè)備,即可使用組態(tài)王設(shè)備列表下的 PLC-->莫迪康
-->MODBUSRTU(或者 ACSII 碼)進(jìn)行通信。但具體的寄存器地址對(duì)照表必須從設(shè)備廠家
索取。
2. 我的支持 modbus 協(xié)議的串口設(shè)備,能否與多個(gè)上位軟件(比如組態(tài)王軟件和某品
牌觸摸屏)同時(shí)通訊?
因?yàn)?modbus 串口協(xié)議不支持多主站,所以不能多個(gè)軟件同時(shí)與 modbus 設(shè)備同時(shí)通
信。
3. 在組態(tài)王工程中建立多個(gè) modbusTCPIPserver 設(shè)備定義, 分別使用兩臺(tái)客戶端對(duì)其
訪問,只有站點(diǎn)高的那個(gè) server 通訊 ok,站點(diǎn)低的通訊失敗,為什么?
這是因?yàn)樵诮M態(tài)王軟件中只支持建立一個(gè) modbusTCPIPserver,當(dāng)建立多個(gè) server
時(shí),組態(tài)王客戶端則會(huì)自動(dòng)與站點(diǎn)高的server進(jìn)行通訊,所以會(huì)導(dǎo)致站點(diǎn)低的通訊失敗。
4. 如何實(shí)現(xiàn)組態(tài)王數(shù)據(jù)通過(guò)串口或者以太網(wǎng)驅(qū)動(dòng)方式傳送到其他組態(tài)軟件或者應(yīng)用程
序中?
如果其他組態(tài)軟件或者應(yīng)用程序支持 modbus 協(xié)議,則可以通過(guò)組態(tài)王提供的
modRTUserver 或者 modbusTCPserver 驅(qū)動(dòng)來(lái)實(shí)現(xiàn)。
5. 組態(tài)王與支持 Modbus協(xié)議的設(shè)備進(jìn)行通訊時(shí), 組態(tài)王畫面上顯示的數(shù)據(jù)不正確常有
哪些原因?
引起數(shù)據(jù)不正確的原因主要有如下幾點(diǎn):
1)組態(tài)王中定義的寄存器地址跟實(shí)際設(shè)備不一致導(dǎo)致。比如某些使用 modbus 協(xié)議
通訊的設(shè)備的數(shù)據(jù)地址是從 0 開始的,而組態(tài)王 modbus 協(xié)議驅(qū)動(dòng)寄存器地址是從 1 開
始的,所以遇到此種情況時(shí)在組態(tài)王中定義變量時(shí),寄存器地址要進(jìn)行加1 處理;
2)數(shù)據(jù)詞典中最大原始值和最大值定義不不當(dāng);比如最大原始值和最大值不一樣會(huì)
導(dǎo)致畫面看到的數(shù)據(jù)和實(shí)際設(shè)備不一致;
3)組態(tài)王讀取 FLOAT 和 LONG 類型的數(shù)據(jù)時(shí),沒有使用提供的 SwapF 和 SwapL
寄存器來(lái)調(diào)整FLOAT 型和 LONG型數(shù)據(jù)的字節(jié)順序;
4)LONG 或 FLOAT 型的雙字的數(shù)據(jù),沒有按照間隔隔地址方式定義;因?yàn)?modbus
協(xié)議所對(duì)應(yīng)的參數(shù)地址一般按照字為基本單位進(jìn)行分地址排序的。
6. 組態(tài)王與西門子 200plc自由口協(xié)議通過(guò)modem 通訊,硬件接線怎樣實(shí)現(xiàn)?
設(shè)備上插標(biāo)準(zhǔn) PPI 電纜,modem9 針口通過(guò)一個(gè)標(biāo)準(zhǔn) 232 交叉線接到 PPI 電纜上即
可,232交叉線的 modem側(cè)需要 1 4 6 短接,7 和 8 短接。
7. 西門子200plc通過(guò)modbus協(xié)議與組態(tài)王通訊時(shí), 組態(tài)王中定義的寄存器地址與plc
地址是如何對(duì)應(yīng)的?
映射關(guān)系如下:
0-Q,1-I,3、4、8、9-V;
3,4,8,9的 dd 號(hào)與 PLC中 V寄存器的偏移地址(實(shí)際地址-1000)的對(duì)應(yīng)關(guān)系:
組態(tài)王中(寄存器的dd 號(hào)-1)*2=PLC中的 V寄存器的偏移地址。組態(tài)王中 40031
對(duì)應(yīng) PLC:VW1060 (組態(tài)王中寄存器 4 表示SHORT 型變量)組態(tài)王中 90640 對(duì)應(yīng) PLC:
VD2278 (組態(tài)王中寄存器9 表示 FLOAT型變量)。
注:上面的對(duì)應(yīng)關(guān)系是針對(duì)用戶使用的是亞控公司提供了PLC(MODBUS)通訊的初
始化程序,如果用戶是自己編程寫的初始化程序,則根據(jù)實(shí)際程序規(guī)定的 modbus 對(duì)應(yīng)
地址定義變量。
8. 西門子 200plc通過(guò) modbus協(xié)議與組態(tài)王通訊,需要注意哪些事項(xiàng)?
需要注意如下幾點(diǎn):
1)需要向 PLC中下載對(duì)應(yīng)的初始化程序(KVmoddbus.mwp),由亞控提供。此程
序默認(rèn)的 plc 通訊端口為 port0,地址為 2,波特率 9600,無(wú)校驗(yàn)(地址和波特率可由程
SBR0 中的 VB8,SMB30 進(jìn)行修改);
2)由于 PLCModbus 協(xié)議程序占用 V1000及以前的地址,所以用戶在編寫邏輯控制
程序中用到的寄存器不能和亞控提供的協(xié)議中所占用的 V區(qū)地址沖突;
3)西門子 S7200PLC 和通過(guò) modbus 協(xié)議和組態(tài)王通訊時(shí),CPU上的開關(guān)必須撥在
RUN狀態(tài),否則 PLC中的 modbus 通訊程序沒有處于運(yùn)行狀態(tài),組態(tài)王和設(shè)備通過(guò)自由
口協(xié)議肯定通訊失??;
9. 西門子 200plc通過(guò) GPRS鏈路和組態(tài)王通訊,使用哪種協(xié)議方式比較好?
推薦使用自由口/modbusRTu協(xié)議。
ppi 協(xié)議實(shí)際上也支持通過(guò)GPRS 鏈路和組態(tài)王通訊,但由于PPI 協(xié)議的特殊性,
GPRS方式下通訊效果不是很好,因此不推薦客戶使用。
10. 組態(tài)王提供的 ModbusRTUServer 和 ModbusRTU驅(qū)動(dòng)的寄存器是怎樣對(duì)應(yīng)的?
ModbusRTUServer 的B寄存器對(duì)應(yīng)ModbusRTU的 0 寄存器;
ModbusRTUServer 的R寄存器對(duì)應(yīng)ModbusRTU的 4 寄存器。