找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

掃一掃,訪問微社區

搜索
開啟左側

西門子S7-1200 Modbus TCP通信指令塊 MB_CLIENT即Modbus TCP客戶端主站指令塊實例下載

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?立即注冊

x
西門子S7-1200 Modbus TCP通信指令塊 MB_CLIENT即Modbus TCP客戶端主站指令塊實例下載


Modbus TCP客戶端主站指令塊編程實例下載地址

詳細操作說明PDF文檔下載:

西門子S7-1200 Modbus TCP通信指令塊 MB_SERVER即Modbus TCP服務器從站指令塊使用實例http://www.080041.buzz/thread-11439-1-1.html
STEP 7 V13 SP1 軟件版本中的 ModbusTCP 庫指令目前最新的版本已升至V4.0,該版本的使用需要具備以下兩個條件:
1. 軟件版本: STEP 7 V13 SP1及其以上
2. 固件版本: S7-1200 CPU 的固件版本V4.1

圖1.Modbus TCP V4.0 版本指令塊
S7-1200 Modbus TCP 實驗環境
下面以一臺S7-1200與Modsim32之間進行 Modbus TCP 通信為例,詳細闡述客戶端與服務器側如何編程及通信的過程。表格列出了具體的實驗環境:
  
操作系統
  
  
WIN7 SP1 專業版 64位
  
  
編程軟件
  
  
STEP 7 Professional V13 SP1 Update 5
  
  
系統硬件
  
  
1.CPU1215C 6ES7 214-1BG40-0XB0  V4.1
  
表1.Modbus TCP 通信的實驗環境
  
CPU類型
  
  
IP地址
  
  
端口號
  
  
硬件標識符
  
  
客戶端
  
  
CPU 1214C
  
  
192.168.31.12
  
  
0
  
  
64
  
  
服務器
  
  
Modsim32
  
  
192.168.31.228
  
  
502
  
  
64
  
表2.Modbus TCP 通信雙方的基本配置
硬件標識符是在“設備組態”中,雙擊 PROFINET 接口,然后在“屬性”中的“硬件標識符”中查看。

圖2.S7-1200設備的PROFINET接口硬件標識符
S7-1200 Modbus TCP 客戶端編程
S7-1200 客戶端側需要調用MB_CLIENT指令塊,該指令塊主要完成客戶機和服務器的TCP連接、發送命令消息、接收響應以及控制服務器斷開的工作任務。
1. 將MB_CLIENT 指令塊在“ 程序塊 -> OB1 ”中的程序段里調用,調用時會自動生成背景DB ,點擊確定即可。

圖3.Modbus TCP 客戶端側指令塊
該功能塊各個引腳定義如下:
  
REQ
  
  
與服務器之間的通信請求,上升沿有效。
  
  
DISCONNECT
  
  
通過該參數,可以控制與 Modbus TCP服務器建立和終止連接。 0(默認):建立連接;1:斷開連接。
  
  
MB_MODE
  
  
選擇 Modbus 請求模式(讀取、寫入或診斷)。0:讀;1:寫。
  
  
MB_DATA_ADDR
  
  
由“MB_CLIENT”指令所訪問數據的起始地址。
  
  
MB_DATA_LEN
  
  
數據長度: 數據訪問的位或字的個數。
  
  
MB_DATA_PTR
  
  
指向 Modbus 數據寄存器的指針。
  
  
CONNECT
  
  
指向連接描述結構的指針。TCON_IP_v4(S7-1200)
  
  
DONE
  
  
最后一個作業成功完成,立即將輸出參數 DONE 置位為“1”。  
  
  
BUSY
  
  
作業狀態位:0:無正在處理的“MB_CLIENT”作業;1:“MB_CLIENT”作業正在處理。
  
  
ERROR
  
  
錯誤位:0:無錯誤;1:出現錯誤,錯誤原因查看STATUS。
  
  
STATUS
  
  
指令的詳細狀態信息。
  
