Skip to content

Modbus TCP 寄存器终端接入 ​

本文依据已有操作手册整理为线上操作参考。原文标为预期或未执行的操作,仍须按实际环境验证。

读取保持寄存器、远程单寄存器写入、独立读回及历史和恢复。

**开始前准备:**已登录并具备产品、设备、模型、发布、控制及历史查询权限;本地应用、单节点FMQ与FMQX网页版可用,设备地址和正式点表已确认

开始前先了解 ​

首次接入按配置章节操作;已有相同产品和设备时复用保留配置,从上报与收发验证开始。配置图与恢复示例保留原操作时点,当前复验另行核对。

本篇使用一台寄存器终端,完成Modbus TCP直连、读取保持寄存器、平台下发单寄存器写入、独立读回、历史刷新以及暂停后的恢复。适合支持原生Modbus TCP、能够监听TCP端口的设备。

蜂信物联(FastBee)平台负责产品、设备、控制与历史查询;FMQ是设备接入服务;FMQX网页版在本文扮演演示从站。它接收真实Modbus请求并改变内部寄存器,不能据此代替实物动作或现场设备安全验收。

需要已登录的账号,具有产品、设备、物模型编辑、发布、控制与历史查询权限。准备正式点表、设备可达IP与端口、站号及可写地址。新建独立产品演示,避免暂停同型号共享产品影响其他设备。

功能关系示意

配置与收发方向;不是运行截图。

复制模板前先替换这些参数 ​

本篇代码使用普通模板名;截图保留实际历史资源。请先完成以下核对,再保存为UTF-8文件或发送报文。

  • register_0等是点表模板标识;平台点表、映射、FMQX物模型中的identifier必须逐项相同。地址、站号与读写属性以现场正式点表为准。
  • 连接文件中的host、port及监听方向须改为当前环境实际地址;127.0.0.1表示运行FMQX的本机。涉及MQTT时同步核对产品号、用户名、订阅主题和responseRoute,密码仅在连接页面安全填写。
  • 分组、会话及订阅id是导入文件内部引用;如需改名,groupId必须与对应分组id一致。先核对再导入,不要在保留会话上重复创建同名连接。
  • 代码块是按既有无密码资产或原代码改写的客户模板,尚未证明本版模板已成功导入。历史截图、发送时间和业务通过范围仍以各步骤记录为准;不要将模板名当作旧证据中的实际资源名。

先核对连接方向与点表 ​

连接方向是FMQ主动连接设备;设备侧监听,本例为127.0.0.1:15020、站号1。设备换到其他电脑后,应填写FMQ能够访问的设备IP;不要把FMQ服务器IP错填成设备监听IP。

FC03表示读取保持寄存器,FC06表示写入单个保持寄存器。地址采用零基:参考号40001对应地址0,40101对应地址100。本篇地址0~9用于采集,地址100用于写入设定。

全部点使用UINT16、数量1、字节序BE、字序BE、倍率1、偏移0、轮询5000毫秒。UINT16范围是0~65535,本文没有单位;接入实物时由厂家点表决定类型、单位与倍率,不能把本文整数随意解释成温度。

本篇完整UTF-8采集点表csv

text
identifier,name,datatype,unit,registerarea,wiredatatype,byteorder,wordorder,functioncode,addressbase,startaddress,quantity,scale,offset,intervalms

register_0,采集点1,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,0,1,1,0,5000

register_1,采集点2,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,1,1,1,0,5000

register_2,采集点3,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,2,1,1,0,5000

register_3,采集点4,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,3,1,1,0,5000

register_4,采集点5,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,4,1,1,0,5000

register_5,采集点6,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,5,1,1,0,5000

register_6,采集点7,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,6,1,1,0,5000

register_7,采集点8,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,7,1,1,0,5000

register_8,采集点9,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,8,1,1,0,5000

register_9,采集点10,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,9,1,1,0,5000

register_100,写入设定,integer,,HOLDING_REGISTER,UINT16,BE,BE,3,0,100,1,1,0,5000

保存为CSV后,在接入向导的采集字段中导入;核对11个字段及零基地址。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

一、创建产品与设备 ​

1. 从新建产品开始 ​

**操作位置:*物联网→设备接入→*从哪里开始 操作步骤:选择 新建产品,填写产品名称 FastBee_寄存器终端。已有本篇资源复验时直接进入产品。

从新建产品开始

新建产品已选中;下方其他未完成记录不属于本篇,不点击继续接入。

截图重点说明 ​

字段 / 控件说明
接入来源新型号选新建产品;同型号已有产品可复用,不要重复创建。
必填 · 填写:新建产品
产品名称给这类寄存器设备取名。
必填 · 填写:FastBee_寄存器终端

2. 选择原生Modbus TCP ​

**操作位置:*设备接入向导→*产品与协议 操作步骤:在 协议 选择 Modbus TCP,确认传输方式为TCP。

