超輕巧modbus除錯助手使用說明
飞扬青云發表於2024-10-02
一、使用說明
1.1 資料格式
- 和其他的modbus採集工具一樣,本元件也支援各種資料格式,其實就是高位元組低位元組的順序。
- 一般是2位元組表示一個資料,後面又有4位元組表示一個資料,目前好像還有8位元組表示一個資料的裝置。
- 不同廠家的裝置對應的位元組順序可能不同,要求可以自定義順序,以便滿足各種裝置的接入。
- 4位元組的資料可以是長整型,也可能是浮點數,按照標準規則計算出浮點值。面對浮點數的採集,很多國內的廠商的做法是以長整型資料發出,再除以一個值比如1000進行換算,因為下位機往往是微控制器,微控制器對浮點數運算很雞肋很吃力。
- 最終的資料解析還要區分有符號和無符號,一般都是有符號,因為可以表示負數,比如溫度就有負數。目前本元件都是按照有符號進行運算,後面有場景需要可以增加無符號的支援。
- 如果發現資料解析不對,可以調整對應的順序試試。
- Short_AB,短整型資料,總共2位元組,正序,高位元組在前,低位元組在後。
- Short_BA,短整型資料,總共2位元組,反序,低位元組在前,高位元組在後。
- Long_ABCD,長整型資料,總共4位元組,大端模式正序。
- Long_DCBA,長整型資料,總共4位元組,小端模式正序。
- Long_BADC,長整型資料,總共4位元組,大端模式反序。
- Long_CDAB,長整型資料,總共4位元組,小端模式反序。
- Float_ABCD,浮點型資料,總共4位元組,大端模式正序。
- Float_DCBA,浮點型資料,總共4位元組,小端模式正序。
- Float_BADC,浮點型資料,總共4位元組,大端模式反序。
- Float_CDAB,浮點型資料,總共4位元組,小端模式反序。
1.2 資料採集
- 第一步,協議型別選擇,本元件支援多種協議型別,如果選擇的com,則需要填寫串列埠號和波特率,選擇的網路比如TCP,需要填寫主機和埠號。
- 第二步,選擇輪詢間隔,預設1s輪詢一次。
- 第三步,選擇超時次數,預設3次,表示輪詢3次還沒有收到資料就離線。
- 第四步,新增要採集的裝置地址,起始地址和採集數量。預設會有三個地址,可以直接在表格中修改後再單擊儲存。
- 單擊新增按鈕,會生成一個預設值的新行,直接修改值,單擊儲存。
- 單擊刪除按鈕,會將當前選中的行刪除,刪除後自動儲存。
- 單擊儲存按鈕,將表格中的所有資料儲存到配置檔案。
- 單擊清空按鈕,將表格中的所有資料清空,自動儲存。
- 第一列填裝置地址,1個位元組,範圍值1-247,切記這裡是從1開始的。在RTU協議中對應在第一個位元組,在TCP協議中對應在第六個位元組。
- 第二列填暫存器開始地址,2個位元組,範圍值0-65535,切記這裡是從0開始的,0表示第一個暫存器。
- 第三列填採集的數量,2個位元組,和開始地址組合使用,開始地址+數量<=65535。
- 如果開始地址填0,採集數量填2,則表示採集暫存器1、暫存器2共2個暫存器的資料。
- 如果開始地址填7,採集數量填4,則表示採集暫存器8、暫存器9、暫存器10、暫存器11共4個暫存器的資料。
- 第四列填資料順序格式,見上面資料格式說明。一般填Short_BA、Long_DCBA。
- 單擊啟動服務按鈕,會自動啟動採集執行緒,如果採集裝置存在則會顯示對應採集到的資料。
- 單擊重新讀取按鈕,會立即復位裝置離線狀態,全部裝置重新採集。為什麼需要這個?因為一般在modbus採集過程中,都是按照輪詢的方式採集的,但是實際場景中有些裝置壞了或者根本沒有,那每次都佔用一次輪詢時間是不是很浪費呢?這就需要自動跳過離線的裝置,加快輪詢速度。但是可能後面裝置又接上去了,這個時候要麼等待重連時間到了去採集,要麼單擊這個重新讀取按鈕立即觸發。聯調過程中往往喜歡單擊這個按鈕去立即觸發一次,因為重連時間可能會比較大,傻傻的等待也不是個事。
- 單擊清空資料按鈕,會清空左側顯示的資料,雙擊左側的顯示欄也會自動清空。
- 所有收發的資料也會列印顯示在左側,方便查閱分析問題,也可以看到採集到的最終的值。
1.3 資料寫入
- 第一步,生成暫存器核取方塊和微調框,數量下拉框選擇要生成的數量,單擊一鍵生成。核取方塊的作用是用於單個寫入資料,勾選了則表示該暫存器需要寫入資料。
- 第二步,填寫好裝置地址,從1開始,也就是對哪個裝置寫入資料。
- 第三步,單擊寫入資料/單個寫入按鈕,對勾選的暫存器地址寫入對應微調框的值。
- 第四步,如果需要連續寫入,還需要設定開始地址和寫入數量,再單擊連續寫入按鈕。
- 單個寫入對應功能碼0x06,連續寫入對應功能碼0x10。
- 寫入動作和寫入成功在左側都有列印顯示,一般是深綠色顏色顯示,關鍵字寫暫存器。
二、功能特點
- 支援多種物聯網通訊協議,包括modbus和mqtt。
- 協議方式支援串列埠com通訊、網路tcp通訊、網路udp通訊、網路websocket通訊。
- 資料規則支援rtu模式和網路模式,網路rtu模式也就是modbus rtu over tcp/udp/websocket。相當於modbus串列埠協議資料走網路方式通訊。
- 支援批次連續寫入暫存器數值和單個寫入暫存器數值。
- 支援資料順序格式的設定,比如大端小端,高位元組在前低位元組在前的設定。支援Short_AB、Short_BA、Long_ABCD、Long_CDAB、Long_BADC、Long_DCBA、Float_ABCD、Float_CDAB、Float_BADC、Float_DCBA等。
- 支援資料位位元組數設定,比如短整型、長整型、浮點型等。常規的一般是2位元組表示一個資料位,也有裝置是4位元組表示一個資料位,還有4位元組浮點數的形式。後期可能還有8位元組一個資料位。
- 支援mqtt協議,可設定主機地址和埠、協議版本、唯一標號、使用者名稱稱、使用者密碼。
- 支援mqtt釋出主題、訂閱主題、取消訂閱。
- 定時自動釋出主題,可設定保活時間、超時時間、過期時間。mqtt通訊自動重連。
- mqtt模擬資料收發支援多種格式,文字、json、base64、hex等。
- mqtt同時支援websocket方式,還支援ssl方式通訊。
- 支援多種採集通訊方式,包括串列埠和網路等,可自由擴充其他方式。可同時採集多路。
- 自定義採集間隔(精確到毫秒)和超時次數,超時後自動將離線的檔案從輪詢佇列中移除,加快輪詢速度。
- 可設定最大超時重連間隔,將離線的裝置重新探測一次,保證裝置恢復正常後能夠重新加入輪詢佇列。
- 同時提供了裝置模擬工具,支援各種協議,支援設定多個裝置的資料值。
- 模擬工具可隨機切換模擬資料值,要正常隨機資料就模擬生成正常範圍的資料,要報警資料就模擬生成報警範圍的資料。方便測試。
- 多執行緒採集和解析資料,以訊號的方式傳送解析結果,不卡主執行緒。
- 架構採用基類繼承方式,通用處理在基類,極易擴充其他通訊方式。
- 介面友好,使用非常簡單,設定要採集的地址集合、開始索引集合、採集數量集合、資料順序格式四個引數即可。會自動組裝對應協議的資料傳送。
- 採集後的資料以統一格式的訊號發出來,非常簡單易用。支援浮點型資料。
- 採集指令有優先順序,如果有自定義的資料需要優先執行。可以將優先順序高的指令呼叫append方法插入即可。可批次採集也可單個採集。
- 支援利用現有的通訊鏈路傳送自定義資料,這個資料可以不是標準的modbus協議,比如有時候需要一些私有協議資料,利用現有鏈路傳送下去執行。
- 多執行緒高併發,每個埠採集都是一個獨立的執行緒,互不干擾,支援成千上萬個裝置採集。
- 程式碼做了相容,支援各種編譯器,同時支援Qt4、Qt5、Qt6。
- 跨平臺,支援windows、linux、mac、嵌入式linux、android、各種國產系統和開發板等。
三、相關連結
- 體驗地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取碼:o05q 檔名:bin_iottool.zip
- 國內站點:https://gitee.com/feiyangqingyun
- 國際站點:https://github.com/feiyangqingyun