Skip to content

Modbus TCP Server

注意:Modbus TCP Server 功能只在 TKG(网关运行 TKL)和 TKE(边缘侧服务器)中支持,云平台不支持此功能。

ThinkLink 内置 Modbus TCP Server,可将设备的遥测数据、属性暴露为 Modbus 寄存器,供 SCADA、HMI 等工业系统以标准 Modbus TCP 协议读取。同时,第三方系统向寄存器写值时,ThinkLink 可自动触发绑定的 RPC 向下游设备下发指令,实现双向联动。

数据流向

ThinkLink 设备上报遥测 / 属性变更

Modbus 寄存器自动更新
        ↑(读寄存器)
SCADA / HMI / PLC(Modbus TCP Client)
        ↓(写寄存器)
ThinkLink 触发绑定的 RPC → 下发指令给 IoT 设备

配置步骤

第一步:启动 Modbus TCP Server

  1. 进入系统服务(System Services)
  2. 找到 Modbus TCP Server 条目,点击配置
  3. 填写监听端口(默认 502)和所属租户
  4. 点击启动

注意:每个租户只能运行一个 Modbus TCP Server 实例。同一时刻只有一个租户的服务处于 RUNNING 状态。如需为多个租户提供 Modbus 访问,需分别为各租户启动独立的服务实例(监听不同端口)。

第二步:在设备上启用 Modbus 映射

设备管理中打开目标设备的配置详情:

  1. 切换到基本信息 Tab
  2. modbus_tcp 开关设为 TRUE
  3. 保存设备配置

只有启用了 modbus_tcp 的设备,其数据才会被映射到寄存器地址空间。

第三步:配置寄存器映射

进入运维管理 → Modbus TCP寄存器列表,为已启用的设备添加寄存器映射条目:

配置项说明
设备 EUI选择要映射数据的目标设备
寄存器类型coils(线圈,1 bit 读写)/ discrete_inputs(离散输入,1 bit 只读)/ holding_registers(保持寄存器,16 bit 读写)/ input_registers(输入寄存器,16 bit 只读)
寄存器地址十六进制地址;ThinkLink 自动检测冲突,同一类型内地址不可重复
数据来源映射到设备的哪个数据源:telemetry_data(遥测数据)/ shared_attrs(共享属性)/ server_attrs(服务端属性)
字段路径(name_path具体字段名,支持多级路径,如 temperaturesensor.value
数值类型boolean / string / number
RPC 绑定可选。绑定后,当 Modbus Client 该寄存器时,ThinkLink 自动触发指定 RPC 向设备下发指令

读写行为说明

  • Client 读取寄存器时,ThinkLink 返回该寄存器映射的设备字段当前值
  • 值在设备每次上报数据后自动更新,无需额外配置轮询
  • Client 写寄存器,该寄存器必须绑定了 RPC
  • ThinkLink 收到写操作后,自动以写入值作为参数调用绑定的 RPC
  • RPC 将指令通过 LoRaWAN 或 MQTT 下发给设备

典型用途:SCADA 系统通过写 holding_registers 修改设备的采样间隔,ThinkLink 触发"设置采样间隔"RPC 下发到设备。

导出点表

Modbus 点表(寄存器地址映射表)可以导出为 Excel,用于交付给第三方系统集成商,也可从 Excel 导入批量配置。

  1. 在 Modbus 寄存器列表页点击"导出",下载当前所有寄存器映射
  2. 按需修改后点击"导入"批量写入(已存在 ID 的条目会被覆盖更新)

在正式部署前,通常需要将点表提供给 BMS/SCADA 的集成商,以便对方配置 Modbus Client 的点位地址。ThinkLink 的导出文件包含对象类型、地址、名称、描述、数据类型、单位、读写权限等完整信息。

相关文档

  • 在物模型中配置 BACnet 字段 → BACnet
  • 设备开启 modbus_tcp 开关 → 设备管理