Skip to content

3.4 方式三:云组态直连设备寄存器 ​

前面三种方式都是「数据先进实时数据库,画面再从数据库取」。这一种不一样:云组态画面直接读写 PLC 寄存器,不经过实时数据库。

配置最快:设备端无需任何配置,在画面上选定寄存器即可显示和控制。代价是没有历史、没有报警。

3.4.1 变量前缀体系 ​

云组态里变量名的第一个字符决定它从哪来:

前缀类型数据来源通道
无前缀项目变量服务器实时数据库的数据点WebSocket 推送 + HTTP 轮询兜底
@设备变量直接读写 PLC 寄存器HTTP 轮询,不落库
#MQTT 变量浏览器直连 MQTT Broker 的 TopicMQTT
$内部变量画面本地变量,脚本用不与服务器交互

本节讲 @。项目变量见方式一到方式三;MQTT 变量见 5.7 云组态 MQTT 变量。

3.4.2 语法 ​

@设备ID.寄存器.数据类型

例如 @25733508.D100.S16 表示读设备 25733508 的 D100,按 16 位有符号整数解释。

省略数据类型的旧写法 @设备ID.D100 仍兼容,系统按寄存器字母推断(X/Y/M/S 按位,其余按 16 位)。新工程建议写全,避免歧义。

3.4.3 支持的数据类型与寄存器 ​

只有 5 种数据类型(没有 U16 无符号 16 位):

数据类型含义可用的寄存器
BIT位X / Y / M / S
S1616 位有符号整数D / T / C(C0-C199)
S3232 位有符号整数D / C(C200-C255)
FLOAT单精度浮点D
DOUBLE双精度浮点D

地址范围:

  • X / Y:八进制 0-377
  • M:0-7679
  • S:0-4095
  • D:0-7999
  • T:0-511

3.4.4 怎么配 ​

在组态编辑器里选中控件,打开数据绑定,在变量选择器中切到「设备变量」标签,依次选:

  1. 数据类型(S16 / BIT / FLOAT …)
  2. 设备(下拉列出该账号下的在线设备)
  3. 寄存器类型和编号(如 D、100)

下方会实时显示拼好的完整变量名,如 @11315751.DD0.S16,点确定即完成绑定。

3.4.5 读写机制:轮询,不是推送 ​

这一点和项目变量差别很大,直接影响体验预期。

读取:自适应轮询。上一轮成功则 500ms 一次,上一轮有失败则退到 2 秒一次。画面打开时会立即拉一次,首帧延迟约 0.3~0.5 秒。

合并读取:同一设备、同一寄存器字母、同一数据类型的绑定会被合并成一次请求。例如画面上有 @设备.D0.S16 和 @设备.D6.S16,实际是一次读回 D0 起 7 个寄存器。

所以把要显示的寄存器地址排列得尽量连续,可减少请求次数;跨设备、跨寄存器类型、跨数据类型不能合并。

写入:失败会重试 3 次(间隔 500ms),8 秒超时。写完 2 秒内画面会忽略服务器返回的旧值(写保护),避免刚点下去的按钮又跳回原状态。如果设备离线,会提示写入失败。

3.4.6 产品组态:一套画面对应多台设备 ​

批量出货时,不必给每台设备做一份画面。做法是用「产品组态」:

  1. 编辑器的工程属性里开启「产品组态」,并指定一个预览设备
  2. 画面上所有设备变量都绑到这台预览设备,如 @11315751.D100.S16
  3. 发布时选择目标设备,系统自动把画面里所有 @11315751. 前缀整体替换成目标设备 ID

替换覆盖控件属性、显示事件、点击事件、动画、动态管线,以及页面脚本里的变量字面量。

这样一套模板可以发给多台同型号设备,修改画面只需改模板一处。详见云组态手册的产品组态章节。

3.4.7 不适用的场景 ​

需求能不能用 @
画面上显示一个实时值可以
按钮控制 Y 输出、输入框改 D 设定值可以
历史曲线、报表不行,要用方式一让数据进实时数据库并设置存盘
超限发邮件(事件触发)不行,事件触发只认实时数据库的数据点
页面关掉后仍要记录数据不行,@ 只在画面打开时才有通信
其它系统(ERP / SCADA)要取这个数据不行,对外接口只暴露实时数据库的数据点

3.4.8 混用建议 ​

实践中最常见的组合:

  • 需要存盘、报警、对外提供的核心量 → 方式一绑进实时数据库,画面用项目变量
  • 只在调试或维护画面上临时看的寄存器 → 直接挂 @,不占用云端数据点,也不用改设备配置

LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研