选择原生Modbus TCP

本篇是FMQ主动连接设备的Modbus TCP,不是JSON/TCP或RTU透传。

截图重点说明 ​

字段 / 控件说明
协议本篇选择原生Modbus TCP直连。
必填 · 填写:Modbus TCP
传输方式本场景使用TCP连接,随协议确定。
必填 · 填写:TCP

3. 填写设备监听地址与站号 ​

**操作位置:*设备接入向导→*添加设备 操作步骤:填写本篇设备标识,设备IP地址 为 127.0.0.1,端口15020、从站地址1。

填写设备监听地址与站号

这组地址由设备提供;只有设备和FMQ在同一台电脑时才填127.0.0.1。

截图重点说明 ​

字段 / 控件说明
设备标识平台设备编号;绑定时选择这一台设备,不是在Modbus报文中额外写编号。
必填 · 填写:FastBee_ModbusTCP_Tutorial_01
设备名称列表中识别当前终端的业务名称。
必填 · 填写:FastBee_寄存器终端
设备IP地址填写被FMQ主动连接的设备地址。此例设备与FMQ同机。
必填 · 填写:127.0.0.1
端口设备端监听端口,与FMQX配置一致。
必填 · 填写:15020
从站地址同一设备连接中的站号,也叫Unit ID。
必填 · 填写:1

4. 核对采集字段与接入概况 ​

**操作位置:*设备接入向导→*接入确认 **操作步骤:**核对接入概况为本篇产品、Modbus TCP、1台设备 和 11个采集字段。

核对采集字段与接入概况

此图为接入概况,11个属性对应点表地址0~9及100;字段数不是十个可区分样本的替代。

截图重点说明 ​

字段 / 控件说明
采集字段导入下方UTF-8点表,检查11个字段与零基地址。
必填 · 填写:地址0~9及100,共11个
设备标识平台设备编号;绑定时选择这一台设备,不是在Modbus报文中额外写编号。
必填 · 填写:FastBee_ModbusTCP_Tutorial_01
协议本篇选择原生Modbus TCP直连。
必填 · 填写:Modbus TCP

二、核对绑定、轮询和映射 ​

5. 核对本设备的站号绑定 ​

**操作位置:*产品管理→寄存器终端→协议设置→*设备绑定 操作步骤:核对绑定设备标识与本篇一致,Unit ID 为 1,保持启用。

核对本设备的站号绑定

截图为当前真实绑定;本篇停止轮询使用取消发布,不以关闭绑定开关作为成功停机路径。

截图重点说明 ​

字段 / 控件说明
绑定设备选择本篇设备,避免点表落在另一台同名终端。
必填 · 填写:FastBee_寄存器终端
Unit ID绑定站号必须与从站一致。
必填 · 填写:1
启用本篇绑定、轮询范围和点位映射保持启用。
必填 · 填写:开启

6. 核对FC03轮询范围 ​

**操作位置:*产品管理→寄存器终端→协议设置→*轮询范围 **操作步骤:**按字段逐项核对保持寄存器、功能码3、零基地址及数量1,轮询间隔 5000 毫秒。

核对FC03轮询范围

示例行为地址0,随后为数量1、间隔5000、超时3000、重试0、优先级0;其余点按完整点表。当前窄图缺列标题,待补采标题区域。

截图重点说明 ​

字段 / 控件说明
寄存器区域本篇全部使用保持寄存器。
必填 · 填写:HOLDING_REGISTER
读取功能码FC03表示读取保持寄存器。
必填 · 填写:3(FC03)
起始地址/零基地址地址0对应参考号40001,地址100对应40101;不要把40001直接填为零基地址。
必填 · 填写:0~9;写入设定100
数量每个UINT16占用1个16位寄存器。
必填 · 填写:1
轮询间隔每个点约每5秒读取一次,单位毫秒。
必填 · 填写:5000
超时本篇等待设备响应最长3000毫秒。
必填 · 填写:3000
最大重试本篇配置0,不自动增加重试轮次。
必填 · 填写:0
优先级本篇所有读取范围使用相同优先级。
必填 · 填写:0

7. 核对地址100的整数映射 ​

**操作位置:*产品管理→寄存器终端→协议设置→*点位映射 操作步骤:核对写入设定地址 100,类型 UINT16,字节序和字序均为BE,倍率1、偏移0。

核对地址100的整数映射

实际保存值为UINT16/BE/BE,枚举映射留空;不要沿用旧BIG_ENDIAN填写值。当前行缺列标题,待补采。

截图重点说明 ​

