在 AWTK 串口屏中,内置了 MODBUS Client 的模型,支持用 MODBUS 协议从远程设备获取数据。不用编写一行代码即可实现对远程设备数据的显示和修改。
1. 功能
不用编写代码,实现对远程设备数据的显示和修改。
2. 创建项目
从模板创建项目,将 hmi/template_app 拷贝 hmi/modbus_client_input_registers 即可。
第一个项目最好不要放到其它目录,因为放到其它目录需要修改配置文件中的路径,等熟悉之后再考虑放到其它目录。路径中也不要中文和空格,避免不必要的麻烦。
3. 制作界面
用 AWStudio 打开上面 modbus_client_input_registers 目录下的 project.json 文件。里面有一个空的窗口,做出类似下面的界面。
4. 添加绑定规则
4.1 URL
绑定属性 | 绑定规则 | 说明 |
---|---|---|
v-data:value | {url} | url 表示远程设备的 URL |
4.2 连接状态
绑定属性 | 绑定规则 | 说明 |
---|---|---|
v-data:value | {connected ? ‘connected’ : ‘no connection’} | connected 表示当前是否连接 |
4.3 湿度
绑定属性 | 绑定规则 | 说明 |
---|---|---|
v-data:value | {湿度} | 湿度 在配置文件中定义,参考后面的配置 |
4.4 温度
绑定属性 | 绑定规则 | 说明 |
---|---|---|
v-data:value | {温度} | 温度 在配置文件中定义,参考后面的配置 |
4.5 窗口模型
- 指定窗口的模型为
绑定属性 | 绑定规则 | 说明 |
---|---|---|
v-model | modbus_client(name=modbus_demo) | 配置文件名对应于 modbus_demo.json |
modbus_client 是内置的模型,name 是配置文件的名称,不需要加后缀。
5. 配置文件
配置文件路径 design/default/data/modbus_demo.json
{
"url":"tcp://localhost:502",
"channels" : [
{
"update_interval" : 3000,
"name" : "read_input_registers",
"access_type" : 4,
"read" : {
"offset" : 0,
"length" : 4
}
}
],
"variables": {
"温度": "read_input_registers.word[0]",
"湿度": "read_input_registers.word[1]"
}
}
- url: 远程设备的 URL
- update_interval: 更新间隔,单位毫秒
- channels: 通道列表
- name: 通道名称
- access_type: 访问类型
- read: 读取配置
- offset: 偏移
- length: 长度
- variables: 变量列表
- 温度: 映射到 modbus 通道的 word[0]
- 湿度: 映射到 modbus 通道的 word[1]
6. 描述需要持久化的数据
无
7. 编译运行
运行 bin 目录下的 demo 程序:
点击 Update 按钮,可以手工刷新数据
8. 注意
-
本项目并没有编写界面相关的代码,AWStudio 在 src/pages 目录下生成了一些代码框架,这些代码并没有用到,可以删除也可以不用管它,但是不能加入编译。
-
完整示例请参考:demo_modbus_client_input_registers
-
使用TCP协议时,如果使用modbus slave工具配套测试,需要将unit id设置为255