天天看點

組态王中Modbus位元組順序的調整

組态王通過modbus協定讀取裝置的浮點數和Long型的整數,有時候會出現數值很大,或者為0,還有字元串顯示不對的情況,這時候就需要做位元組順序轉換。本文重點介紹三種調整Modbus位元組順序的方法。

1.建Swap寄存器

利用給寄存器swapF0等特殊寄存器指派來改變讀取資料的高低位元組排序,以浮點型資料為例,在資料詞典中定義swapF變量,通道号為0,資料類型BYTE,隻寫,采集頻率為0,如圖1所示。

組态王中Modbus位元組順序的調整

然後将swapF0在畫面上輸出,對其依次指派0、1、2、3,觀察浮點型變量的值,直到浮點型資料的值顯示正确,記錄swapF0最終的值。具體過程如圖2、圖3、如圖4所示。

組态王中Modbus位元組順序的調整
組态王中Modbus位元組順序的調整

由圖4可見,當 swapF0等于1時,浮點數顯示正常,然後在應用程式指令語言的啟動時把swapF0的指派腳本寫上,即swapF0=1,如圖5所示。

組态王中Modbus位元組順序的調整

需要注意的是,swapF0在資料詞典中定義的初始值與最終調試所賦予的值不能一樣,比如本例中swapF0=1,那麼swapF0變量的初始值就不能為1,可以設為其他值,在程式啟動時,swapF0的值需要有一個變化的過程。按照這種方法,同樣可以調整字元串型、長整型、CRC校驗、長BCD型位元組順序,其變量定義的如圖6所示。

組态王中Modbus位元組順序的調整

2.修改安裝路徑-Driver檔案夾中modbusmaster.ini檔案

打開組态王的安裝路徑,找到modbusmaster.ini檔案,如圖7所示。

組态王中Modbus位元組順序的調整

在文檔的最下方,找到[Swap],通過對long、float、longbcd、string指派,就可以改變其對應的位元組順序,如圖8所示。

組态王中Modbus位元組順序的調整

注:此種方式修改會影響工程中所有的modbus裝置,建議工程中隻有一個modbus裝置時使用。

3.裝置位址後邊加上Swap功能設定

定義裝置時,在裝置位址處設定該裝置中某種資料類型的位元組排列順序。

序列槽連接配接方式(Rtu和ASCII):

Address[:Delay: BeforeDelay][|SwapF|SwapL|SwapC]

TCP連接配接方式:

IP[:Port] Address[/TimeOut] [|SwapF|SwapL|SwapC]

Address 0-255 裝置位址

Delay 0-60000 發送每條指令幀後的延遲時間(毫秒)

BeforeDelay 0-60000 發送每條指令幀前的延遲時間(毫秒)

Port 0-65535 裝置IP位址端口,(不寫時預設為502)

TimeOut 0-65535 網絡逾時(不寫時預設3秒)

SwapF 0-3 浮點數的位元組順序,預設為配置檔案中所寫

SwapL 0-3 長征性的位元組順序,預設為配置檔案中所寫

SwapC 0-1 CRC校驗的位元組順序,預設為配置檔案中所寫

如:1:500:500|1|0|0

如:192.168.21.20:502 1/50|1|0|0

注:如果在裝置定義中對Swap系列功能設定,需要同時設定3個Swap順序,且SwapF、SwapL、SwapC次序不可更改。

繼續閱讀