#從今天起記錄我的2023##挑戰30天在頭條寫日記#
今天是記錄學習工控知識的第37天,繼續分享“1200PLC Modbus TCP通信”知識。
一.MODBUS RTU與MODBUS TCP的比較:
1.通信接口不同:
MODBUS RTU采用DB-9針的序列槽,而MODBUS TCP采用RJ45的以太網口;簡單來說就是一個是序列槽,一個是網口。
2.消息幀不同:(參見圖一)
3.通信方式不同:
MODBUS RTU 為以主站多從站結構
MODBUS TCP 為伺服器、用戶端結構
二."TCON_IP_V4"系統資料結構:
1.MODBUS TCP有MB_CLIENT(用戶端)、MB_SERVER(服務端)2個指令,對于指令的調用和管腳代表的含義就不做贅述,不懂的要多按"F1",懂得都懂啊,PS我也是跟大神們學的。
2.硬體辨別符:在PROFINET"屬性的“系統常數”中可以查到。
3.在調用建立一個DB塊,在該DB塊中建立一個名稱為“connect”的變量,資料類型為“TCON_IP_V4”;見圖2 、4所示
InterfaceId:硬體辨別符→64
ConnectionType:TCP→16#0B,ISO_ON_TCP→16#0C UDP→16#13
三.MB_CLIENT(用戶端)指令背景資料塊說明:
1.在MODBUS TCP通信程式設計時,經常會使用到MB_CLIENT指令背景資料塊中的兩個變量,位于背景資料塊的靜态變量中:見圖6所示
MB_Unit_ID:表示MODBUS TCP資訊幀的MBPA報頭中的單元辨別符,該單元辨別符相對于串行通信中的從站位址。
Connected:用于訓示MODBUS TCP的連接配接狀态,設計程式時可通過對該位的判斷來實作是否激活指令上的REQ管腳。(見圖7所示)
四.MB_SERVER(服務端)指令淺析:
1.MB_HOLD_REG:用于指定保持性存儲器的位址
2.NDR: 0表示無新資料,1表示從用戶端寫入了新資料
3.DR: 0表示無資料讀取,1表示有資料被用戶端讀取
4.當作為多個用戶端的伺服器時,MB_SERVER的指令需要調用多次,而且需要使用不同的背景DB和連接配接ID.
對于PLC的通訊大家有什麼好的學習方法嗎?歡迎大家留言讨論!