AWTK 串口屏內(nèi)置 MODBUS 從站模型,不用編寫一行代碼即可讓串口屏提供 MODBUS 服務(wù),讓遠(yuǎn)程設(shè)備通過 MODBUS 協(xié)議訪問串口屏上的數(shù)據(jù)。
1. 功能
讓串口屏提供 Modbus 服務(wù):
- 界面可以修改 input_register 中的數(shù)據(jù),Modbus 客戶端可以讀取 input_register 的數(shù)據(jù)。界面可以顯示 registers 中的數(shù)據(jù),Modbus 客戶端可以修改 registers 的數(shù)據(jù)。
2. 創(chuàng)建項目
從模板創(chuàng)建項目,將 hmi/template_app 拷貝 hmi/modbus_server_registers 即可。
第一個項目最好不要放到其它目錄,因為放到其它目錄需要修改配置文件中的路徑,等熟悉之后再考慮放到其它目錄。路徑中也不要中文和空格,避免不必要的麻煩。
3. 制作界面
用 AWStudio 打開上面 modbus_server_registers 目錄下的 project.json 文件。里面有一個空的窗口,做出類似下面的界面。
4. 添加綁定規(guī)則
4.1 URL
綁定屬性 | 綁定規(guī)則 | 說明 |
v-data:value | {url} | url 表示遠(yuǎn)程設(shè)備的 URL |
4.2 unit?id
綁定屬性 | 綁定規(guī)則 | 說明 |
v-data:value | {unit_id} | 設(shè)備?ID |
4.3 當(dāng)前濕度
綁定屬性 | 綁定規(guī)則 | 說明 |
v-data:value | {當(dāng)前濕度} | 當(dāng)前濕度?在配置文件中定義,參考后面的配置 |
4.4?當(dāng)前溫度
綁定屬性 | 綁定規(guī)則 | 說明 |
v-data:value | {當(dāng)前溫度} | 當(dāng)前溫度?在配置文件中定義,參考后面的配置 |
4.5?預(yù)設(shè)濕度
綁定屬性 | 綁定規(guī)則 | 說明 |
v-data:value | {預(yù)設(shè)濕度} | 預(yù)設(shè)濕度?在配置文件中定義,參考后面的配置 |
4.6?預(yù)設(shè)溫度
綁定屬性 | 綁定規(guī)則 | 說明 |
v-data:value | {預(yù)設(shè)溫度} | 預(yù)設(shè)溫度?在配置文件中定義,參考后面的配置 |
4.7 窗口模型
指定窗口的模型為:
綁定屬性 | 綁定規(guī)則 | 說明 |
v-model | modbus_server | 配置文件名為 modbus.json |
5. 配置文件
配置文件路徑 design/default/data/modbus.json
{
?"url": "tcp://localhost:502",
?"channels": [
? ?{
? ? ?"name": "bits",
? ? ?"writable": true,
? ? ?"start": 0,
? ? ?"length": 100
? ?},
? ?{
? ? ?"name": "input_bits",
? ? ?"start": 0,
? ? ?"length": 200
? ?},
? ?{
? ? ?"name": "registers",
? ? ?"writable": true,
? ? ?"start": 0,
? ? ?"length": 300
? ?},
? ?{
? ? ?"name": "input_registers",
? ? ?"start": 0,
? ? ?"length": 400
? ?}
?],
?"variables": {
? ?"當(dāng)前溫度": "input_registers.word[0]",
? ?"當(dāng)前濕度": "input_registers.word[1]",
? ?"預(yù)設(shè)溫度": "registers.word[0]",
? ?"預(yù)設(shè)濕度": "registers.word[1]"
?}
}
配置文件格式請參考:
https://gitee.com/zlgopen/awtk-hmi/blob/master/docs/modbus_server_model.md
6. 描述需要持久化的數(shù)據(jù)
7. 編譯運行
運行 bin 目錄下的 demo 程序:
8. 注意
-
- 本項目并沒有編寫界面相關(guān)的代碼,AWStudio 在 src/pages 目錄下生成了一些代碼框架,這些代碼并沒有用到,可以刪除也可以不用管它,但是不能加入編譯。
完整示例請參考:https://gitee.com/zlgopen/awtk-hmi/tree/master/hmi/demo_modbus_server_registers