作為工控狗的我,在看到 CEIWEI最近釋出了Modbus RTU Over TCP/UDP 過濾監控的新工具後,就積極的跑去他的
官網
看了一下,原來是Modbus協議TCP/UDP抓包工具,要知道他的CommMonitor串列埠精靈也有此功能,簡直是我們工控狗的福音,因為免費版本也是可以永久使用。
下面以Modbus RTU TCP為示例,講解如何抓取Modbus TCP/UDP通訊資料包,因為CEIWEI ModbusMonitor 是完全解析了的Modbus協議,監控結果即所得的,就不用自己在再TCP/UDP封包的基礎上二次分析了。
下載安裝CEIWEI ModbusMonitor過濾監控工具
,
http://www。ceiwei。com/down/CEIWEI_ModbusMonitor_20223。zip
安裝完成後,執行如下圖,和CommMonitor串列埠監控精靈一樣,ModbusMonitor的[+]增加了一行文字[新建監控],
新建監控會話
1、開啟監控
,點選[新建監控],彈出如下圖對話方塊:
2、網路監控屬性:
其實他不但可以監控Modbus協議,還可以監控任意TCP/UDP資料包,這裡我們只關心Modbus,預設埠即502,因為是主站
模式,所以從站是伺服器,那麼只選擇
[遠端埠]
為:502即可,如果你的從站伺服器不是502,請選擇正確對應的埠。
3、各個資料檢視:
a、列表檢視是指把資料顯示為表格的形式;
b、Dump檢視,資料包會以200ms時間內合併資料包;
c、Line檢視,資料包是以API的形式加以說明;
d、終端檢視,是以ASCII字串的形式輸出來Memo中,對於不可顯示的字元以?顯示;
e、Modbus檢視,這個是我們最重要的,必須選擇,因勾選了此檢視,才可以分析Modbus資料包,否是不會顯示的;
在勾選了Modbus檢視後,Modbus模式可以選擇了:
1、當選擇
Modbus RTU TCP/UDP
模式,表示裝置通訊資料包是加了TCP6個位元組頭的RTU資料,沒有CRC校驗值;
2、當選擇
Modbus RTU Over TCP/UDP
模式,表示裝置通訊是直接RTU資料格式傳送,是沒有TCP 6個位元組頭的,
並且RTU是有CRC校驗值的,和串列埠RTU模式一樣;
3、當選擇
Modbus ASCII Over TCP/UDP
模式,表示裝置通訊是TCP/UDP模式,直接ASCII資料格式傳送的,沒有TCP頭,和串列埠ASCII模式一樣。
[Modbus主站模式]
:因為我們的電腦是主站Modbus Poll端,這裡要勾上,如果是從站的話,正好相反,不勾,並且是要選
[本地埠]:
502;
開啟Modbus Poll連線裝置端,測試讀取暫存器:
1、新建連線,選擇Modubs TCP/IP,預設資料模式是加了6個位元組頭的TCP RTU,是不可更改。
#FormatImgID_7#
2、Setup-> Read/Write Definition設定讀寫引數:這裡我們選擇 03 保持暫存器,同樣從站也是同樣設定;
#FormatImgID_8#
3、連線成功後,如下圖,資料顯示OK。
檢視監控資料包
1、Modbus 檢視資料包:
#FormatImgID_10#
如下圖,Modbus資料包成功抓取到了,並且他已經給我們分解了TCP/UDP封包,直觀的展出Modbus資料包資訊:
儲存當前監控會話
監控到的資料,我們可以儲存成會話,如下圖,在下次要使用時,可以開啟。如果Modbus裝置已打開了,會話是可以直接以之
前監控的條件啟動監控,繼續監控Modbus的通訊資料包。
#FormatImgID_12#
匯出資料包到文字檔案
在檢視上我們右鍵選單,如下圖,儲存成文字檔案,
#FormatImgID_13#
原始TCP資料包
如下圖:原始資料包是包含了TCP6個位元組頭的,RTU資料段是沒有CRC值結尾;
#FormatImgID_15#
總結:
注意個問題,要先打監控會話,再開啟 被監控軟體Mbpoll.exe 然後RTU TCP連線遠端裝置;
然後
因為已經通訊了的連線,監控是後開的,是監控不到的,也就是說核心驅動還沒有開啟監控,舊連線是無法被監控得的;
引用:
http://www。ceiwei。com/?qt=modbusmonitor&btn=12
轉載:
https://www。cnblogs。com/iot2032/p/16030902。html