• AWTK MODBUS Client channel 模型


    名称:modbus_client_channel

    在这里插入图片描述

    功能:通过 modbus 协议访问远程 slave 设备上的数据,需要配合 modbus_client模型一起使用。用于将 modbus client 中的 channel 包装成view_model或者view_model_array

    一般来说不需要,直接使用modbus_client模型即可。只有在需要将通道中的数据当成多条记录,方便绑定到 ListView 时,才需要使用。

    1. 参数

    • name 用于加载配置文件。路径为:design/default/data/.json

    modbus_client_channel必须在modbus_client模型之下创建。

    示例:

    <window v-model="modbus_client(name=modbus_demo,share=true)" name="home_page">
      <view x="0" y="0" w="100%" h="100%" v-model="modbus_client_channel(name=modbus_demo_input_register)">
      ...
      view>
    window>  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里配置文件路径为:design/default/data/modbus_demo_input_register.json

    2. 配置文件格式

    使用 JSON 文件描述配置。

    2.1 基本配置

    • channel 通道的名字。在modbus_client模型的配置中必须存在。

    • items 通道中记录的个数。

    items > 1 为数组模型,否则为非数组模型。为数组模型时,可以绑定到 ListView,每一项数据绑定到一个列表项中。
    当 items > 1,整个通道的数据被分成 items 等份。每一份的长度为:通道总数据长度/items,数据访问的范围必须在一份数据的长度范围内。

    示例:

    {
      "channel":"read_input_registers",
      "items": 100,
      "variables": {
        "level": "byte[0].uint32",
        "time": "byte[4].uint32",
        "message": "byte[8].str[54]"
      }
    }  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.3 变量定义

    UI 可以直接绑定通道中的数据。为了提高可读性和灵活性,可以定义一些变量,将变量映射到通道地址。

    • 定义变量
      "variables": {
        "level": "byte[0].uint32",
        "time": "byte[4].uint32",
        "message": "byte[8].str[54]"
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 使用变量
      <progress_circle name="progress_circle" x="c" y="100" w="100" h="100" max="10000" v-data:value="{温度}" />
      <progress_circle name="progress_circle" x="c" y="220" w="100" h="100" max="10000" v-data:value="{湿度}" />
    
    • 1
    • 2

    3. 访问通道中的数据。

    格式:<通道数据类型>[offset].(bit_offset|<变量数据类型>)

    详情 modbus client 中的 访问通道中的数据。不同之处是不需要指定通道名称前缀。

    示例:

    • byte[0].uint32 从偏移为 0 的地址读取 32 位无符号整数。
    • byte[4].uint32 从偏移为 4 的地址读取 32 位无符号整数。
    • byte[8].str[54] 从偏移为 8 的地址读取最大长度为 54 字节的字符串。字符串本身必须于以空字符’\0’结束。

    内置属性

    属性类型说明
    url字符串URL
    connected布尔当前是否连接。
    name字符串名称。

    示例

      <label x="c" y="10" w="50%" h="40" v-data:tr_text="{url}" />
      <label x="c" y="60" w="50%" h="40" v-data:tr_text="{connected ? 'connected' : 'no connection'}" />
    
    • 1
    • 2

    内置命令

    命令参数说明
    update更新通道数据 (read/write)

    示例

    <button x="c:-100" y="b:10" w="168" h="36" text="Update" v-on:click="{update}" />
    
    • 1

    完整示例

    请参考:demo_modbus_client_channel_input_registers

    注意

    如果数据需要进行字节序转换,可以调用 fscript 函数,具体请参考:https://gitee.com/zlgopen/awtk/blob/master/docs/fscript_endian.md

  • 相关阅读:
    【BP-Adaboost预测】基于BP神经网络的Adaboost的单维时间序列预测研究(Matlab代码实现)
    SpringCloud 核心组件Nacos【NacosRule负载均衡&服务的权重设置】第3章
    python之shutil模块
    【设计模式深度剖析】【2】【结构型】【装饰器模式】| 以去咖啡馆买咖啡为例 | 以穿衣服出门类比
    空气质量监测系统的组成和应用
    阿里云杨皓然:Serverless或将引领云的下一个时代
    FaceChain应用生态爆发?无限可能的人物应用等你加入探索!
    【python实战】朋友因股票亏了,很惨常愤恨不平,当天我就分析出原因:怎么做到的?(听说关注我的人会暴富)
    中国网络安全审查认证和市场监管大数据中心数据合规官CCRC-DCO
    git仓库代码克隆
  • 原文地址:https://blog.csdn.net/absurd/article/details/138214643