文档中心
3D场景模拟器-iScene
PLC 变量绑定与通信

PLC 变量绑定与通信

iScene 本身不包含 PLC,它通过变量绑定与 PLC在线模拟器 等父页面通信,实现梯形图程序与 3D 场景的实时联动。本节介绍变量绑定的概念、通信机制与常见用法。

通信架构

iScene 以 iframe 方式嵌入父页面(如 PLC在线模拟器 的程序编辑器),两者通过 window.postMessage 交换数据。所有消息使用统一协议:

protocol: 'plc-variable-protocol'   协议标识
version:  '1.0'                     版本号
type:     消息类型
payload:  消息载荷

通信内容涵盖:变量表获取与推送、变量写入、PLC 运行状态、场景保存与加载等。连接通过心跳保活维持——每 5 秒发送一次 PING,10 秒超时,连续 3 次失败后自动重连;页面恢复可见时还会主动强制刷新数据,避免锁屏或切后台导致的显示滞后。

变量绑定

场景中的 3D 组件(气缸的伸缩杆、控制面板的指示灯等)通过组件变量与 PLC 变量建立绑定关系:

PLC 变量(如 I0.0 / Q0.0 / M0.0)
        ↕ 绑定
组件变量(如 气缸1.伸缩杆 / 面板1.启动按钮)

绑定权限

权限方向典型用途
只读(readonly)PLC → 场景指示灯、限位开关、数值显示
读写(readwrite)PLC ⇌ 场景按钮、输入框、伸缩杆
  • 只读变量:PLC 侧输出变化时,场景中的组件状态自动更新;
  • 读写变量:除了接收 PLC 数据,在场景中操作组件(按下按钮、输入数值)也会实时写回 PLC,驱动梯形图逻辑运行。

绑定关系如何保存

绑定关系保存在浏览器本地(localStorage),持久化时记录的是变量名而非动态生成的 UUID,因此即使 PLC 程序重新加载、变量重建,绑定依然能按名称重新匹配生效。

双向同步链路

  1. PLC → 场景:父页面推送 VARIABLE_UPDATED 消息 → iScene 更新组件变量 → 组件状态变化(气缸伸出、指示灯点亮);
  2. 场景 → PLC:操作控制面板按钮/输入框 → iScene 发送 SET_VAR_VALUE → 父页面将值写入对应 PLC 变量。

系统内置防循环机制:当 PLC 更新引起场景变化、而场景变化又触发限位等变量回写时,会精确识别来源并阻止振荡,避免梯形图收到"假信号"。

跨组件变量同步

一个组件的变量还可以引用其他组件的变量,实现组件间的联动。写法为:

组件名.变量名

例如在控制面板的"启动按钮"变量中填入 气缸1.伸缩杆,则按下按钮会直接控制气缸的伸缩;气缸到达限位后,限位变量变化同样可以反向驱动其他组件。

PLC 运行状态

面板中的 PLC通讯 区域会实时显示父页面 PLC 的运行状态:

状态含义
运行中(running)PLC 正在执行程序,可正常读写变量
已停止(stopped)PLC 程序未运行,场景数据保持最后状态
故障(fault)PLC 出现故障,通信受限
未知(unknown)尚未建立连接

PLC 运行期间场景会处于锁定状态,防止运行中被误改;如需编辑,先停止 PLC 程序。

常见问题

为什么场景显示"未连接"? iScene 必须嵌入 PLC在线模拟器 的页面中才能建立通信;直接单独打开场景地址时,因没有父页面进行握手,会显示未连接状态。嵌入后请点击"重连"或刷新页面。

绑定变量找不到? 请确认 PLC 程序中已创建该变量,且变量名与绑定名完全一致(含大小写与中文)。绑定保存在本地,切换浏览器或清除缓存后需重新绑定。