新聞中心

        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://www.104case.com/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)閉
        主站蜘蛛池模板: 井陉县| 壶关县| 昭觉县| 邵阳县| 博客| 陈巴尔虎旗| 台南市| 肥东县| 乌兰浩特市| 长春市| 长子县| 长顺县| 龙泉市| 灵宝市| 玉屏| 井冈山市| 海兴县| 富宁县| 多伦县| 瓮安县| 大洼县| 内江市| 巩留县| 舟山市| 邵阳市| 囊谦县| 额济纳旗| 罗源县| 泸州市| 瑞丽市| 合水县| 泾阳县| 乌鲁木齐县| 鄂伦春自治旗| 青神县| 宜丰县| 潜山县| 翁牛特旗| 寻甸| 那曲县| 永修县|