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