西門子S7_200PLC與組態(tài)王的無線遠程GPRS通信Modbus方案
在這里介紹一種采用GPRS透明數據終端和PLC的MODBUS無線組態(tài)通信的實現(xiàn)方法。本方案可以作為西門子PLC與組態(tài)王遠程無線通信的實例。
在工業(yè)現(xiàn)場可能會遇到這樣的情況,分布在不同地方(車間、控制室場所等)的PLC需要與總控中心的組態(tài)王軟件進行遠程通信,通常情況是采用有線RS485總線敷設電纜,通過MODBUS協(xié)議完成此功能。如果現(xiàn)場距離總控中心距離非常遠,布線不可能話,就可以采用GPRS方式進行無線通信。本方案中采用了專門用于無線遠程GPRS通信的智能數據終端DTP_S09F。
l 有線MODBUS網絡:
l 遠程無線MODBUS網絡:
在實際系統(tǒng)中,人機界面與PLC不在一個地區(qū),中心計算機一般放置在辦公室,而PLC安裝在現(xiàn)場車間,二者之間距離可能往往從幾十米到幾千米甚至幾千公里。如果在廠區(qū)幾公里范圍內的話可以采用無線電方案,要是距離再遠的話就可以采用移動GPRS網絡,這樣的話就沒有距離限制了,這種情況下比較適合遠程無線通信。
一、PLC與組態(tài)王的Modbus通信
1. 下載S7_200程序
需要向 PLC中下載對應的初始化程序(KVmoddbus.mwp),由亞控公司提供。此程序默認的PLC通訊端口為 port0,地址為 2,波特率 9600,無校驗(地址和波特率可由程SBR0 中的 VB8,SMB30 進行修改);
2.設備選擇
選擇以下兩個設備都可以。
3.修改虛擬設備
必須注意配置DTU設備標識信息與圖中*,端口號根據用戶的設定。
4. 演示程序界面
打開組態(tài)王演示工程文件
二、滿足西門子PLC的MODBUS通信協(xié)議的GPRS數據終端
為了滿足西門子PLC和組態(tài)王的MODBUS通信協(xié)議,對GPRS數據終端具有以下要求:
◆ 適合于RS232/RS485串口連接,可以直接代替有線的RS485網;
◆ 無需修改用戶軟件,無需二次開發(fā);
◆ 全透明傳輸,永遠在線,自動重連;
◆ 支持域名和IP兩種連接方式;
◆ 雙看門狗,*死機;
◆ 工作溫度:-35~ +75℃;
◆ 工業(yè)標準設計,能工作于各種惡劣環(huán)境;
◆ 提供力控、杰控及組態(tài)王等組態(tài)例程。
三、試驗設備及其接線
l 組態(tài)軟件:組態(tài)王6.53
l S7-200型號:CPU224XP CN,1臺
l GPRS數據終端:DTP_S09F
S7-200與無線數據終端DTP_S09F連接
RS-485連線 | S7-200 Port0 | DTP_S09F |
RS485+ A | DB9-Pin3 B | DB9_5 A |
RS485- B | DB9-Pin8 A | DB9_3 B |
四、實物圖片
五、方案附件
l 組態(tài)王測試程序
l S7-200測試程序
l 組態(tài)軟件MODBUS與西門子PLC的無線遠程GPRS通信方案.pdf
六、西門子提供的Modbus設備地址
1. Modbus主設備尋址
Modbus地址通常寫作包含數據類型和偏移量的5個字符的數值。*個字符決定數據類型,zui后四個字符在數據類型中選擇適當的數值。然后,Modbus主設備指令將地址映射至正確的功能,以便發(fā)送到從站。Modbus主設備指令支持下列Modbus地址:
00001至09999是離散輸出(線圈)
10001至19999是離散輸入(觸點)
30001至39999是輸入寄存器(通常是模擬量輸入)
40001至49999是保持寄存器
所有Modbus地址均以1為基位,表示*個數據值從地址1開始。有效地址范圍將取決于從站。不同的從站將支持不同的數據類型和地址范圍。
2. Modbus 從站尋址
Modbus地址通常被寫為包含數據類型和偏移量的5個字符的數值。*個字符決定數據類型,zui后四個字符在數據類型中選擇適當的數值。然后,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
00001Q0.0
00002Q0.1
00003Q0.2
......
00127Q15.6
00128Q15.7
10001I0.0
10002I0.1
10003I0.2
......
10127I15.6
10128I15.7
30001AIW0
30002AIW2
30003AIW4
......
30032AIW62
40001Hold Start
40002HoldStart+2
40003HoldStart+4
......
4xxxxHoldStart+2 x (xxxx-1)
Modbus從站協(xié)議允許您限制Modbus主設備可存取的輸入、輸出、模擬輸入和保持寄存器(V存儲器)數量。
MBUS_INIT指令的MaxIQ參數Modbus主設備允許存取的離散輸入或輸出(I或Q)的zui大數目。
MBUS_INIT指令的MaxAI參數Modbus主設備允許存取的輸入寄存器(AIW)的zui大數目。
MBUS_INIT指令的MaxHold參數Modbus主設備允許存取的保持寄存器(V存儲器字)的zui大數目。
請參閱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)王數據通過串口或者以太網驅動方式傳送到其他組態(tài)軟件或者應用程
序中?
如果其他組態(tài)軟件或者應用程序支持 modbus 協(xié)議,則可以通過組態(tài)王提供的
modRTUserver 或者 modbusTCPserver 驅動來實現(xiàn)。
5. 組態(tài)王與支持 Modbus協(xié)議的設備進行通訊時, 組態(tài)王畫面上顯示的數據不正確常有
哪些原因?
引起數據不正確的原因主要有如下幾點:
1)組態(tài)王中定義的寄存器地址跟實際設備不*導致。比如某些使用 modbus 協(xié)議
通訊的設備的數據地址是從 0 開始的,而組態(tài)王 modbus 協(xié)議驅動寄存器地址是從 1 開
始的,所以遇到此種情況時在組態(tài)王中定義變量時,寄存器地址要進行加1 處理;
2)數據詞典中zui大原始值和zui大值定義不不當;比如zui大原始值和zui大值不一樣會
導致畫面看到的數據和實際設備不*;
3)組態(tài)王讀取 FLOAT 和 LONG 類型的數據時,沒有使用提供的 SwapF 和 SwapL
寄存器來調整FLOAT 型和 LONG型數據的字節(jié)順序;
4)LONG 或 FLOAT 型的雙字的數據,沒有按照間隔隔地址方式定義;因為 modbus
協(xié)議所對應的參數地址一般按照字為基本單位進行分地址排序的。
6. 組態(tài)王與西門子 200plc自由口協(xié)議通過modem 通訊,硬件接線怎樣實現(xiàn)?
設備上插標準 PPI 電纜,modem9 針口通過一個標準 232 交叉線接到 PPI 電纜上即
可,232交叉線的 modem側需要 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)通訊的初
始化程序,如果用戶是自己編程寫的初始化程序,則根據實際程序規(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驅動的寄存器是怎樣對應的?
ModbusRTUServer 的B寄存器對應ModbusRTU的 0 寄存器;
ModbusRTUServer 的R寄存器對應ModbusRTU的 4 寄存器。