字段 / 控件说明
起始地址/零基地址地址0对应参考号40001,地址100对应40101;不要把40001直接填为零基地址。
必填 · 填写:0~9;写入设定100
数量每个UINT16占用1个16位寄存器。
必填 · 填写:1
寄存器数据类型UINT16表示无符号16位整数,0~65535。
必填 · 填写:UINT16
字节序平台填BE,FMQX导入配置中的BigEndian表达同一方向。
必填 · 填写:BE
字序本篇UINT16只占一个字;保持BE,与点表一致。
必填 · 填写:BE
倍率展示值=原始寄存器值×倍率+偏移,本篇不缩放。
必填 · 填写:1
偏移本篇不增加固定偏移。
必填 · 填写:0
枚举映射本篇为普通整数,不配置枚举映射。
选填 · 填写:留空

绑定通过平台设备标识关联这台终端,Modbus请求本身使用站号和寄存器地址。各地址不能互相套用;保存后重新发布,接入侧生效后才继续。

三、启动FMQX演示从站 ​

在FMQX网页版导入下方JSON到直连教程分组,选择寄存器终端。已有保存会话复验时直接复用,避免重新导入造成同名会话。此配置自动重连关闭。

FMQX网页版完整从站配置json

text
{

  "schemaVersion": 3,

  "groups": [

    {

      "id": "tutorial_modbus_tcp_group",

      "name": "直连教程",

      "sortOrder": 52,

      "isSystem": false

    }

  ],

  "sessions": [

    {

      "id": "tutorial_modbus_tcp_01",

      "groupId": "tutorial_modbus_tcp_group",

      "name": "寄存器终端",

      "protocol": "ModbusTCP",

      "transport": "TCP",

      "host": "127.0.0.1",

      "port": 15020,

      "unitId": 1,

      "autoReconnect": false,

      "modbusThingModels": [

        {

          "modelName": "采集点1",

          "identifier": "register_0",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 101,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 0,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点2",

          "identifier": "register_1",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 102,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 1,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点3",

          "identifier": "register_2",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 103,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 2,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点4",

          "identifier": "register_3",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 104,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 3,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点5",

          "identifier": "register_4",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 105,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 4,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点6",

          "identifier": "register_5",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 106,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 5,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点7",

          "identifier": "register_6",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 107,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 6,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点8",

          "identifier": "register_7",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 108,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 7,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点9",

          "identifier": "register_8",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 109,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 8,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "采集点10",

          "identifier": "register_9",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": true,

          "initialValue": 110,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 9,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        },

        {

          "modelName": "写入设定",

          "identifier": "register_100",

          "type": 1,

          "dataType": "Integer",

          "isReadonly": false,

          "initialValue": 0,

          "mapping": {

            "dataArea": "HoldingRegisters",

            "address": 100,

            "length": 1,

            "wireFormat": "UInt16",

            "byteOrder": "BigEndian",

            "wordOrder": "HighWordFirst",

            "scale": 1,

            "offset": 0

          }

        }

      ]

    }

  ]

}

另存为UTF-8 JSON后导入;此例为演示从站,监听地址与平台设备地址必须对应。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

8. 在FMQX启动演示从站 ​

**操作位置:*FMQX网页版→直连教程→*寄存器终端 **操作步骤:**导入下方配置,点击 连接 启动从站监听,确认 已连接。

在FMQX启动演示从站

FMQX演示从站监听127.0.0.1:15020、站号1;FMQ从外部主动连接。顶部提示遮住部分右侧按钮,待补采无遮挡区域。

截图重点说明 ​

字段 / 控件说明
导入配置把下方UTF-8 JSON导入FMQX网页版,保存到直连教程分组。
必填 · 填写:Modbus TCP从站,11个属性
连接/断开FMQX在此场景扮演从站设备,连接按钮启动监听,FMQ主动来连接。
必填 · 填写:127.0.0.1:15020;Unit ID 1

四、读取十个可区分样本 ​

下列201至210是原完整十样本操作图;最近一次独立复验使用91至100,设备与历史保留。复验需选新时间窗,不能把寄存器点数当成样本次数。

9. 给地址0写入第一个演示样本 ​

**操作位置:*FMQX网页版→物模型参数→*地址0 **操作步骤:**编辑地址0的当前值为 201,点击输入框旁的 勾号,等待至少一个5秒轮询周期。

给地址0写入第一个演示样本

这是在FMQX演示设备内部修改寄存器,随后由FMQ读取;不是从平台直接改实时值。

截图重点说明 ​

字段 / 控件说明
当前值编辑在地址0一行编辑设备内寄存器值,点击勾号保存,等待FMQ轮询。
必填 · 填写:依次201~210
起始地址/零基地址地址0对应参考号40001,地址100对应40101;不要把40001直接填为零基地址。
必填 · 填写:0~9;写入设定100
轮询间隔每个点约每5秒读取一次,单位毫秒。
必填 · 填写:5000

10. 依次产生十个不同样本 ​

**操作位置:*FMQX网页版→*物模型参数 **操作步骤:**按同样方法依次保存 202~210;每次等待平台读到上一值再继续。

依次产生十个不同样本