表4.MB_CLIENT 各引腳定義說明
2. CONNECT 引腳的指針類型
第一步,先創建一個新的全局數據塊 DB2:

圖4.創建全局數據塊
第二步,雙擊打開新生成的DB塊,定義變量名稱為“aa",數據類型為“TCON_IP_v4”(可以將 TCON_IP_v4 拷貝到該對話框中),然后點擊“回車”按鍵。該數據類型結構創建完畢。如圖5所示:

圖5.創建 MB_CLIENT 中的TCP連接結構的數據類型
各個引腳定義說明如下:
  
InterfaceId
  
  
硬件標識符。
  
  
ID
  
  
連接ID,取值范圍1~4095
  
  
Connection Type
  
  
連接類型。TCP連接默認為:16#0B
  
  
ActiveEstablished
  
  
建立連接。主動為1(客戶端),被動為0(服務器)。
  
  
ADDR
  
  
服務器側的IP地址
  
  
RemotePort
  
  
遠程端口號
  
  
LocalPort
  
  
本地端口號
  
表4.TCON_IP_v4 數據結構的引腳定義
本文遠程服務器的IP地址為192.168.31.228,遠程端口號設為502。所以客戶端側該數據結構的各項值為:

圖6.MB_CLIENT 側 CONNECT 引腳數據定義
注意: CONNECT引腳的填寫需要用符號尋址的方式。
3. 創建 MB_DATA_PTR 數據緩沖區
第一步,創建一個全局數據塊 DB3,創建方法可以參考上面的圖3,數據塊的名稱如圖7所示:

圖7.生成的兩個DB塊名稱
第二步,建議一個數組的數據類型,以便通信中存放數據,請參考圖8所示:

圖8.MB_DATA_PTR 數據緩沖區結構
注意: MB_DATA_PTR指定的數據緩沖區可以為DB塊或M存儲區地址中。DB塊可以為優化的數據塊,也可以為標準的數據塊結構。若為優化的數據塊結構,編程時需要以符號尋址的方式填寫該引腳;若為標準的數據塊結構(可以右鍵單擊DB塊,“屬性”中將“優化的塊訪問”前面的勾去掉,如下圖9所示),需要以絕對地址的方式填寫該引腳。本文以標準的數據塊(默認)為例進行編程。

圖9.修改 DB 塊屬性為標準的塊結構
4. 客戶端側完成指令塊編程
調用 MB_CLIENT 指令塊,實現從 Modbus TCP 通信服務器中讀取10個保持寄存器的值,如圖10所示:

