這里接前一章節(jié),繼續(xù)迪文屏的開發(fā),前章主要講解基礎開發(fā)流程,此章節(jié)開始講解迪文ModBus協(xié)議棧的使用方法。
前文指路:《迪文串口屏基礎GUI開發(fā)流程》
協(xié)議棧獲取,首先在迪文官方論壇上獲取ModBus協(xié)議棧的OS程序,官方提供了眾多不同的例程,是通過組合不同的串口及波特率等組合方式配合協(xié)議棧完成的,此處選擇的是基于UART5-485/115200波特率的示例程序。
將其下載下來后,解壓目錄包含如下文件:
文件作用解析如下:
我們需要用到的僅有兩個bin文件,將DWINOS-xx.bin和22_xx.bin放入SD卡中的DWIN_SET目錄下,屏幕斷電,插入SD卡后再上電,即可看到屏幕開始更新SD卡中的內容。
22文件內有兩條默認的指令用于測試,使用能夠查看BIN文件的工具,官方有推薦其他工具,各位也可以選擇自己熟悉的工具,只要能夠編輯bin文件即可。這里筆者選擇已經安裝好的J-Flash軟件打開,將22_Master_Poll.bin 拖入J-Flash軟件,在頂部將其定位到0X1C000位置處可以看到如下數據:
剛開始可能看不懂代表的具體意思,迪文論壇上有人自制了22文件的圖形化編輯工具,有需要.net環(huán)境版本的,也有不需要環(huán)境直接運行的,區(qū)別就是用.net環(huán)境的會比不需要環(huán)境的壓縮包更小,為了省掉不必要的麻煩,在這里選了不依賴.net環(huán)境的下載,下載后內容如下:
雙擊DwinModBus.exe即可正常打開,打開后選擇從22文件導入數據即可看到每條指令分別代表什么意思。
這里按屏幕提示正常按需求添加ModBus指令即可,但需要注意的是,部分功能碼對GUI界面的變量地址做出了要求,例如使用05碼控制單個線圈,官方在手冊中對位定義做出了要求,變量地址必須在0X0110到0X011F之間,每個變量分為16bit,最多256個bit位。對其他的部分功能碼也有相關的限制,需要查手冊或論壇以及詢問技術支持。
按要求,需要讀取ModBus從機數據并將其顯示到頁面上,假設從機ModBus地址為1,數據位于輸入寄存器2000號地址,浮點型,兩個寄存器數據表示一個浮點數,將其讀取出來后顯示到GUI的1000變量地址上,則在圖形化22配置工具上應輸入如下指令:
啟用標記:在命令的開頭必須是0X5A代表本條ModBus指令被啟用,其余數據代表不起用
從機ID:從機ModBus地址
命令:ModBus功能碼
本條指令長度:要從目標寄存器開始讀取多少個寄存器數量
接收超時時間:主機發(fā)出消息后等待從機的響應時間,從解釋來看,是16進制,單位是ms
執(zhí)行方式:可以選擇附加條件的執(zhí)行,具體可以查看軟件上的注釋,這里選擇00即是無條件執(zhí)行
附加限制:指的是在開啟附加條件時根據此條件進行發(fā)送
DGUS變量地址:指的是GUI上用戶設置的用于顯示數據的變量地址,也就是前文中設置的數據顯示地址
寄存器地址:讀取從機的起始寄存器地址
當配置完成后,點擊生成ModBus指令按鈕即可導出設置的ModBus命令集,但注意,這個軟件有bug,生成的指令對齊格式不對,無法直接使用,可以看到在默認的22文件中,兩條指令之間即5A開頭之間是相差了16個字節(jié)的,但使用這個軟件進行多指令生成時可以看到是不一致的。
咨詢了官方,圖形配置工具已經在制作了,預計還要一段時間,建議各位使用這個工具時還是用來熟悉指令格式,自己手動修改bin文件。雖然軟件生成有問題,但加載是正常的,可以用來驗證手改bin的效果是否達到。
指令添加完成后,使用串口工具進行下載,即可在串口5上使用485轉換器接收到主機發(fā)出的ModBus指令。
此時使用< ModBus Slave>模擬從機設備,建立如下寄存器:
點擊上方的connect選擇好對應的串口參數,即可查看到主機與模擬器的交互過程。
此時,屏幕上的指定變量應當會顯示模擬器中的數據。
-
MODBUS
+關注
關注
28文章
1805瀏覽量
76992 -
串口屏
+關注
關注
8文章
534瀏覽量
37433 -
迪文屏
+關注
關注
3文章
78瀏覽量
5387
發(fā)布評論請先 登錄
相關推薦
評論