地址0最终为210;其余采集点保持102~110。十样本来自同一地址逐次变化,不是把十个字段算作十条数据。

截图重点说明 ​

字段 / 控件说明
当前值编辑在地址0一行编辑设备内寄存器值,点击勾号保存,等待FMQ轮询。
必填 · 填写:依次201~210
轮询间隔每个点约每5秒读取一次,单位毫秒。
必填 · 填写:5000
地址0采样当前值核对地址0每次保存后的实际值;本步完成后应为210。
必填 · 填写:202~210,最终210 · 示例:地址0最终210

依次把地址0改为201~210,每次保存后等待至少一个轮询周期并核对平台当前值;速度过快时中间值可能还未被读取就被下一值覆盖。地址1~9保持102~110。

同一个值被后续轮询再次读到是正常现象。检查一次处理应使用每次读取的独立记录,不要把相同数值的不同轮询误判为重复。最后通过历史页核对十个值,不用字段数量代替样本数量。

五、配置可写属性并发布 ​

11. 撤回发布以编辑写入属性 ​

**操作位置:*产品管理→寄存器终端→*取消发布 操作步骤:确认当前是本篇独立产品,点击 取消发布 并在提示中选择 确定。

撤回发布以编辑写入属性

提示会影响该产品设备及重新发布后的对应缓存数据;历史存储记录不在本篇删除范围内。共享产品操作前应先安排影响窗口。

截图重点说明 ​

字段 / 控件说明
取消发布停止本产品运行配置,或允许修改物模型;会影响本产品全部设备。
必填 · 填写:本篇独立产品

12. 把地址100配置为可写并核对保存 ​

**操作位置:*产品管理→寄存器终端→功能定义→*写入设定 操作步骤:填写模型翻译 RegisterSetpoint,取消 只读数据,开启历史存储,完成表单后保存。

把地址100配置为可写并核对保存

模型翻译非空才会提交;写入设定只读关闭、历史开启,整数范围0~65535、步长1、单位空,保存后重新打开核对。

截图重点说明 ​

字段 / 控件说明
模型翻译必填英文名称,留空会阻止保存。
必填 · 填写:RegisterSetpoint
模型标识写入设定须与地址100的点位映射使用相同标识。
必填 · 填写:FastBee_register_100
模型类别寄存器当前值是属性。
必填 · 填写:属性
只读数据采集点0~9只读;写入设定取消只读。
必填 · 填写:写入设定不勾选
历史存储开启后把后续采集到的实际值写入历史。
必填 · 填写:勾选
图表展示/实时监测写入设定在本篇均不勾选,保留运行状态控制入口。
必填 · 填写:均不勾选
分享权限本篇不开放分享,按所在租户权限使用。
必填 · 填写:不勾选
整数范围与步长UINT16设定范围0~65535,步长1,单位留空。
必填 · 填写:0~65535;步长1

13. 发布已保存的点表与物模型 ​

**操作位置:*产品管理→寄存器终端→*发布产品 **操作步骤:**核对参数后点击 发布产品,在确认框选择 确定。

发布已保存的点表与物模型

保存和发布是两个动作;本图只表示确认发布,下一步继续核对接入侧生效结果。

截图重点说明 ​

字段 / 控件说明
发布产品保存配置后重新发布;仅保存不表示已经生效。
必填 · 填写:确认发布

14. 确认接入配置实际生效 ​

**操作位置:*产品管理→寄存器终端→*接入配置同步 **操作步骤:**展开同步结果,确认目标节点 APPLIED 且失败原因为空。

确认接入配置实际生效

本次完整发布已经在接入节点应用;仍需继续做设备读取、下行和历史验证。

截图重点说明 ​

字段 / 控件说明
接入配置同步结果APPLIED表示目标接入节点已应用本次配置。
必填 · 填写:APPLIED

写入设定的模型翻译填RegisterSetpoint,标识对应地址100。只读关闭、历史开启,图表展示和实时监测在本例均关闭;这些展示选项会联动只读,保存后重新打开核对。整数范围0~65535、步长1、单位留空。

模型翻译留空时前端会阻止保存,看见弹窗关闭或点过按钮不能代替保存成功。完成保存、重新打开核对、发布并确认APPLIED,之后才发送写入。

六、暂停并恢复收发 ​

15. 暂停本轮收发并保留资源 ​

**操作位置:*产品管理/FMQX网页版→*寄存器终端 操作步骤:先取消发布并确认接入侧停止,再在FMQX点击 断开,确认 已断开。

暂停本轮收发并保留资源

此图对应恢复前的暂停阶段,产品、设备、点表与历史保留;单独关闭绑定的保存没有成功。

截图重点说明 ​

