ThingsBoard Modbus数据采集与控制


本文内容将帮助你通过thingsboard网关快速接入modbus协议的设备。并演示一个简单的数据读取与控制的例子。
本文具体实现官网modbus官网modbus例子,并补充控制modbus的部分

准备环境

具体搭建步骤不在本文介绍

  • thingsboard 3.2.1
  • tb-gateway 2.5.5.2
  • modbus salve 7.3.1

案例目标:

俩种方式

  1. 服务端RPC
    1. 直接发http请求将温度重置为10
  2. 规则链RPC节点
    1. 温度(寄存器地址0)和湿度(寄存器地址1)作为遥测数据传到thingsboard,并将电量(寄存器地址2)作为属性值传到thingsboard。在规则链中实现模拟控制:如果温度大于40,则通过rpc控制将温度重置为10。

配置Modbus连接器

tb_gateway.yaml中配置thingsboard的地址端口以及tb-gateway连接到tb使用的accessaToken(在tb页面创建设备并勾选是否网关选项,复制此设备的accessToken,填入此配置),并打开modbus连接器配置

thingsboard:
  host: localhost
  port: 1883
  remoteShell: false
  remoteConfiguration: false
  security:
    accessToken: z5zRQmSXe64U39my83jd
  qos: 0
storage:
  type: memory
  read_records_count: 100
  max_records_count: 100000
connectors:
  -
    name: Modbus Connector
    type: modbus
    configuration: modbus.json

Modbus相关配置modbus.json具体含义在配置文件的注释

{
  "server": {
    "name": "Modbus Test Server", # modbus服务器名称
    "type": "tcp",# modbus连接方式
    "host": "10.211.55.3",# 地址
    "port": 502, # 端口
    "timeout": 35,
    "method": "socket",
    "devices": [
      {
        "unitId": 1, 
        "deviceName": "TH_sensor",# 设备名称,成功后会出现在tb的设备列表中
        "attributesPollPeriod": 5000, # 每隔五秒拉取一次属性数据
        "timeseriesPollPeriod": 5000, # 每隔五秒拉取一次遥测数据
        "sendDataOnlyOnChange": false,
        "attributes": [ # 数组中的定义作为属性上传到tb
          {
            "byteOrder": "BIG",
            "tag": "batteryLevel", # 定义属性名称展示在tb设备的属性中
            "type": "long",
            "functionCode": 4, # modbus的功能码 
            "registerCount": 1,# 读取的寄存器数量(从寄存器开始地址)
            "address": 2 # 读取的寄存器开始地址
          }
        ],
        "timeseries": [ # 作为遥测数据上传的定义
          {
            "byteOrder": "BIG",
            "tag": "humidity",# 湿度
            "type": "long",
            "functionCode": 4, # modbus功能码 4(只读)
            "registerCount": 1,
            "address": 1 # modbus地址1
          },
          {
            "byteOrder": "BIG",
            "tag": "temperature",# 温度
            "type": "long",
            "functionCode": 3, # modbus功能码 3(可读写)
            "registerCount": 1,
            "address": 0 # modbus地址0
          }
        ],
        "rpc": [ # rpc写/控制功能定义
          {
            "tag": "resetTemperature", # 对应rpc中method的值要指定此值
            "type": "16int", # 数据类型
            "functionCode": 6, # modbus功能码 6 
            "objectsCount": 1,
            "address": 0 # modbus地址 0
          }
        ]
      }
    ]
  }
}

modbus salve配置

地址位0 功能码3(可读写)代表温度
地址位1 功能码4 代表湿度
地址位2 功能码4 代表电量

  • 打开modbus salve 工具栏选择 connection->connect->选择tcp方式(图1)
  • 工具栏选择Setup->Slave Definition。配置地址位0(图3)
    • Slave id对应modbus.json中的devices.unitId
    • function对应modbus.json中的functionCode
    • address对应modbus.json中的address
    • quantity是连续读取地址的数量
  • 工具栏选择File->new 配置地址位1和2(图3)
  • 单击地址0的值选中自增长模拟温度升高(图4)
  • 启动tb-gateway
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

