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