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

概览

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

Modbus驱动可以直接连接Modbus从设备,示意图如下所示。
Modbus驱动直接连接设备
Modbus驱动也可以通过Modbus网关连接Modbus从设备,示意图如下所示。
Modbus驱动通过网关连设备

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

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

本文以示例方式介绍Modbus官方驱动的使用步骤,具体操作如下文所示。

说明 使用Modbus官方驱动之前请确保已根据环境搭建内容,创建边缘实例并上线网关。

一、分配驱动

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

    选驱动

二、配置驱动

  1. 单击已分配的Modbus驱动,在设备列表右侧单击驱动配置
  2. 在弹出对话框中单击添加通道
    通道是网关与具体物理设备之间的连接介质。
    添加通道

    根据界面提示设置参数,然后单击确定

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

三、驱动关联子设备

  1. 单击设备列表页面中的分配子设备,在Modbus驱动下为边缘实例分配设备。
    您可以分配已有的Modbus设备,也可以根据下面的步骤,新建Modbus设备。
    说明 分配已有的Modbus设备时,该设备所属产品必须接入网关,且接入网关协议为Modbus。详细说明请参见创建产品
  2. 在右侧弹出的分配子设备对话框中,单击添加子设备

    添加设备
  3. 添加设备对话框,单击新建产品,创建Modbus设备所属产品。

    创建产品
  4. 创建产品对话框设置参数后,单击确认

    创建产品
    表 1. 参数说明
    参数 描述
    产品名称 设置产品名称,产品名称在账号内具有唯一性。
    所属分类 选择品类,为该产品定义物模型。此处选择自定义品类
    接入网关协议 此处必须选择Modbus
  5. 添加设备对话框,产品自动分配已创建的产品,单击产品下的前往设置,为产品添加自定义功能。
    说明 您也可以使用Modbus调试工具配置Modbus产品,但需要先完成添加设备并分配到边缘实例的操作,再使用调试工具。

    前往设置

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


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

    参数说明如下所示,详细的参数解释请参见单个添加物模型扩展描述的说明。

    名称 描述
    操作类型 指操作Modbus的功能码。

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

    寄存器地址 填写十六进制,以0x开头。

    根据您自己设备的属性地址设置寄存器地址。例如,要调试温度属性,您设备的温度属性地址为1,则寄存器地址可设置为0x1。

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

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

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

四、部署边缘实例

  1. (可选)在部署实例前,可以使用Modbus调试工具,测试网关能否连接该Modbus设备,同时也可以测试Modbus设备所属产品的物模型是否配置正确。
  2. 实例详情页面,单击右上角部署,重新部署边缘实例。

常见问题

Modbus官方驱动上报消息到云端时,是按照设备维度上报,还是属性维度上报?

答:Modbus官方驱动在每个采集周期内,按照设备维度进行采集和上报数据。例如,1个Modbus设备有100个属性,数据采集间隔为5秒,那么Modbus驱动每5秒上报云端1条消息(因为是1个设备)。