Modbus TCP與西門子PLC數據地址對應關系
BCNet-S7PPI、BCNet-S7MPI內部集成ModbusTCP服務器,支持ModbusTCP通訊的客戶機軟件可以直接讀寫PLC的數據。實現功能號包括:FC1、FC2、FC3、FC4、FC5、FC6和FC16。
PLC的站地址為Modbus從站地址。
PLC的數據區和Modbus數據區在BCNet-S7PPI/MPI內部被自動映射,PLC內不需要編寫通訊程序:
1. PLC的Q區對應Modbus的線圈,Q0.0對應00001。
2. PLC的I區對應Modbus的離散輸入,I0.0對應10001。
3. PLC的M區對應Modbus的輸入寄存器,MW0對應30001。
4. PLC的V區(DB區)對應Modbus的乘法寄存器,VW0對應40001。
地址計算公式如下:
1. Qm.n = 00001 + m*8 + n。
2. Im.n = 10001 + m*8 + n。
3. MWm= 30001 + m/2,m為偶數。
4. VWm = 40001 + m/2,m為偶數;DB1.DBWm = 40001 + m/2,m為偶數。
例如:地址:40040;對應S7200地址:VW78;
對應S7300地址: DB1.DBW78;
此為西門子正式推出的標准庫指令說明資料。
在 Modbus RTU Master 協議和 PPI 協議之間切換:
Modbus RTU Master 協議指令庫使通信口工作在自由口模式下,此時不能與 Micro/WIN 軟件通信。要在切換回 PPI 協議,可以:
- 將 MBUS_CTRL 指令的 Mode 輸入端設置為邏輯"0"
- 將 CPU 的允許模式選擇開關置為 STOP 位置
Modbus RTU Master 協議庫的執行時間:
Modbus RTU Master 協議庫的 MBUS_CTRL 指令不需要很長的執行時間。MBUS_需要 1.11 ms 用於初始化,在后續的每個掃描周期中只占用 0.41 ms。
調用 MBUS_MSG 子程序會加長處理時間。大部分時間都用於 CRC 校驗的計算。每讀、寫一個字的數據就需要 1.85 ms 掃描時間。數據最多的情況下(讀、寫 120 字的數據),掃描時間大概會擴增加 222 ms。讀操作的時間主要消耗在接收數據上;寫操作的時間主要消耗在發送數據上。
Modbus 地址
通常 Modbus 地址由 5 位數字組成,包括起始的數據類型代號,以及后面的偏移地址。Modbus Master 協議庫把標准的 Modbus 地址映射為所謂 Modbus 功能號,讀寫從站的數據。Modbus Master 協議庫支持如下地址:
- 00001 - 09999:數字量輸出( 線圈)
- 10001 - 19999:數字量輸入(觸點)
- 30001 - 39999:輸入數據寄存器(通常為模擬量輸入)
- 40001 - 49999:數據保持寄存器
Modbus Master 協議庫支持的功能
為了支持上述 Modbus 地址的讀寫,Modbus Master 協議庫需要從站支持下列功能:
表 1. 需要從站支持的功能
Modbus 地址 | 讀/寫 | Modbus 從站須支持的功能 |
---|---|---|
00001 - 09999 數字量輸出 |
讀 | 功能 1 |
寫 | 功能 5:寫單輸出點 功能 15:寫多輸出點 |
|
10001 - 19999 數字量輸入 |
讀 | 功能 2 |
寫 | - | |
30001 - 39999 |
讀 | 功能 4 |
寫 | - | |
40001 - 49999 保持寄存器 |
讀 | 功能 3 |
寫 | 功能 6:寫單寄存器單元 功能 16:寫多寄存器單元 |
Modbus 地址和 S7-200 存儲區地址的映射
S7-200 通過 Modbus Master 和 Slave 協議庫通信時,Modbus 地址和 S7-200 內存儲區地址的 映射關系都類似。
Modbus 保持寄存器地址映射舉例:
轉載:
http://c.gongkong.com/phoneversion/paperdetail?paperid=27409
http://www.ad.siemens.com.cn/service/article/wap/S7-200/S7-200modbus/Default.aspx