組態王是北京亞控科技的一款SCADA產品,是一款國內知名度很不錯的產品。這里不談產品本身,而是談談在組態王中,通過modbus的方式與PLC或者第三方設備通訊時,如果浮點數需要對其存儲器進行字或者字節交換的問題。
做過PLC項目或者是DCS項目,也或者是搞系統維護等的自動化工控人都知道,PLC系統與現場設備或者是第三方PLC系統通過modbus進行數據交換,在進行數據交換時,特別是浮點數可能數據不能直接對上,需要對地址進行字節或者是字進行交換,兩個數據才能完全吻合。下面我來講講組態王是如何實現的。
一、實驗工具
SCADA:組態王6.55版本
PLC或者第三方:用modsim來模擬
二、實現步驟
1、啟動modsin模擬器,通過modbus tcp的方式連接,IP地址:127.0.0.1,端口號:502,設備地址:1,寄存器地址:40001,40002,40003,40004,40005,40006,如下圖所示:
圖1 modsim仿真頁面
2、啟動組態王管理器,并打開測試的項目,如圖所示
圖2 組態工程瀏覽器窗口
3、配置設備通訊接口,本文采用莫迪康的MODBUS TCP方式。在工程瀏覽器窗口左側的設備---板卡---雙擊新建---PLC---莫迪康----modbus TCP---下一步。如下圖所示
圖3 通訊接口配置1
在上圖中下一步之后,填上邏輯名稱,然后下一步,然后接著選擇連接的串口號,這里的串口,必須選擇一個沒有使用的串口號,如COM15,然后下一步進入下一個配置窗口,如圖所示
圖4 通訊接口配置2
在上圖點擊下一步后,進入設備地址填寫界面,地址為:127.0.0.1:502 1/10,地址組成為:設備IP地址+:+端口號+空格+設備地址+/+超時時間。如圖所示
圖5 通訊接口配置3
上圖單擊下一步,直至完成。這樣新建的設備就創建完成,如圖所示
圖6 通訊接口配置4
4、組態王中,浮點數需要寄存器做字或者字節交換以及寄存器說明,如圖所示
圖6 浮點數交換的官方說明1
圖7 浮點數交換的官方說明2
圖8 浮點數交換的官方說明3
5、建點三個I/O實型點,每個點占用2個字的modbus地址,如圖所示
圖9 變量建立說明1
圖10 新建的三個變量
6、本步驟比較重要,要充分理解組態王地址交換,這里需要建一個I/O整型的變量,寄存器選擇:連接設備:選擇組態王連接的設備,寄存器選擇:SwapF0,記住這里是SwapF0,不是SwapF,數據類型選擇:BYTE,讀寫屬性選擇:讀寫,如圖
圖11 新建的SWAPF測試變量窗口
說明:如果在通訊時從1地址讀取的四個十六進制值為 HV1,HV2, HV3, HV4則:
當SWAP測試變量 = 0時,轉換后浮點數對應的內存值為: HV4 HV3 HV2 HV1。
當SWAP測試變量 = 1時,轉換后浮點數對應的內存值為: HV3 HV4 HV1 HV2。
當SWAP測試變量 = 2時,轉換后浮點數對應的內存值為: HV1 HV2 HV3 HV4。
當SWAP測試變量 = 3時,轉換后浮點數對應的內存值為: HV2 HV1 HV4 HV3。
7、新建一個測試畫面,并在畫面中建立三個變量的顯示,如圖所示
圖12 畫面動態連接圖
8、新建一個SWAP測試變量的動態顯示以及值得切換按鈕,如圖所示
圖13 SWPF測試變量的動態連接
9、運行畫面,并通過切換SWAPF測試變量的值,查看變量的數據變化。如下圖所示:
圖14 Modsim寄存器的當前值
圖15 SWAP測試變量值不同,組態王動態顯示值對比圖