• 正文
  • 推薦器件
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

【技術分享】AWTK 開源串口屏開發(fā)(17) - 通過 MODBUS 訪問數(shù)組數(shù)據(jù)

2024/04/27
1234
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

在 AWTK 串口屏中,內(nèi)置 MODBUS 客戶端通道模型,不用編寫代碼即可實現(xiàn)在 ListView 中顯示遠程設備上的數(shù)組數(shù)據(jù)。

1. 功能

不用編寫代碼,實現(xiàn)對遠程設備上數(shù)組數(shù)據(jù)的顯示。

2. 創(chuàng)建項目

從模板創(chuàng)建項目,將 hmi/template_app 拷貝 hmi/modbus_client_channel_input_registers 即可。

第一個項目最好不要放到其它目錄,因為放到其它目錄需要修改配置文件中的路徑,等熟悉之后再考慮放到其它目錄。路徑中也不要中文和空格,避免不必要的麻煩。

3. 制作界面

用 AWStudio 打開上面 modbus_client_channel_input_registers 目錄下的 project.json 文件。里面有一個空的窗口,做出類似下面的界面。

4. 添加綁定規(guī)則

第一次用到列表視圖,有幾點需要特別說明一下:列表視圖中的滾動視圖需要指定?v-for-items?屬性。

屬性 說明
v-for-items true 它保證其下的列表項,會根據(jù)數(shù)據(jù)自動生成|

4.1 幾個特殊的變量

      • index 特指序數(shù)。item 特指當前的數(shù)據(jù)。比如在這里 ‘item.level’ 表示告警級別,‘item.time’ 表示時間,‘item.device’ 表示設備,‘item.message’ 表示告警信息。selected_index 表示當前選中的序數(shù)(可在

    列表視圖

      • 之外綁定)。items 表示當前列表視圖中的數(shù)據(jù)個數(shù)(可在

    列表視圖

      之外綁定)。

4.2?序數(shù)

綁定屬性 綁定規(guī)則 說明
v-data:value {index} index 特指序數(shù)。

4.3?告警級別前面提到告警級別是正數(shù),可以通過 item.level 來獲取它。它的意義對應為:調試?(0);?信息?(1);?警告?(2);?錯誤?(3),我們需要用 one_of 函數(shù)將它轉換為對應的字符串。

綁定屬性 綁定規(guī)則 說明
v-data:value {one_of(‘調試;信息;警告;錯誤’, item.level)} 這里的 one_of 的功能是從指定的字符串數(shù)組中取出對應的子串。

4.4?時間時間是整數(shù)(秒數(shù)),可以通過 item.time 來獲取。

綁定屬性 綁定規(guī)則 說明
v-data:value {date_time_format(item.time, 'Y-M-D h:m:s')} 需要用 date_time_format 將 epoch 時間轉換成人類可讀的時間。

4.5?告警信息告警信息是一個字符串,可以通過 item.message 來獲取。

綁定屬性 綁定規(guī)則 說明
v-data:value {item.message}  

_

4.6?URL

綁定屬性 綁定規(guī)則 說明
v-data:value {url} url 表示遠程設備的 URL

4.7?連接狀態(tài)

綁定屬性 綁定規(guī)則 說明
v-data:value {connected ? ‘connected’ : ‘no connection’} connected 表示當前是否連接

4.8?窗口模型

指定窗口的模型為:

綁定屬性 綁定規(guī)則 說明
v-model modbus_client(name=modbus_demo) 配置文件名對應于 modbus_demo.json

modbus_client 是內(nèi)置的模型,name 是配置文件的名稱,不需要加后綴。

4.9?視圖模型

為了使用 channel 的模型,還需要在窗口的下一級控件指定 modbus_client_channel 模型。

綁定屬性 綁定規(guī)則 說明
v-model modbus_client_channel(name=modbus_demo_input_register) 配置文件名對應于 modbus_demo_input_register.json

modbus_client_channel 是內(nèi)置的模型,name 是配置文件的名稱,不需要加后綴。

5. 配置文件

配置文件路徑 design/default/data/modbus_demo.json

 

{ ?"url":"tcp://localhost:502", ?"channels" : [ ? ?{ ? ? ?"update_interval" : 5000, ? ? ?"name" : "read_input_registers", ? ? ?"access_type" : 4, ? ? ?"read" : { ? ? ? ?"offset" : 0, ? ? ? ?"length" : 3200 ? ? ?} ? ?} ?]}

在上面的配置中,定義了通道 read_input_registers,長度為 3200?個 registers,共 6400?字節(jié)。

配置文件路徑 design/default/data/modbus_demo_input_register.json

{ ?"channel":"read_input_registers", ?"items": 100, ?"variables": { ? ?"level": "byte[0].uint32", ? ?"time": "byte[4].uint32", ? ?"message": "byte[8].str[56]" ?}}

在上面的配置中,將通道 read_input_registers 中的數(shù)據(jù),分成 100?等份,也就是看作 100?元素的數(shù)組,每個元素 64 字節(jié)。這 64 字節(jié)的數(shù)據(jù)為三個成員:

level: 4 字節(jié),無符號整數(shù);

time: 4 字節(jié),無符號整數(shù);

message: 56 字節(jié),字符串。

6. 描述需要持久化的數(shù)據(jù)

7. 編譯運行

運行 bin 目錄下的 demo 程序:

點擊?Update?按鈕,可以手工刷新數(shù)據(jù)

8. 注意

    • 本項目并沒有編寫界面相關的代碼,AWStudio 在 src/pages 目錄下生成了一些代碼框架,這些代碼并沒有用到,可以刪除也可以不用管它,但是不能加入編譯。完整示例請參考:demo_modbus_client_channel_input_registers。

使用 TCP 協(xié)議時,如果使用 modbus slave 工具?配套測試,需要將 unit id 設置為 255。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
KSZ9021RNI 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC48

ECAD模型

下載ECAD模型
$5.6 查看
KSZ9567RTXI 1 Microchip Technology Inc IC ETHERNET SWITCH 7PORT 128TQFP

ECAD模型

下載ECAD模型
$15.08 查看
VSC8572XKS-05 1 Microchip Technology Inc Ethernet Transceiver
$263.97 查看
致遠電子

致遠電子

廣州致遠電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術認證企業(yè),廣州市高端工控測量儀器工程技術研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術認證企業(yè),廣州市高端工控測量儀器工程技術研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