字段 / 控件说明
保留与再次验收结束取消发布并断开FMQX;保留产品、设备、点表、会话和历史。
必填 · 填写:最终取消发布;从站已断开
取消发布停止本产品运行配置,或允许修改物模型;会影响本产品全部设备。
必填 · 填写:本篇独立产品
连接/断开FMQX在此场景扮演从站设备,连接按钮启动监听,FMQ主动来连接。
必填 · 填写:127.0.0.1:15020;Unit ID 1

16. 恢复产品发布 ​

**操作位置:*产品管理→寄存器终端→*发布产品 操作步骤:重新点击 发布产品 并确认,待同步结果APPLIED后继续。

恢复产品发布

恢复发布重新启用这台独立设备的运行配置,不能只看到确认框就认定恢复成功。

截图重点说明 ​

字段 / 控件说明
接入配置同步结果APPLIED表示目标接入节点已应用本次配置。
必填 · 填写:APPLIED
发布产品保存配置后重新发布;仅保存不表示已经生效。
必填 · 填写:确认发布

17. 恢复FMQX从站监听 ​

**操作位置:*FMQX网页版→直连教程→*寄存器终端 **操作步骤:**选择保留会话点击 连接,确认 已连接,等待FC03重新读取。

恢复FMQX从站监听

恢复同一站号、IP和端口;连接方向仍为FMQ主动连接FMQX从站。

截图重点说明 ​

字段 / 控件说明
保留与再次验收结束取消发布并断开FMQX;保留产品、设备、点表、会话和历史。
必填 · 填写:最终取消发布;从站已断开
连接/断开FMQX在此场景扮演从站设备,连接按钮启动监听,FMQ主动来连接。
必填 · 填写:127.0.0.1:15020;Unit ID 1

本篇暂停通过取消发布独立产品并断开FMQX完成,随后重新发布至APPLIED再恢复监听。同一个端口不可启动两个演示从站。地址和站号保持一致,恢复后继续读取再发送新指令。

当前版本单独关闭本设备绑定再保存被拒绝,不能把它写成已成功暂停的操作。取消发布会影响该产品全部设备,因此此例使用独立产品。

七、写43并确认独立读回 ​

本段图示为原完整写43并独立读回的操作。最近一次按同一路径写45,也已由FC06真实请求、设备回显、后续独立FC03及实际历史核对;两次使用不同时间窗口。

18. 通过运行状态正式写入43 ​

**操作位置:*设备管理→寄存器终端→运行状态→*设备控制 操作步骤:聚焦写入设定滑块,用方向键微调至提示值 43,立即核对后点击 纸飞机。

通过运行状态正式写入43

图中平台当前值仍为42,而滑块待发值为43;发送前以tooltip为准。周期轮询可能覆盖待发值,不要按滑块大致位置猜值。

截图重点说明 ​

字段 / 控件说明
写入设定滑块先聚焦滑块,用方向键微调;发送前核对tooltip为43,点击纸飞机发送。
必填 · 填写:43
整数范围与步长UINT16设定范围0~65535,步长1,单位留空。
必填 · 填写:0~65535;步长1

19. 确认演示设备真实接受写入 ​

**操作位置:*FMQX网页版→物模型参数→*地址100 **操作步骤:**找到零基地址100,确认 当前值43 和新的最后变化时间。

确认演示设备真实接受写入

FMQX演示从站地址100在00:56:22变为43,使用FC06单寄存器写入;这一步核对设备侧真实状态。

截图重点说明 ​

字段 / 控件说明
设备寄存器当前值下行后检查地址100实际值及最后变化时间。
必填 · 填写:43
起始地址/零基地址地址0对应参考号40001,地址100对应40101;不要把40001直接填为零基地址。
必填 · 填写:0~9;写入设定100
Unit ID绑定站号必须与从站一致。
必填 · 填写:1

20. 等待独立FC03读回平台 ​

**操作位置:*设备管理→寄存器终端→*运行状态 **操作步骤:**等待后续轮询,再刷新详情,确认 当前值 为 43。

等待独立FC03读回平台

当前43来自后续FC03读取,并非只依据下发提示;实际首个读回发生在00:56:25。

截图重点说明 ​

字段 / 控件说明
平台当前值当前值来自后续独立FC03读取;不能用滑块待发值或已派发提示代替。
必填 · 填写:43
轮询间隔每个点约每5秒读取一次,单位毫秒。
必填 · 填写:5000

本例正式控制主线是写43:发送前平台当前值42、滑块提示43;FMQX地址100随后变43;接入服务下一轮FC03再读回43,平台当前值随之更新。

不要只看到“已派发”就认定设备执行。依次核对设备实际寄存器、后续独立读回、平台当前值和历史。滑块范围较宽时先聚焦再用方向键微调,发送前再看提示值;轮询刷新可能覆盖尚未发送的滑块值。

八、查询历史并刷新确认 ​

21. 选择设备字段和历史时段 ​

**操作位置:*数据中心→*历史数据 **操作步骤:**选择本篇设备及 写入设定,时间范围覆盖指令前后,再点击 查询。

