Link IoT Edge提供Modbus和OPC UA两种官方驱动,用于支持工业领域广泛应用的Modbus和OPC UA两种通信协议设备。本文主要介绍Modbus驱动及其用法。

概述

Modbus是常用的应用层数据通信协议,阿里云官方Modbus驱动(以下简称Modbus驱动)支持Modbus-RTU和Modbus-TCP两种交互。

Modbus驱动可以直接连接Modbus从设备,详情见下图。

Modbus驱动也可以通过Modbus网关连接Modbus从设备,详情见下图。

Modbus驱动支持的功能有读取输入状态和输入寄存器,读/写线圈状态和保持寄存器。

Link IoT Edge提供C和Python语言Modbus驱动,同时根据CPU架构的不同,有多种C语言Modbus驱动。您可以直接从控制台部署Modbus驱动到网关,也可以从控制台下载Modbus驱动代码进行修改,作为您的自定义驱动使用。

使用步骤

  1. 参考环境搭建,创建边缘实例并上线网关。
  2. 边缘计算 > 边缘实例页面,选择已创建的边缘实例,单击右侧的查看
  3. 实例详情页面,选择设备驱动配置,单击全部驱动右侧的“+”图标 。
  4. 分配驱动弹出窗口中,根据网关CPU架构选择需要使用的Modbus驱动,单击对应操作栏中的分配。然后单击完成
    说明
    • C版本Modbus驱动,需在v1.8.4及以上版本的Link IoT Edge中使用。
    • Python版本Modbus驱动,仅支持在Link IoT Edge专业版中使用。


  5. 单击已分配的Modbus驱动,在设备列表右侧单击驱动配置
  6. 在弹出窗口中单击添加通道

    通道是网关与具体物理设备之间的连接介质。



  7. 根据界面提示设置参数,然后单击确定
    参数 描述
    通道名称 需在网关维度具有唯一性。
    传输模式 支持RTUTCP两种。
    当传输模式为RTU时,需设置以下参数:
    选择串口 /dev/ttyUSB0/dev/ttyUSB1
    波特率 表示每秒传送的符号个数,从下拉列表中选择。
    数据位 表示一组数据实际包含的数据位数,从下拉列表中选择。
    校验位 从下拉列表中选择奇偶校验、或者无校验。
    停止位 用于表示单个包的最后一位,从下拉列表中选择。
    当传输模式为TCP时,需设置以下参数:
    IP地址 输入点分十进制格式的地址。
    端口号 输入0~65535范围的整数。
  8. (可选)在设备列表右侧,单击容器配置,可参考容器配置中的参数说明,对当前驱动进行容器配置。配置完成后单击确定
    说明 仅在产品规格为专业版的边缘实例中,允许设置容器配置
  9. 单击分配子设备,在Modbus驱动下为边缘实例分配设备。

    您可以分配已有的Modbus设备,也可以根据如下步骤,新建Modbus设备。

    说明 分配已有的Modbus设备时,该设备所属产品必须接入网关,且接入网关协议为Modbus。详细说明请参见创建产品
    1. 在右侧弹出的分配子设备页面中,单击添加子设备

    2. 添加设备页面,单击新建产品,创建Modbus设备所属产品。

    3. 创建产品页面设置参数后,单击确认

      表 1. 参数说明
      参数 描述
      产品名称 设置产品名称,产品名称在账号内具有唯一性。
      所属分类 选择品类,为该产品定义物模型。此处选择自定义品类
      接入网关协议 此处必须选择Modbus
    4. 添加设备页面,产品自动分配已创建的产品,单击产品下的前往设置,为产品添加自定义功能。
      说明 您也可以通过Modbus调试功能,配置Modbus产品,详情请参见Modbus调试工具


    5. 系统跳转到产品详情页面,在自定义功能右侧单击添加功能

    6. 添加自定义功能窗口,设置属性参数后单击新增扩展描述,设置如下扩展描述。
      在配置物模型属性的过程中,设置扩展描述参数,将属性映射到寄存器中,官方Modbus驱动会将所有的属性聚合为Modbus数据请求,驱动收到Modbus数据之后再转换为物模型数据。

      参数说明如下所示,详细的参数解释请参见新增物模型扩展描述的说明。
      名称 描述
      操作类型 指操作Modbus的功能码。

      此处选择保持寄存器(读写,读取使用03,写入使用06)

      寄存器地址 指Modbus的寄存器的操作地址,地址从0开始。
      原始数据类型 如采集的温度值的数据类型为浮点型。
      取值范围 取值范围指的是原始数据经过缩放因子处理之后的取值范围,超出取值范围的数据会被丢弃。
      交换寄存器内高低字节 此处设置为true
      交换寄存器顺序 此处设置为false
      缩放因子 指缩放系数,如采集的值为100, 但真实的值为10,因此需要缩放10倍,故缩放因子填写0.1即可。如放大10倍(即真实的值为1000),则放大因子为10。
      采集间隔 无需设置该参数,保持默认值。
      数据上报方式 有两种数据上报方式。
      • 按时上报:根据采集间隔指定的时间采集并上报。
      • 变更上报:采集后的值发生变化后才会上报。
    7. 返回实例详情页面,添加Modbus设备。

    8. 将新建的Modbus设备分配到边缘实例。
  10. 分配设备到边缘实例后,单击设备名称对应操作栏中的设备配置,通过关联通道,关联设备与Modbus驱动。

    表 2. 参数说明
    参数 描述
    关联通道 选择本文上方步骤6中已创建的通道。
    从站号 从站号是Modbus设备标识信息,在同一个通道中是唯一的。
    采集间隔 Modbus协议是半双工协议,由网关主动请求数据,因此需要指定对数据点的采集间隔时间。单位为毫秒。
    说明 单个属性点的采集耗时时间大概为60毫秒(ms),则采集间隔的计算方式为:
    采集耗时时间(60 ms) * 该通道的所有属性点个数
    例如,当前Modbus总线通道上有10个设备,且每个设备有10个属性点,即采集间隔时间应大于等于6000 ms(60 ms * 10 * 10 = 6000 ms),这样才能保证每个属性点能正常上报。

    至此,您已完成Modbus驱动的分配。

  11. (可选)如果需要将设备数据展示在云端,则需要配置消息路由,详情请参见设置消息路由
  12. 实例详情页面,单击右上角部署,重新部署边缘实例。