Java通過socket和DTU,RTU連接工業傳感器通信


現在做DTU傳感器監測數據一塊,給大家分享如何通過socket技術連接到DTU,並能和DTU下面的傳感器通信的,分享一下自己的心得和體會。

 

總體架構圖


先來看下整體網絡結構圖。

 

 

工業名稱解釋


傳感器:能夠采集數據機器,電腦端通過下發指令通過DTU發給傳感器,傳感器通過DTU返回相應的數據給電腦端,比如雨量計能實時反饋雨量,這很好理解。

RTU:遠程傳輸單元,可以是一台plc(程序過程控制),通俗理解就是能夠編程的還可以將數據傳輸服務器的工具。RTU內部是包含通訊模塊的,RTU儀表配置服務器后,他可以通過socket將采集器的數據轉發到服務器。咦?你剛才不講說的DTU嗎?現在怎么是DTU了,接下來我們看看。

DTU:數據傳輸單元,他主要的功能是能將IP數據和串口數據進行等價轉化。對比上面RTU的功能,如果說RTU能進行數據處理和數據傳輸,那么DTU就只能進行數據傳輸了。像DTU因為沒有任何的數據處理動作,所以一般業界叫“透傳”即透明傳輸。所以RTU的價格一般比DTU貴很多,因為有軟件編程的成本。

RS485:RS485是一個物理接口,DTU和傳感器就是通過RS485接口進行連接的。

Modbus協議:標准的串行工業協議。可以支持RS485,RS232接口。那既然是協議,就需要遵循一定的規范,舉個簡單的例子,讀取雨量計的命令是16進制的0E04000000027134

那么0E 04 00 00 00 02 71 34 分別對應的該傳感器的通信id,功能碼等。如下圖,這是一串指令,能夠讀取雨量的具體數據。

網絡DTU可以配置服務器,通過socket技術通信。

服務器:服務器解析數據並存入數據庫。

當然,雨量傳感器也能返回一串標准16進制數據DTU,0E0404326640BCDA52,具體解析格式如下,如果返回正確我們需要讀取5,6字節進行解析。

這個是我任意舉的一個案例,是為了更好說明Modbus協議只要支持能modbus的傳感器都類似,需要我們對照具體的傳感器通訊協議文檔進行轉化解析,一般都會有說明。

 

思路整理


樓主在剛開始接到任務不理解這些工業,接口,協議的概念,走了一些彎路。因為我們項目是需要從RTU換成DTU做數據采集的,已有項目RTU是能夠主動推送數據到服務器的,當時比較困惑有幾個點,順便整理下思路。

  1. DTU能夠主動推送數據給你嗎?如果不能,我需要如何做?

不能,DTU既然是透傳的,說明我們需要通過DTU給傳感器下發指令。‘

  1. 發什么指令?

這里的指令就是modbus指令,上面有類似指令說明,指令需要到相應的傳感器通信協議去獲取,一般都有說明,如果是新手,就找傳感器廠家支持下,順便說一句,他們都是搞硬件的,軟件他們可能也不太清楚,這個時候就需要你的正確方向的判斷了。

  1. 如何下發指令?如何調試下發指令正確性?

我因為當時是新手,我只懂程序,調試都是通過自己寫的程序調試的,一直執行程序沒有調試出來,最終才知道usb連接串口轉485工具再直接連接傳感器,通過串口工具就可以直接發送命令,返回對應的數據,一目了然,串口工具我用的是sscom。這個問題給我的感觸很深,可以先不寫代碼,直接先在工具上分析結果。我主要用的是下面這三個工具。

  1. 如何打通socket和DTU連接的傳感器?

最后一步就比較簡單了,通過socket,拿到二進制數據后直接轉16進制進行解析得到結果,我貼部分代碼。

 

結尾


好的,今天就到這里,希望這邊文章能對您有所幫助,有不懂的地方可以給博主留言哦,分享讓我們共同成長,喜歡的請點贊加關注哦。點關注,不迷路,我是叫練公眾號,微信號【jiaolian123abc】邊叫邊練。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM