記一次Profibus DP轉(zhuǎn)MODBUS的實(shí)例
12年自動(dòng)化專業(yè)畢業(yè)后,留在了一個(gè)鋼廠工作,首先接觸的便是西門子的PLC,接觸的協(xié)議自然也是profibus DP、MPI、PPI、TCP/IP等與西門子相關(guān)的協(xié)議,對(duì)于MODBUS,僅僅停留在聽說(shuō)過(guò),好像很厲害的層面上,一次偶然的機(jī)會(huì),接觸到了MODBUS協(xié)議,項(xiàng)目是300PLC通過(guò)PB-B-MODBUS總線橋(北京鼎實(shí))與MODBUS從站通訊,PLC選擇的是西門子CPU313-2DP,從站設(shè)備是一臺(tái)加氣機(jī),主站CPU需要讀取加氣機(jī)的狀態(tài)字及流量溫度壓力等數(shù)據(jù),同時(shí)需要給控制字給加氣機(jī)。由于之前沒(méi)有接觸過(guò)MODBUS協(xié)議及產(chǎn)品,再通讀了網(wǎng)上的協(xié)議及PB-B-MODBUS總線橋的產(chǎn)品介紹之后便開始了測(cè)試。
1.首先,毫無(wú)疑問(wèn),需要進(jìn)行硬件組態(tài)的配置:在安裝完總線橋的GSD文件后,很輕松完成了組態(tài);
2.然后我們要明白我們的目的,讀寫數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在什么地方?怎么讀取和寫入?硬件組態(tài)方面還需要怎么進(jìn)一步組態(tài)?讀取完數(shù)據(jù)之后怎么處理?
上圖顯示的是加氣機(jī)設(shè)備MODBUS協(xié)議的一小部分,以LNG出口溫度為例,對(duì)每個(gè)數(shù)據(jù)進(jìn)行解釋,0x0035、0x0036指的是寄存器號(hào),2指的是寄存器數(shù)目,int 32指的是數(shù)據(jù)類型,0.001指的是單位,R指的是只讀,綜合上述,我們知道了LNG出口溫度這個(gè)數(shù)據(jù)存儲(chǔ)在40000+53(16進(jìn)制35轉(zhuǎn)換)-1=40052開始的兩個(gè)字中,PLC讀取數(shù)據(jù)之后需要除以1000以得到正確數(shù)值
接下來(lái)需要對(duì)硬件組態(tài)進(jìn)行進(jìn)一步組態(tài),雙擊總線橋,添加一個(gè)read 2 words模塊,并設(shè)置好起始地址及其他必要設(shè)置,組態(tài)完成后如下圖
從上圖中我們便可以看出,將起始地址設(shè)置為52,PLC的I地址設(shè)置為256-259,便將MODBUS寄存器40052開始的兩個(gè)字與PLC的PID256對(duì)應(yīng)了起來(lái),第一行的8DI的I地址為2,意味著IB2是總線橋的狀態(tài)位,QB2是總線橋的控制位:具體含義見(jiàn)下圖
這樣,我們程序中給定一個(gè)啟動(dòng)MODBUS掃描信號(hào),便可以讀到LNG出口溫度的數(shù)據(jù)了,讀取的數(shù)據(jù)存儲(chǔ)在PID256中,對(duì)PID256進(jìn)行除以1000操作,便可以得到實(shí)際出口溫度,同時(shí),控制字狀態(tài)字及其他溫度壓力等數(shù)據(jù)都可以通過(guò)這樣的添加模塊方式來(lái)進(jìn)行讀寫。
通過(guò)這個(gè)項(xiàng)目,我對(duì)MODBUS協(xié)議有了一定的了解,我覺(jué)得關(guān)鍵在于組態(tài)和地址映射,測(cè)試時(shí)候可以使用MODBUS SIM和MODBUS SCAN軟件進(jìn)行測(cè)試,MODBUS Poll和MODBUS Slave也是可以的,使用軟件測(cè)試完成后,有事半功倍的效果。并且在這次測(cè)試完成后,我又完成了S7-200與S7-200 SMART的MODBUS通訊測(cè)試,還有使用CP343-1通過(guò)第三方連接MODBUS設(shè)備的測(cè)試,,發(fā)現(xiàn)再神秘的東西,只要我們用心去了解它,去剖析它,問(wèn)題都是變得簡(jiǎn)單,好事多磨,知識(shí)也是這樣,它也害怕多磨!
評(píng)論