选择设备字段和历史时段

查看写42过渡时选择00:43:45~00:44:15;查看正式写43选择00:56:15~00:56:40。

截图重点说明 ​

字段 / 控件说明
历史设备与字段选择本篇设备和写入设定,避免查询同名其他设备。
必填 · 填写:本篇设备/写入设定
历史时间范围按设备输入及指令时间选择;本篇记录发生在2026-10-13。
必填 · 填写:00:43:45~00:44:15;00:56:15~00:56:40
查询/刷新刷新后重新选择相同设备、字段和时间范围,再查询。
必填 · 填写:查询后仍能看到43

22. 刷新重查写43后的实际历史 ​

**操作位置:*数据中心→*历史数据 操作步骤:刷新后重新选择相同设备、字段和43时间窗口,点击 查询,核对 42→43。

刷新重查写43后的实际历史

00:56:20仍为42,00:56:25起为43;刷新重查后记录仍存在。旧写42也有独立读回与历史,正式控制主例使用本节43。

截图重点说明 ​

字段 / 控件说明
历史时间范围按设备输入及指令时间选择;本篇记录发生在2026-10-13。
必填 · 填写:00:43:45~00:44:15;00:56:15~00:56:40
平台当前值当前值来自后续独立FC03读取;不能用滑块待发值或已派发提示代替。
必填 · 填写:43
查询/刷新刷新后重新选择相同设备、字段和时间范围,再查询。
必填 · 填写:查询后仍能看到43

历史选择本篇设备和写入设定:00:56:20仍为42,00:56:25开始为43。刷新页面后重新选择相同字段和时间范围,再查一次,记录应仍存在。

较早写42的独立读回在00:44:00,查询00:43:45~00:44:15可见30转42;这一段是历史过渡,写入准备操作以本篇43流程为准。查看十样本时切换采集点1并选00:17~00:21。

重新验收会增加历史,按新的起止时间核对。实际存储按每次读取记录保存,页面按秒显示;界面行数不能替代逐条消息核对。

九、结束与再次验收 ​

23. 结束收发并保留设备与历史 ​

**操作位置:*产品管理/FMQX网页版→寄存器终端→*统计 操作步骤:先撤回产品发布以停止轮询,再停止FMQX从站监听,确认已断开。

结束收发并保留设备与历史

结束收发并保留设备与历史

截图重点说明 ​

字段 / 控件说明
保留与再次验收结束取消发布并断开FMQX;保留产品、设备、点表、会话和历史。
必填 · 填写:最终取消发布;从站已断开
取消发布停止本产品运行配置,或允许修改物模型;会影响本产品全部设备。
必填 · 填写:本篇独立产品
连接/断开FMQX在此场景扮演从站设备,连接按钮启动监听,FMQ主动来连接。
必填 · 填写:127.0.0.1:15020;Unit ID 1

完成后取消发布本篇独立产品,等待接入配置停止生效,再断开FMQX从站。保留产品、设备、物模型、点表、分组会话和全部历史,不删除或清空数据。

本篇结束时产品已取消发布,FMQX已断开。再次验收先恢复发布并确认APPLIED,再连接保存的从站会话,确认FC03重新读取后才写入新值。不要因为页面还保留43就误以为连接仍在运行。

记录新的开始时间,在地址0依次产生至少十个不同值,下发允许范围内的新目标,核对设备寄存器、独立读回、实时和历史,刷新重查,再做一次暂停恢复。结束继续取消发布并断开,保留资源供复验。

字段与参数参考 ​

设备接入向导 ​

字段 / 控件填写说明
接入来源新型号选新建产品;同型号已有产品可复用,不要重复创建。
必填 · 填写:新建产品已有产品:复用同型号配置添加设备;复用同型号配置添加设备。新建产品:创建本篇独立型号;创建本篇独立型号。复制产品:从同类产品复制后调整;从同类产品复制后调整。使用模板:从已有模板开始;从已有模板开始。
产品名称给这类寄存器设备取名。
必填 · 填写:FastBee_寄存器终端
协议本篇选择原生Modbus TCP直连。
必填 · 填写:Modbus TCPModbus TCP:运行服务主动连接设备,并按点表轮询;运行服务主动连接设备,并按点表轮询。
传输方式本场景使用TCP连接,随协议确定。
必填 · 填写:TCP
设备标识平台设备编号;绑定时选择这一台设备,不是在Modbus报文中额外写编号。
必填 · 填写:FastBee_ModbusTCP_Tutorial_01
设备名称列表中识别当前终端的业务名称。
必填 · 填写:FastBee_寄存器终端
设备IP地址填写被FMQ主动连接的设备地址。此例设备与FMQ同机。
必填 · 填写:127.0.0.1
端口设备端监听端口,与FMQX配置一致。
必填 · 填写:15020
从站地址同一设备连接中的站号,也叫Unit ID。
必填 · 填写:1
采集字段导入下方UTF-8点表,检查11个字段与零基地址。
必填 · 填写:地址0~9及100,共11个

