發個故事也是一波三折,剛都快寫完了,360瀏覽器崩潰,寫的東西全沒了,無奈,只能重新來過。
2.然後我們要明白我們的目的,讀寫數據,數據存儲在什麼地方?怎麼讀取和寫入?硬體組態方面還需要怎麼進一步組態?讀取完數據之後怎麼處理?
上圖顯示的是加氣機設備MODBUS協議的一小部分,以LNG出口溫度為例,對每個數據進行解釋,0x0035、0x0036指的是寄存器號,2指的是寄存器數目,int 32指的是數據類型,0.001指的是單位,R指的是只讀,綜合上述,我們知道了LNG出口溫度這個數據存儲在40000+53(16進位35轉換)-1=40052開始的兩個字中,PLC讀取數據之後需要除以1000以得到正確數值
接下來需要對硬體組態進行進一步組態,雙擊總線橋,添加一個read 2 words模塊,並設置好起始地址及其他必要設置,組態完成後如下圖
從上圖中我們便可以看出,將起始地址設置為52,PLC的I地址設置為256-259,便將MODBUS寄存器40052開始的兩個字與PLC的PID256對應了起來,第一行的8DI的I地址為2,意味著IB2是總線橋的狀態位,QB2是總線橋的控制位:具體含義見下圖
這樣,我們程序中給定一個啟動MODBUS掃描信號,便可以讀到LNG出口溫度的數據了,讀取的數據存儲在PID256中,對PID256進行除以1000操作,便可以得到實際出口溫度,同時,控制字狀態字及其他溫度壓力等數據都可以通過這樣的添加模塊方式來進行讀寫。
通過這個項目,我對MODBUS協議有了一定的了解,我覺得關鍵在於組態和地址映射,測試時候可以使用MODBUS SIM和MODBUS SCAN軟體進行測試,MODBUS Poll和MODBUS Slave也是可以的,使用軟體測試完成後,有事半功倍的效果。並且在這次測試完成後,我又完成了S7-200與S7-200 SMART的MODBUS通訊測試,還有使用CP343-1通過第三方連接MODBUS設備的測試,,發現再神秘的東西,只要我們用心去了解它,去剖析它,問題都是變得簡單,好事多磨,知識也是這樣,它也害怕多磨!