圖10.MB_CLIENT 指令塊編程
5. 將整個項目下載到S7-1200
待ModbusTCP 服務器側準備就緒,給MB_CLIENT指令塊的REQ引腳一個上升沿,將讀取到的數據放入 MB_DATA_PTR引腳指定的DB 塊中。具體的實驗結果可以查看S7-1200 服務器側編程。
下載完之后開啟監控,將M10.0置1則,該指令會一直執行讀取40001開始的10個數據,如果該位用的是上升沿,則執行一次該指令。
Modsim32配置時選擇Modbus/tcp SVR,
通信之后的數據監控如下
常見問題
MB_CLIENT 指令的背景數據塊中的 "MB_Unit_ID" 有什么功能?
S7-1200 CPU 作為 Modbus TCP 客戶端與 Modbus TCP 服務器通信,當嘗試訪問比 Modbus TCP 服務器更低端的串行子網中的設備,會有報錯 "無法建立連接"。
這種情況下, Modbus TCP 服務器作為 Modbus RTU 協議中的網關,"MB_Unit_ID" 參數相當于 Modbus RTU 協議中的從站地址。
Modbus TCP 客戶端直接向 Modbus TCP 服務器發送請求,Modbus TCP 服務器通過識別 "MB_UNIT_ID" 參數,將請求轉發到從站設備。
在S7-1200 項目中,選擇系統塊,雙擊打開 MB_CLIENT 指令的背景數據塊“MB_CLIENT_DB”, 在靜態變量Static下可以找到 MB_Unit_ID (默認起始值16#FF,等于十進制 255)。如下圖 11 所示:

圖11. MB_Unit_ID
例如,當 S7-1200 做客戶端與電腦上的 Modbus TCP 調試軟件 Modsim 通信時,會遇到如上“無法建立連接”的問題。
這時,修改調試軟件 Modsim 中Device Id 為255,使之等于 MB_Unit_ID 的值,即可建立聯系。如下圖 12 所示:

圖12. Device Id
注意:如果 Modbus TCP 服務器無法更改 DeviceId 的值, 則修改S7-1200 項目中MB_Unit_ID數值, 使雙方的參數一致。
更多關于 MB_Unit_ID 功能的說明,請參考以下鏈接:
Modbus 塊 "MB_CLIENT" 的背景數據塊中的 "MB_UNIT_ID" 有什么功能?
描述 在 Modbus TCP 通信實例中,Modbus  塊 'MB_CLIENT' 的背景數據塊中的 'MB_UNIT_ID' 并不是很重要,因為通過 IP 地址就可以尋址到 Modbus TCP 服務器。該參數有默認值 'MB_CLIENT' 0xFF。 ......
描述在 Modbus TCP 通信實例中,Modbus  塊"MB_CLIENT" 的背景數據塊中的"MB_UNIT_ID" 并不是很重要,因為通過 IP 地址就可以尋址到 Modbus TCP 服務器。該參數有默認值"MB_CLIENT" 0xFF。

圖 01
如果 S7-1500 作為 Modbus TCP 客戶端與 Modbus TCP 服務器通信,并且嘗試訪問比 Modbus TCP 服務器更低端的串行子網中的設備,那么在此情形下會有報錯 "無法建立連接"。這種情況下,就要使用"MB_CLIENT" 參數了。"MB_UNIT_ID"參數相當于 Modbus RTU 協議中的從站地址。如果將 Modbus TCP 服務器當做 Modbus RTU 協議中的網關,那么從站設備可以通過 "MB_UNIT_ID"參數來識別。Modbus TCP 客戶端直接向Modbus TCP 服務器發送請求,而Modbus TCP 服務器通過"MB_UNIT_ID" 參數將請求轉發到從站設備。

圖 02
注意事項一些 Modbus TCP 設備在某些范圍內進行初始化是需要使用"MB_UNIT_ID" 參數。






江西自動化網|江西工控論壇感謝您的訪問
分享到:  QQ好友和群QQ好友和群 微信微信
收藏1
轉播
分享
淘帖0
支持1
反對0
明天會是怎么樣的一天呢》?期待中......

大神點評105

跳轉到指定樓層
樓主能搞一個文檔讓我們直接下載的嗎?
地板
klll 2017-2-6 09:10:05 只看該作者
12431251232131
角落
whyslc 2017-2-19 09:46:27 只看該作者
感謝分享,很好的例子
6#
zengsg18 2017-2-19 20:56:12 只看該作者
i dont know this is useful for me ,but i want download it also
7#
Ellmia 2017-2-24 14:51:46 只看該作者

RE: 西門子S7-1200

雪中送炭,謝謝
8#
hwhunter1 2017-3-7 15:01:06 只看該作者
正在學習一直連上不,下來學學
9#
tianbianyun 2017-3-9 16:17:40 只看該作者
好東西。要備份一個呀。謝謝謝
10#
hw958 2017-3-27 16:21:04 只看該作者
你好,請給予下載的權限。
喜乐福彩 世界三大赌城都是哪? 上海快三预测和值号码 股票分析师黄鑫老师 河北快三100期走势图 2007股票分析软件 重庆时时彩官网 福彩湖北快3走势 佳永配资_股票配资平台_10倍杠杆配资 北京pk10注册 江苏快3和值走势图 君安股票融资比例 云南快乐十分走势图一走牛 河南泳坛夺金遗漏统计 国际股票指数期货 河南11选5开奖结果 体彩开奖现场直播