摘要:如下圖所示,這是Modbus Poll連接好Slave的示意圖,也讀取到了Slave中設置好的寄存器的值,其中Tx=112代表向PLC發送數據幀的次數,Err =0代表通訊錯誤次數,互相連接上之後就不會再出現No connection的紅字。最後通過對Modbus Poll設置好連接PLC的IP、ID以及Function進行設置,最終連接到M340的寄存器區域讀取到數據。

前言

工業控制已從單機控制走向集中監控、集散控制,如今已進入網絡時代,工業控制器連網也爲網絡管理提供了方便。Modbus 就是工業控制器的網絡協議中的一種。在2004年,中國國家標準委員會正式把Modbus作爲了國家標準,開啓了Modbus爲中國工業通信做貢獻的時代。

本文主要研究Modbus Poll/Salve模擬器的使用以及對Schneider(施耐德)PLC M340的連接測試,文中涉及一些測試思路可能存在不嚴謹之處,歡迎大家指正哈

協議介紹

Modbus一種應用層消息傳遞協議,位於OSI模型的第7級,提供在不同類型的總線或網絡上連接的設備之間的客戶端/服務器通信。Modbus傳輸方式包括ASCII、RTU、TCP三種報文類型,協議本身並沒有定義物理層,只是定義了控制器能夠認識和使用的消息結構,通過對數據的校驗來區分。文中均採用Modbus TCP協議來進行通信。

這裏我主要介紹一下文中涉及的概念以及小夥伴們必須知道的Modbus的基礎知識,詳細的概念我就不展開介紹了,大家可以閱讀:

https://www.freebuf.com/articles/ics-articles/148637.html

下表是由Modbus從設備提供給Modbus主設備的對象類型的表:

Object type Access Size Address Space
線圈Coil Read-write 1 bit 00001 – 09999
離散輸入Discrete input Read-only 1 bit 10001 – 19999
輸入寄存器Input register Read-only 16 bits 30001 – 39999
保持寄存器Holding register Read-write 16 bits 40001 – 49999

模擬器介紹

要介紹Modbus的模擬器,就得從它的通信方式開始介紹了。Modbus使用一種簡單的Master and Slave主從協議進行通信。客戶機作爲主站,向服務器發送請求;服務器(從站)接到請求後,對請求進行分析並作出應答。一般使用上,監控系統(HMI)都爲Master,而PLC、電錶、儀表等都爲Slave。

所以,模擬器Modbus Poll就是Master,Modbus Slave就是Slave,和S7系列模擬器的Client和Server是一個道理。

下載鏈接: https://www.modbustools.com/download.html

模擬器連接

接下來就是實際連接啦,首先我們設置好我們虛擬的PLC(Modbus Slave),如下圖所示:

1、 點開上方connection,選擇了連接協議爲Modbus TCP/IP
2、 默認地址爲127.0.0.1無需設置,到時候Modbus Poll就連這個地址,其他的端口爲502和Ipv4默認。
3、 ID默認爲1,是Slave的設備地址,F=03代表03的功能碼
4、 設置好一些供Poll讀取的數據

如下圖所示,這是Modbus Poll連接好Slave的示意圖,也讀取到了Slave中設置好的寄存器的值,其中Tx=112代表向PLC發送數據幀的次數,Err =0代表通訊錯誤次數,互相連接上之後就不會再出現No connection的紅字。

因爲Modbus能訪問一條數據鏈路上的254個設備,Poll也支持讀寫同時來自不同設備的不同數據內容。下圖顯示了兩個打開的窗口,從從站ID 1讀取10個保持寄存器,從從站ID 2讀取10個保持寄存器。

模擬器之間的連接就暫時只講這麼多,其實還有很多功能,例如讀取輸入寄存器和線圈、監控數據流量等,這些在接下來主要講連接Schneider的PLC設備的時候具體說。

Modbus Poll 連接SchneiderM340

和西門子PLC需要編程軟件博途一樣,這次Schneider(施耐德)PLC在上位機部署的編程軟件用的是EcoStruxure Control Expert 來連接M340設備,如下圖所示:

Modicon M340是全球能效管理專家施耐德電氣於2007年推出的高性能中型PLC平臺,擁有“精巧、可靠、創新、易用、高性價比”等諸多新亮點,適用於中小型項目、複雜機械及過程裝備,實驗對象如下圖所示:

首先我們先在編程軟件上查看PLC的IP地址,用於Modbus Poll的連接:

接着我們通過之前的敘述瞭解到模擬器連接Slave(PLC)需要知道設備ID ,這個是連接的關鍵點,雖然大部分都會設置爲1,但是還是需要特地查看一下:

然後我們選擇讀取AI:AnalogInput(模擬輸入,輸入寄存器)中的值,如下圖所示:

最後通過對Modbus Poll設置好連接PLC的IP、ID以及Function進行設置,最終連接到M340的寄存器區域讀取到數據。

總結

由上述可見,雖然Modbus 協議獲得了廣泛的應用,但是在實現具體的工業控制系統時,安全問題在卻很少被注意到。首先,TCP /IP 協議自身存在的安全問題不可避免地會影響到工控網絡安全,例如中間人攻擊,拒絕服務等攻擊手段都會影響到Modbus系統安全,還有Modbus本身缺少身份認證,功能碼濫用等問題都需要注意。這些安全問題都需要通過安全設計、安全審計和入侵防禦等安全措施進一步深入的解決。

本篇文章是對Modbus PLC基礎性的研究,主要關於模擬器的使用以及連接使用PLC的一些基本概念。後續會對Schneider PLC進行更深入的探討,主要關於Modbus專屬的Smod滲透框架研究以及Modbus流量分析等。

*本文作者:黃一113530,轉載請註明來自FreeBuf.COM

相關文章