Modbus TCP通訊概述
MODBUS TCP是簡單的、中立廠商的用于管理和控制自動化設備的MODBUS系列通訊協議的派生產品,顯而易見,它覆蓋了使用TCP/IP協議的“Intranet”和“Internet”環境中MODBUS報文的用途。協議的最通用用途是為諸如PLC以及連接其它簡單域總線或I/O 模塊的網關服務的。
MODBUS TCP 使MODBUS_RTU協議運行于以太網,MODBUS TCP使用TCP/IP和以太網在站點間傳送MODBUS報文,MODBUS TCP結合了以太網物理網絡和網絡標準TCP/IP以及以MODBUS作為應用協議標準的數據表示方法。MODBUS TCP通信報文被封裝于以太網TCP/IP數據包中。與傳統的串口方式,MODBUS TCP插入一個標準的MODBUS報文到TCP報文中,不再帶有數據校驗和地址。
通訊所使用的以太網參考模型
Modbus TCP傳輸過程中使用了TCP/IP以太網參考模型的5層:
第一層:物理層,提供設備物理接口,與市售介質/網絡適配器相兼容。
第二層:數據鏈路層,格式化信號到源/目硬件址數據幀。
第三層:網絡層,實現帶有32位IP 地址報文包。
第四層:傳輸層,實現可靠性連接、傳輸、查錯、重發、端口服務、傳輸調度。
第五層:應用層,Modbus協議報文。
Modbus TCP數據幀
Modbus數據在TCP/IP以太網上傳輸,支持Ethernet II和802.3兩種幀格式,Modbus TCP數據幀包含報文頭、功能代碼和數據3部分,MBAP報文頭(Modbus Application Protocol)分4個域,共7個字.
Modbus TCP使用的端口號
(1) PLC作為Modbus服務器時,按缺省協議使用Port 502 通信端口,在Modus客戶端程序中設置任意通信端口,
(2) PLC作為Modbus客戶端時,無須設置本機端口號;如要指定客戶端端口號,為避免與其他通訊協議的沖突一般建議2000開始可以使用。
S7-300/400集成PN口Modbus TCP通訊概述
本文適用于帶有集成 PN 接口的 SIMATIC S7-300、S7-400 CPU 和 IM 151-8 PN/DP CPU 的軟件產品。相關指令允許在帶有集成 PN 接口的 SIMATIC CPU 和支持 Modbus TCP 協議的設備之間進行通信。
根據客戶端——服務器原理進行數據傳輸。傳輸過程中,可以將 SIMATIC S7 用作客戶端,也可以用作服務器。
從TIA Portal V14 SP1開始軟件中增加了Modbus TCP V2.0版本的指令,可用于SIMATIC S7-300、S7-400 CPU 和 IM 151-8 PN/DP CPU與支持ModbusTCP的通信伙伴進行通信.
配置 PN CPU作為Modbus TCP Server與通信伙
伴建立通訊
下面以S7-300單站系統及Modscan32軟件為例,詳細介紹如何將S7-300單站系統通過CPU集成PN口配置為Modbus TCP Server,Modscan32為Client進行Modbus TCP通訊。
創建一個新項目:
然后選擇“添加新設備”——>“控制器”,選擇正確的CPU型號
在“設備視圖”中,選擇CPU以太網口,設置IP 地址.
(1)OB1調用Modbus TCP指令
在項目的OB1組織塊中調用Modbus TCP指令
部分管腳說明:
id:連接ID 必須與參數DB中相關的id 參數相同。
db_param:參數DB的編號,包含此modbus塊實例的連接參數和modbus數據參數。CPU決定該參數的取值范圍。DB 編號 0 為系統保留,不允許使用。
以純文本格式輸入DB編號“DBxy”。
REG_KEY_DB:具有可用于授權的注冊表項的數據塊。
RECV_TIMEOUT:對從耦合伙伴接收數據進行監視。超出監視時間后,將發出錯誤信號并終止連接。最小值為 20 ms。
在“S7 為服務器”模式下將 RECV_TIMEOUT 設置為 < 20 ms,則使用默認值 1.2 s。RECV_TIMEOUT 監視 TCP 流的運行系統。不考慮各個客戶端請求之間的中斷。
CONN_TIMEOUT:監視調用建立或終止所用的時間。如果在組態的監視時間內無法成功建立或終止連接,則會在輸出 STATUS 中顯示相應的錯誤消息。最小值為 100 ms。
在“S7 為服務器”操作模式下,如果將 CONN_TIMEOUT 設置為 < 100 ms,則會使用默認值 5 s。
創建參數數據塊:
以下為部分參數說明(其它參數信息請查看在線幫助):
id:每個PN CPU與通信伙伴之間的連接都需要一個連接ID。如果有多個通信伙伴,則每個邏輯連接會使用不同的連接ID。該連接ID 在參數數據塊中包含的“連接參數塊”中組態。連接ID 唯一地描述CPU與鏈接伙伴之間的連接,取值范圍為1到4095。必須在此處輸入參數塊中的連接ID;該ID 在整個CPU中必須唯一。
connection_type:建立連接的連接類型通過 TCON 指令定義。CPU 決定必須要設置的值。
TCP(兼容模式):B#16#01,針對 CPU 315 或 317 <= FW V2.3 。
TCP:B#16#11,針對 CPU 315 或 317 >= FW V2.4、IM 151-8 PN/DP CPU、CPU314C、CPU319、CPU412、CPU414 和 CPU416。該信息可能因固件不同而有所不同。
active_est:該參數表示連接建立類型,主動或被動。Modbus 客戶端負責建立主動連接而 Modbus 服務器負責建立被動連接。
主動連接的建立:TRUE
被動連接的建立:FALSE
local_device_id:定義所用 PN CPU 的 IE 接口。根據不同的 PN CPU 類型,需要不同的設置。
rem_ staddr_len:指定 rem_staddr 參數的長度,該參數為通信伙伴的 IP 地址。如果要通過未指定的連接進行通信,則不為伙伴指定 IP 地址。
未指定的連接:B#16#0
指定的連接:B#16#4
rem_tsap_id_len:參數 rem_tsap_id 的長度和遠程通信伙伴的端口號。
主動連接的建立:2
被動連接建立:0
rem_ staddr:在此字節數組中輸入遠程通信伙伴的 IP 地址。使用未指定的連接時,不輸入 IP 地址。表示類型取決于 connection_type 參數。示例:IP 地址 192.168.0.1:
rem_tsap_id:使用該參數設置remote端口號。表示類型會因 connection_type 參數不同而有所不同。CPU 決定值范圍。
server_client:S7 是服務器=TRUE;S7 是客戶端=FALSE。
data_areas:S7 存儲器中有八個可以用于映射 MODBUS 地址的數據區。必須至少定義第一個數據區,其余七個數據區可選擇性定義。根據作業類型,將從數據區讀取數據或向其中寫入數據。
任何作業都只能從一個 DB 讀取數據或向一個 DB 寫入數據。訪問寄存器或位于多個 DB 中的位值時,即使編號連續無間隔,也將分為兩個作業。組態時請務必注意。
一個數據塊中可以映射的 Modbus 區(寄存器或位值)數目比一個消息幀可以處理的數目多。
data_type:指定該數據塊中映射的 MODBUS 數據類型。如果在 data_type 中輸入值 16#0,則不使用相應的區域。
db:指定映射 MODBUS 寄存器或下面定義的位值的數據塊。DB 編號 0 為系統保留,不允許使用。
DB 編號:1 到 65535(W#16#0001 到 W#16#FFFF)。start / end:start 指定 DB 的數據字 0 中映射的第一個 Modbus 地址。end 參數定義最后一個 MODBUS 地址。
對于寄存器訪問,帶有最后一個 Modbus 地址輸入的 S7 DB 中的數據字編號如下計算:DBW 編號 = (end – start) * 2 .
對于位訪問,帶有最后一個 Modbus 地址輸入的 S7 DB 中的數據字節編號如下計算:DBB 編號 = (end – start + 7) / 8
定義的數據區不得重疊。end 參數不得小于 start。如果發生錯誤,指令啟動將中止并提示錯誤。如果兩個值相同,則將分配一個 Modbus 地址(1 個寄存器或 1 個位值)。
審核編輯:郭婷
-
以太網
+關注
關注
40文章
5425瀏覽量
171721 -
服務器
+關注
關注
12文章
9160瀏覽量
85421
原文標題:基于S7-300400 CPU集成PN接口的Modbus TCP-W
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論