Modbus到底有多快!

前言

大家好!我是付工!

前面寫了一篇關於基於Modbus讀取運動控制卡的文章,發現很多小夥伴對Modbus的實時性比較感興趣,想知道Modbus通信能達到多快的速度。

首先,我們要明確一點,Modbus本身只是一個應用層的協議規約,意思就是Modbus本身是沒有速度一說的,當運行在傳輸層以太網或者串口介質上的時候,纔會存在實時性的說法。

那麼至於Modbus通信速度到底是多少,本文以ModbusTCP爲例,配合西門子200Smart PLC、西門子1200 PLC、西門子1500 PLC、三菱FX5U、臺達DVP-ES3以及正運動的運動控制卡,來做一個通信測試,測試結果僅表示當前環境、當前電腦配置、當前網絡環境下的結果,僅供參考。

測試程序

這裏採用的通信庫是我們自己開發的通信庫xktComm,不同的通信庫測試結果可能有所不同。

首先設計界面如下所示:

 

 

不同設備都使用默認端口502,所以僅僅只是IP地址不同而已,爲了增加數據的準確性,我們使用循環讀取的方式,默認是循環1000次,同時爲了證明實時通信的過程,增加了顯示報文的選擇,可以將實時通信的報文顯示出來。

同時,我們讀取的存儲區也是一樣的,讀取4區從0開始的100個寄存器。

西門子200Smart

西門子200Smart PLC,我們採用的是CPU ST40,大家都知道西門子PLC想要支持ModbusTCP通信,是需要寫一點PLC程序的,如下圖所示:

 

 

測試結果如下:

不顯示報文結果:

 

 

顯示報文結果:

 

 

最後一幀報文的前兩個字節表示序號:0B B8=3000,因爲這是第三次通信。

西門子1200

西門子1200 PLC,我們採用的是CPU 1212 DC/DC/DC,西門子1200 同樣是需要寫一點PLC程序的,如下圖所示:

 

 

測試結果如下:

不顯示報文結果:

 

 

顯示報文結果:

 

 

結果可以看到,1200PLC的ModbusTCP通信比200Smart還要慢,更換1214的PLC測試結果也是一樣的。

測試的通信負載是20%,將通信負載改成50%,再次測試,測試結果如下:

不顯示報文結果:

 

 

顯示報文結果:

 

 

通信負載在一定程度上可以提高通信效率,可以根據實際情況適當提高。

西門子1500

西門子1500 PLC,我們採用的是CPU 1511T-1 PN,西門子1500 同樣是需要寫一點PLC程序的,如下圖所示:

 

 

測試結果如下:

不顯示報文結果:

 

 

顯示報文結果:

 

 

三菱FX5U

三菱FX5U PLC,我們採用的是FX5U-32MT/ES,三菱FX5U PLC是直接支持ModbusTCP的,但是需要做下配置,在以太網配置里加上ModbusTCP連接設備,端口號設置爲502。

 

 

測試結果如下:

不顯示報文結果:

 

 

顯示報文結果:

 

 

臺達DVP

臺達PLC,我們採用的是DVP32-ES3,國產PLC對Modbus協議支持的很好,不需要做任何配置即可實現Modbus通信。

測試結果如下:

不顯示報文結果:

 

 

顯示報文結果:

 

 

图片

正運動運動控制卡

正運動運動控制卡,我們採用的是ECI1408,同樣也不需要任何配置,即可實現Modbus通信。

測試結果如下:

不顯示報文結果:

 

 

图片

測試發現,連接之後的第一個循環會比後續的時間多一些,連續測試的結果,大約在200ms左右。

顯示報文結果:

 

 

图片

測試結果彙總

以不顯示報文的結果來進行彙總,如下表所示:

 

設備1000次平均週期
200Smart 3500ms 3.5ms
1200 PLC 4600ms 4.6ms
1500 PLC 5300ms 5.3ms
FX5U PLC 2000ms 2ms
臺達 PLC 1500ms 1.5ms
正運動 200ms 0.2ms

從測試結果來看,ModbusTCP的通信速率,不同的PLC大約在1.5ms-5ms之間,而正運動運動控制卡可以達到0.2ms,比PLC的通信效率要高10倍以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章