Modbus协议设置 ​

字段 / 控件填写说明
绑定设备选择本篇设备,避免点表落在另一台同名终端。
必填 · 填写:FastBee_寄存器终端
修改后须发布。本篇寄存器终端:使用设备标识一致的本设备;使用设备标识一致的本设备。
Unit ID绑定站号必须与从站一致。
必填 · 填写:1
修改后须发布。
启用本篇绑定、轮询范围和点位映射保持启用。
必填 · 填写:开启
修改后须发布。开启:参与本设备运行配置;参与本设备运行配置。关闭:本篇单独关闭绑定保存被拒绝;停止流程使用取消发布;本篇单独关闭绑定保存被拒绝;停止流程使用取消发布。
寄存器区域本篇全部使用保持寄存器。
必填 · 填写:HOLDING_REGISTER
修改后须发布。HOLDING_REGISTER:保存16位寄存器,使用FC03读取;保存16位寄存器,使用FC03读取。
读取功能码FC03表示读取保持寄存器。
必填 · 填写:3(FC03)
修改后须发布。
起始地址/零基地址地址0对应参考号40001,地址100对应40101;不要把40001直接填为零基地址。
必填 · 填写:0~9;写入设定100
修改后须发布。
数量每个UINT16占用1个16位寄存器。
必填 · 填写:1
修改后须发布。
轮询间隔每个点约每5秒读取一次,单位毫秒。
必填 · 填写:5000
修改后须发布。
超时本篇等待设备响应最长3000毫秒。
必填 · 填写:3000
修改后须发布。
最大重试本篇配置0,不自动增加重试轮次。
必填 · 填写:0
修改后须发布。
优先级本篇所有读取范围使用相同优先级。
必填 · 填写:0
修改后须发布。
寄存器数据类型UINT16表示无符号16位整数,0~65535。
必填 · 填写:UINT16
修改后须发布。UINT16:占用一个寄存器的非负整数;占用一个寄存器的非负整数。
字节序平台填BE,FMQX导入配置中的BigEndian表达同一方向。
必填 · 填写:BE
修改后须发布。BE:高字节在前;高字节在前。LE:低字节在前,只有厂家点表明确要求才选;低字节在前,只有厂家点表明确要求才选。
字序本篇UINT16只占一个字;保持BE,与点表一致。
必填 · 填写:BE
修改后须发布。BE:高字在前;本篇单寄存器保持此项;高字在前;本篇单寄存器保持此项。LE:低字在前,多寄存器数值须按厂家资料选用;低字在前,多寄存器数值须按厂家资料选用。
倍率展示值=原始寄存器值×倍率+偏移,本篇不缩放。
必填 · 填写:1
修改后须发布。
偏移本篇不增加固定偏移。
必填 · 填写:0
修改后须发布。
枚举映射本篇为普通整数,不配置枚举映射。
选填 · 填写:留空
修改后须发布。

产品功能定义 ​

字段 / 控件填写说明
模型翻译必填英文名称,留空会阻止保存。
必填 · 填写:RegisterSetpoint
修改后须发布。
模型标识写入设定须与地址100的点位映射使用相同标识。
必填 · 填写:FastBee_register_100
修改后须发布。
模型类别寄存器当前值是属性。
必填 · 填写:属性
修改后须发布。属性:保存设备当前读数或可写设定;保存设备当前读数或可写设定。功能:独立功能调用,本篇不用;独立功能调用,本篇不用。事件:设备主动事件,本篇不用;设备主动事件,本篇不用。
只读数据采集点0~9只读;写入设定取消只读。
必填 · 填写:写入设定不勾选
修改后须发布。勾选:只展示,不提供本篇写入控制;只展示,不提供本篇写入控制。不勾选:允许按权限发送写入指令;允许按权限发送写入指令。
历史存储开启后把后续采集到的实际值写入历史。
必填 · 填写:勾选
修改后须发布。勾选:保存后续采集历史;保存后续采集历史。不勾选:不能按本文核对后续历史;不能按本文核对后续历史。
图表展示/实时监测写入设定在本篇均不勾选,保留运行状态控制入口。
必填 · 填写:均不勾选
修改后须发布。勾选:展示方式会与只读设置联动,需重查只读;展示方式会与只读设置联动,需重查只读。不勾选:本篇写入设定采用的展示方式;本篇写入设定采用的展示方式。
分享权限本篇不开放分享,按所在租户权限使用。
必填 · 填写:不勾选
修改后须发布。勾选:是否开放分享由租户业务决定;是否开放分享由租户业务决定。不勾选:维持本篇当前权限范围;维持本篇当前权限范围。
整数范围与步长UINT16设定范围0~65535,步长1,单位留空。
必填 · 填写:0~65535;步长1
修改后须发布。

