AWTK 串口屏内置 MODBUS 从站模型,不用编写一行代码即可让串口屏提供 MODBUS 服务,让远程设备通过 MODBUS 协议访问串口屏上的数据。
1. 功能
让串口屏提供 Modbus 服务:
- 界面可以修改 input_register 中的数据,Modbus 客户端可以读取 input_register 的数据。界面可以显示 registers 中的数据,Modbus 客户端可以修改 registers 的数据。
2. 创建项目
从模板创建项目,将 hmi/template_app 拷贝 hmi/modbus_server_registers 即可。
第一个项目最好不要放到其它目录,因为放到其它目录需要修改配置文件中的路径,等熟悉之后再考虑放到其它目录。路径中也不要中文和空格,避免不必要的麻烦。
3. 制作界面
用 AWStudio 打开上面 modbus_server_registers 目录下的 project.json 文件。里面有一个空的窗口,做出类似下面的界面。
4. 添加绑定规则
4.1 URL
绑定属性 | 绑定规则 | 说明 |
v-data:value | {url} | url 表示远程设备的 URL |
4.2 unit id
绑定属性 | 绑定规则 | 说明 |
v-data:value | {unit_id} | 设备 ID |
4.3 当前湿度
绑定属性 | 绑定规则 | 说明 |
v-data:value | {当前湿度} | 当前湿度 在配置文件中定义,参考后面的配置 |
4.4 当前温度
绑定属性 | 绑定规则 | 说明 |
v-data:value | {当前温度} | 当前温度 在配置文件中定义,参考后面的配置 |
4.5 预设湿度
绑定属性 | 绑定规则 | 说明 |
v-data:value | {预设湿度} | 预设湿度 在配置文件中定义,参考后面的配置 |
4.6 预设温度
绑定属性 | 绑定规则 | 说明 |
v-data:value | {预设温度} | 预设温度 在配置文件中定义,参考后面的配置 |
4.7 窗口模型
指定窗口的模型为:
绑定属性 | 绑定规则 | 说明 |
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": {
"当前温度": "input_registers.word[0]",
"当前湿度": "input_registers.word[1]",
"预设温度": "registers.word[0]",
"预设湿度": "registers.word[1]"
}
}
配置文件格式请参考:
https://gitee.com/zlgopen/awtk-hmi/blob/master/docs/modbus_server_model.md
6. 描述需要持久化的数据
7. 编译运行
运行 bin 目录下的 demo 程序:
8. 注意
-
- 本项目并没有编写界面相关的代码,AWStudio 在 src/pages 目录下生成了一些代码框架,这些代码并没有用到,可以删除也可以不用管它,但是不能加入编译。
完整示例请参考:https://gitee.com/zlgopen/awtk-hmi/tree/master/hmi/demo_modbus_server_registers