本文介绍如何将基于Modbus协议的设备接入网关,并与物联网平台交互的方法。

背景信息

本文描述,使用官方Modbus驱动接入Modbus设备的操作。您也可以使用自定义的Modbus驱动,但在物联网平台创建设备所属产品时,接入网关的协议必须选择自定义。自定义驱动相关内容可参考驱动开发

操作步骤

  1. 以阿里云账号登录物联网控制台
  2. 根据您的实际环境,参考专业版搭建环境完成边缘实例的创建,上线网关。
  3. 创建基于Modbus协议的设备。
    1. 参考创建产品,创建环境监测产品。


      其中, 部分参数按如下设置:
      参数 描述
      所属分类 选择智能城市 > 环境感知 > 环境监测设备
      是否接入网关 选择
      接入网关协议 选择Modbus
    2. 创建完成环境监测产品后,进入产品详情页,开启动态注册。


    3. 参考新增物模型,在产品详情页,为环境监测产品添加物模型。


    4. 单击扩展描述

      在配置物模型属性的过程中,需要把每个属性通过扩展描述中的功能映射到Modbus中的寄存器地址,官方Modbus驱动会将所有的属性聚合为Modbus数据请求,驱动收到Modbus数据之后再转换为物模型数据。



      表 1. 参数说明
      名称 描述
      操作类型 指操作Modbus的功能码,具体如下:
      • 输入状态,对应的功能码:0x02(读离散输入)
      • 线圈状态,对应的功能码:0x01、0x0F(读、写线圈)
      • 保持寄存器,对应的功能码:0x03、0x10(读、写保持寄存器)
      • 输入寄存器,对应的功能码:0x04(读输入寄存器)

      此处选择保持寄存器

      寄存器地址 指Modbus的寄存器的操作地址
      原始数据类型 如采集的温度值的数据类型为浮点型
      交换寄存器内高低字节 如采集的温度值占用一个寄存器(16位),但是对采集后的原始数据要进行高低字节的交换才能生成真实的值
      交换寄存器顺序 如采集的振动值占用两个寄存器(32位),但是对采集后的原始数据要进行前后寄存器的交换才能生成真实值
      缩放因子 指缩放系数,如采集的值为100, 但是真实的值为10,因此需要缩放10倍,故缩放因子填写0.1即可。如放大10倍(即真实的值为1000),则放大因子为10
      采集间隔 Modbus协议是半双工协议,由网关主动请求数据,因此需要指定对数据点的采集间隔时间。单位为毫秒
      说明 单个属性点的采集耗时时间大概为60毫秒(ms),则采集间隔的计算方式为:
      采集耗时时间(60 ms) * 该通道的所有属性点个数
      例如,当前Modbus总线通道上有10个设备,且每个设备有10个属性点,即采集间隔时间应大于等于6 s(0.06s * 10 * 10 = 6s),这样才能保证每个属性点能正常上报。
      数据上报方式 按时上报是根据采集间隔指定的时间采集并上报,而变更上报指采集后的值发生变化后才会上报
    5. 参考单个创建设备,添加环境监测设备。


  4. 参考子设备通信通道,为网关添加Modbus通道。


  5. 配置边缘实例。
    1. 分配环境监测设备到实例中。


    2. 分配子设备成功后,为子设备配置Modbus驱动。


      表 2. 参数说明
      参数 描述
      选择驱动 选择Modbus官方驱动,根据您网关设备适用的语言和CPU架构,选择合适的Modbus驱动。
      选择通道 选择已创建的Modbus通道。
      从站号 用来标识Modbus设备在总线上的地址。本示例设置为2。
      数据采集间隔 设置该子设备下所有数据点的采集间隔。本示例可使用默认值。
    3. 参考设置消息路由,配置边缘实例消息路由。


  6. 重新部署边缘实例。


  7. 设备管理 > 设备页面,查看设备是否在线。