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