<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 記一次Profibus DP轉MODBUS的實例

          記一次Profibus DP轉MODBUS的實例

          作者: 時間:2016-12-19 來源:網絡 收藏
          發(fā)個故事也是一波三折,剛都快寫完了,360瀏覽器崩潰,寫的東西全沒了,無奈,只能重新來過。
          12年自動化專業(yè)畢業(yè)后,留在了一個鋼廠工作,首先接觸的便是西門子的PLC,接觸的協議自然也是profibus DP、MPI、PPI、TCP/IP等與西門子相關的協議,對于MODBUS,僅僅停留在聽說過,好像很厲害的層面上,一次偶然的機會,接觸到了MODBUS協議,項目是300PLC通過PB-B-MODBUS總線橋(北京鼎實)與MODBUS從站通訊,PLC選擇的是西門子CPU313-2DP,從站設備是一臺加氣機,主站CPU需要讀取加氣機的狀態(tài)字及流量溫度壓力等數據,同時需要給控制字給加氣機。由于之前沒有接觸過MODBUS協議及產品,再通讀了網上的協議及PB-B-MODBUS總線橋的產品介紹之后便開始了測試。
          1.首先,毫無疑問,需要進行硬件組態(tài)的配置:在安裝完總線橋的GSD文件后,很輕松完成了組態(tài);


          2.然后我們要明白我們的目的,讀寫數據,數據存儲在什么地方?怎么讀取和寫入?硬件組態(tài)方面還需要怎么進一步組態(tài)?讀取完數據之后怎么處理?

          本文引用地址:http://www.ex-cimer.com/article/201612/331398.htm

          上圖顯示的是加氣機設備MODBUS協議的一小部分,以LNG出口溫度為例,對每個數據進行解釋,0x0035、0x0036指的是寄存器號,2指的是寄存器數目,int 32指的是數據類型,0.001指的是單位,R指的是只讀,綜合上述,我們知道了LNG出口溫度這個數據存儲在40000+53(16進制35轉換)-1=40052開始的兩個字中,PLC讀取數據之后需要除以1000以得到正確數值
          接下來需要對硬件組態(tài)進行進一步組態(tài),雙擊總線橋,添加一個read 2 words模塊,并設置好起始地址及其他必要設置,組態(tài)完成后如下圖


          從上圖中我們便可以看出,將起始地址設置為52,PLC的I地址設置為256-259,便將MODBUS寄存器40052開始的兩個字與PLC的PID256對應了起來,第一行的8DI的I地址為2,意味著IB2是總線橋的狀態(tài)位,QB2是總線橋的控制位:具體含義見下圖


          這樣,我們程序中給定一個啟動MODBUS掃描信號,便可以讀到LNG出口溫度的數據了,讀取的數據存儲在PID256中,對PID256進行除以1000操作,便可以得到實際出口溫度,同時,控制字狀態(tài)字及其他溫度壓力等數據都可以通過這樣的添加模塊方式來進行讀寫。
          通過這個項目,我對MODBUS協議有了一定的了解,我覺得關鍵在于組態(tài)和地址映射,測試時候可以使用MODBUS SIM和MODBUS SCAN軟件進行測試,MODBUS Poll和MODBUS Slave也是可以的,使用軟件測試完成后,有事半功倍的效果。并且在這次測試完成后,我又完成了S7-200與S7-200 SMART的MODBUS通訊測試,還有使用CP343-1通過第三方連接MODBUS設備的測試,,發(fā)現再神秘的東西,只要我們用心去了解它,去剖析它,問題都是變得簡單,好事多磨,知識也是這樣,它也害怕多磨!



          關鍵詞: ProfibusDPMODBU

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();