新聞中心

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

記一次Profibus DP轉(zhuǎn)MODBUS的實例

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


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

本文引用地址:http://butianyuan.cn/article/201612/331398.htm

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


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


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



關(guān)鍵詞: ProfibusDPMODBU

評論


技術(shù)專區(qū)

關(guān)閉