服务端RPC

规则链

确保设备的配置文件所配置的规则链中有图中红框部分(发送rpc可做消息格式验证等操作,图中省略)
在这里插入图片描述
body

{
  "method": "resetTemperature",
  "params": 10
}

规则链配置(信息读取与控制)

信息读取

此时tb设备中应该有手动创建的网关设备和modbus.json中配置自动注册到tb的modbus连接的设备TH_sensor
在这里插入图片描述
在这里插入图片描述

规则链 读取+控制

在这里插入图片描述

过滤节点 当温度大于40脚本内容

return msg.temperature > 40;

转换节点 构建rpc消息脚本内容 ,与老版本略有差异 (规则链rpc格式官网链接)

var request = {};
request.method = "resetTemperature";
request.params = 10;
return {msg: request, metadata: metadata, msgType: msgType};

最后调用动作节点 rpc call request即可发送rpc控制命令。
然后观察设备的遥测数据中的温度,每当超过40,五秒后被重置为10。

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: Thingsboard Modbus是一种用于连接Modbus设备的协议。它可以将Modbus设备的数据传输到Thingsboard平台上,以便进行数据分析和监控。Thingsboard Modbus支持多种Modbus协议,包括Modbus RTU、Modbus TCP和Modbus ASCII。它还提供了一些工具和API,以便用户可以轻松地将Modbus设备集成到Thingsboard平台上。 ### 回答2: Thingsboard Modbus是一种用于设备连接和数据采集应用程序的协议。它通过使用Modbus协议和TCP/IP通信协议来实现设备的数据采集和连接。Modbus是一种通信协议,用于连接工业设备和自动化系统,它是一种半双工的串行通信协议,可以有效地传输数据。 Thingsboard Modbus允许用户轻松地连接和管理他们的设备。通过使用Thingsboard Modbus,用户可以连接各种设备,如传感器、电机、PLC和机器人等。这使得用户能够以高效的方式收集设备数据,并能够使用这些数据来进行数据分析和预测性维护。 Thingsboard ModbusModbus寄存器映射为Thingsboard设备的属性和指标。这允许用户将设备数据直接应用于他们的设备和应用程序,而不需要进行任何额外的编码或解码。Thingsboard Modbus还提供了访问设备状态、读取设备状态和修改设备状态设置的API。 Thingsboard Modbus提供了一种简单、高效的方法来连接和管理工业设备和自动化系统,它适用于各种行业和应用,如制造业、能源、物流和运输等。它提供数据直观化和透明化,大大提高了设备监测和维护的效率和准确性。 ### 回答3: Thingsboard Modbus是一种工业物联网(IoT)领域的通信协议,它基于Modbus通信协议来实现设备的数据采集控制Modbus通信协议是一种简单且易于实现的串行通信协议,可应用于工业控制系统中的通信。Thingsboard Modbus可以对基于Modbus通信协议的设备进行无缝集成,使设备数据能通过Thingsboard平台进行可视化监控和故障诊断。 对于使用Thingsboard Modbus的用户来说,他们可以通过Thingsboard平台来管理和监测设备的数据,可以实时了解设备运行情况,可以进行设备的远程控制。同时,这种协议也可以让用户更加方便地使用各种开源Modbus库,提高设备的集成效率。 Thingsboard Modbus的特点包括:协议简单、实现容易、稳定性高;支持灵活的设备集成方式,可分别进行TCP和RTU通信;支持多种数据类型,如16位无符号整数、浮点数、布尔值等;支持开发者自定义功能码,可根据设备要求灵活定义读写寄存器的方式;支持多种设备状态显示等实用功能。 总体而言,Thingsboard Modbus是一种易于实现、稳定可靠的通信协议。随着物联网技术的发展和应用场景的不断扩大,Thingsboard Modbus将能够更加广泛地应用于各种工业控制设备和系统中,发挥更大的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fool_dawei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值