发布与生效 ​

字段 / 控件填写说明
取消发布停止本产品运行配置,或允许修改物模型;会影响本产品全部设备。
发布产品保存配置后重新发布;仅保存不表示已经生效。
接入配置同步结果APPLIED表示目标接入节点已应用本次配置。
必填 · 填写:APPLIED

FMQX网页版从站 ​

字段 / 控件填写说明
导入配置把下方UTF-8 JSON导入FMQX网页版,保存到直连教程分组。
修改后须重连。
连接/断开FMQX在此场景扮演从站设备,连接按钮启动监听,FMQ主动来连接。
修改后须重连。
当前值编辑在地址0一行编辑设备内寄存器值,点击勾号保存,等待FMQ轮询。
必填 · 填写:依次201~210
修改后须重连。
设备寄存器当前值下行后检查地址100实际值及最后变化时间。
必填 · 填写:43
修改后须重连。
地址0采样当前值核对地址0每次保存后的实际值;本步完成后应为210。
必填 · 填写:202~210,最终210
修改后须重连。

设备运行状态 ​

字段 / 控件填写说明
写入设定滑块先聚焦滑块,用方向键微调;发送前核对tooltip为43,点击纸飞机发送。
必填 · 填写:43
平台当前值当前值来自后续独立FC03读取;不能用滑块待发值或已派发提示代替。
必填 · 填写:43

平台历史数据 ​

字段 / 控件填写说明
历史设备与字段选择本篇设备和写入设定,避免查询同名其他设备。
必填 · 填写:本篇设备/写入设定
历史时间范围按设备输入及指令时间选择;本篇记录发生在2026-10-13。
必填 · 填写:00:43:45~00:44:15;00:56:15~00:56:40
查询/刷新刷新后重新选择相同设备、字段和时间范围,再查询。

暂停、恢复与保留 ​

字段 / 控件填写说明
保留与再次验收结束取消发布并断开FMQX;保留产品、设备、点表、会话和历史。
必填 · 填写:最终取消发布;从站已断开

遇到问题时先查哪里 ​

看到什么现象可能原因先检查哪里如何恢复
设备连不上或FC03始终超时连接方向、设备IP端口、监听或站号不符。设备作为从站监听,FMQ主动连接;检查15020、站号1和本机地址的适用范围。修正并保存发布,确认APPLIED和从站监听后先读一个点。
值偏移一位或读到别的寄存器把参考号40001当作零基地址,或绑定错设备。参考号40001→0,40101→100;核对设备标识与Unit ID。停止写入,按厂家点表修正地址并重新发布。
数值反常、倍率或单位不对类型、字节序、字序、倍率或偏移与设备点表不符。本例UINT16、BE/BE、倍率1、偏移0、无单位;平台字节序保存值用BE。按正式点表修正;先读取已知值,再开放写入。
改了只读或范围却没有保存模型翻译等必填项为空,或保存后未发布。写入设定翻译非空、只读关闭、历史开启;重新打开表单核对保存值。补齐RegisterSetpoint等字段,保存、发布并确认APPLIED。
滑块想发43却发了旧值宽范围拖动不精确,或轮询覆盖了待发值。区分平台当前值和滑块tooltip;发送前再次核对43。聚焦滑块用方向键微调,确认后立即发送,勿连续点击纸飞机。
已派发或响应回显正确,但不确定设备执行派发提示和FC06回显不足以证明设备最终状态。看FMQX地址100实际值,再等待独立FC03读回,核对实时和历史。未读回时停止重复下发,保留时间和现有状态后检查设备应答。
命令生成器或旧原始发送提示迁移当前两个旧调试入口不可用,返回不支持。本篇使用设备运行状态中的正式服务滑块控制,不依赖旧生成器或原始发送。回到运行状态控制区,按43流程下发并独立读回。
关闭唯一设备绑定后保存失败本篇该保存路径被配置校验拒绝。不要将绑定关闭当作已生效;查看接入同步实际结果。本独立产品使用取消发布并断开从站;恢复时重新发布与连接。
十个值只看到几个改值快于5秒轮询,后值覆盖了还未读取的前值。每个值保存后等平台读到,再改下一值;历史选采集点1。用新的可区分数值逐个重测,保留原历史。
实时有43但历史或刷新后查不到历史开关、设备、字段、日期或查询窗口不对。写入设定历史开启,日期2026-10-13,时间覆盖00:56:25及其后。修正条件再查询;新启用历史只保证后续采集,不自动补旧记录。
结束后仍看到旧值,以为轮询未停平台保留最后当前值和历史,展示旧值不表示正在收发。核对取消发布同步结果、FMQX断开状态和更新时间是否继续变化。确需恢复时重新发布至APPLIED再连接;不删除历史来清理页面。

蜂信物联 | fastbee.cn