☰
Rapid SCADA v6 变电站动环实战:测点语义、温控滞回与命令回读
2026/10/26 10:08:37 网站建设 项目流程
本篇完成什么
以一间设备室为例,建立温湿度、空调状态与命令的点表,说明策略防抖、失联和回读验收。

动环画面已经显示温度,自动空调却反复启停,常见原因是测点含义和控制条件没有写清楚:室内温度与空调回风温度混用,开机命令被当成运行状态,或者每次采样越过同一阈值就重复下发。

本文基于 Rapid SCADA v6 的通道、事件和命令链说明设计方法。具体联控编辑器属于本项目选配扩展;下面的状态机和阈值是联调示例,不表示官方平台自带这套控制规则,也不是设备现场整定值。

1. 同一房间可以有多个不同测点

“主控室温度”和“1号空调回风温度”不能因为属于同一房间就合并成一条通道。安装位置、采样周期和物理含义不同,策略应明确使用哪一个。

通道示例语义单位/类型谁写入
1101设备室环境温度℃,Input温湿度设备驱动
1102设备室相对湿度%RH,Input温湿度设备驱动
1103空调运行反馈状态,Input空调实际回读
1104空调故障状态,Input空调实际回读
1105空调回风温度℃,Input空调控制器
1106远方允许状态,Input设备模式回读
1110空调启停命令Output/适用的可输出类型统一命令入口

对象树用于组织设备室和权限,通道号在同一配置数据库内仍应唯一。甲站与乙站不能因为对象不同就复用同一个 1101。多实例独立数据库的编号方案需要另外定义跨站身份。

先在 Administrator 中核对活动状态、设备号、标签代码、类型、单位及归档;上传后在 Communicator、Server 与表视图比较相同测点。每个值都要能看到质量和更新时间。数据更新时间过旧时,不能仅因数值还在就继续参与策略。

2. 把告警阈值和启停规则分别配置

告警用于记录需要处理的状态,控制用于改变设备状态。两者可以使用相同输入,但触发条件和动作不必相同。高温事件生成,不代表空调已经启动。

以温控逻辑为例,先写清以下参数,再在支持相应能力的服务端逻辑中实现:

参数示例作用
启动阈值30 ℃温度连续高于阈值时申请启动
停止阈值28 ℃形成滞回,避免在 30 ℃ 附近来回切换
持续时间60 s过滤短暂波动,按时间而非采样次数判断
最小停机时间按设备要求配置避免短时间重复启动
回读超时由现场测试确定命令接受后等待真实反馈
输入有效期按采样与通信设计确定拒绝失联后的陈旧数据

数字仅用于展示参数关系。最小启停时间、设备保护和故障复位应遵循实际设备要求。

3. 把规则落到当前 ModEnvControl 的真实配置

本项目当前链路是Administrator 通道 → Comm 采集 → Server/ModEnvControl → SendCommand → Comm → 设备;Web 的/env-control编辑绑定和参数,业务配置存入 Redis。ModEnvControl.xml的当前样例只有<ModEnvControl />,不能照旧文档往这个空壳里填一张阈值表,就认为现版 Web 已使用它。

Server 的ModEnvControl.Redis.xml与 Web 的PlgEnvControl.xml要指向同一配置域;首次安装、启用模块按部署流程完成。之后正常的 Web 参数保存由 Server 订阅重载,仍需查看加载日志,不能只看保存提示。以下为当前源码的配置片段,在原配置中合并同名条目,不整份覆盖已有房间和保护规则:

{"bindings":{"inputs":[{"id":"roomTemp","cnlNum":1101,"kind":"Double"},{"id":"autoEn","cnlNum":1107,"kind":"Bool"}],"actuators":[{"id":"ac01","cmdCnlNum":1110,"runFbCnlNum":1103,"group":"roomAc"}],"statusOutputs":[],"rules":[]},"profiles":{"roomAcDemo":{"kind":"pdAc","tempHi":30,"tempLo":28,"enabled":true}},"ruleDefs":{"roomAcTemp":{"engine":"ThresholdActuator","priority":2,"enabled":false,"profile":"roomAcDemo","inputs":{"temp":"roomTemp"},"actuators":["ac01"],"logic":{"mode":"all","offMode":"all","conditions":[{"source":"temp","op":">=","param":"tempHi"}],"offWhen":[{"source":"temp","op":"<=","param":"tempLo"}],"onDelayMin":1,"offDelayMin":1}}}}

新增的 1107 是示例“自动投入”输入通道,与设备“远方允许”1106含义不同,不能拿它代替设备模式。所有示例编号先做冲突检查,再在 Administrator 创建并上传;选择器里查不到通道,先修工程和上传,不改 JSON 绕过检查。规则先保持禁用,使用隔离测试工程和模拟执行器验证后再按项目流程投用。

这三个 ID 的对应关系最容易配错:inputs.temp指向绑定 IDroomTemp,绑定再指向1101;actuators指向ac01,它的命令是1110、反馈是1103;profile指向roomAcDemo,不是通道名。priority数字越小优先级越高,温控规则的2不能覆盖优先级0的规则。

若使用当前 Web,管理员在环境调控页设置这些对应项并保存。排障可在浏览器 Network 核对GET /Api/EnvControl/GetParams返回的现有参数、GET /Api/EnvControl/GetStatus的redisEnabled、bindingOk、bindingMessage。状态接口只证明配置侧检查结果,不能证明 Server 已消费配置;继续核对 Server 日志以及模拟命令记录。本文不提供绕过页面直接改 Redis 的脚本。

用明确时间线验证持续条件

在无其他更高优先级规则干预的独立测试中启用此规则,令1107为有效的1。onDelayMin=1表示持续一分钟,不是采样60次:

模拟时刻温度预期
00 s30.2开始启动延时,不立即开机
30 s29.9回到滞回区,取消待启动延时
40 s30.3重新开始计时
100 s后的首个控制周期30.3产生启动目标;观察命令是否只发一次
110 s29.0维持已有逻辑状态
120 s27.9开始停止延时
180 s后的首个控制周期27.9产生停止目标

首次求值或重启后的第一次输出可能包含一次初始关闭命令;验收应以记录的状态转换为准。onDelayMin与offDelayMin是连续越限延时,不是压缩机最小停机时间。如果设备要求额外防短周期,需由设备控制器或经过验证的逻辑补齐。

源码能证明什么,还有哪些缺口

本次按ThresholdActuatorRule、EnvControlRuleContext、EnvControlArbiter和EnvControlCommandWriter核对:

  • 阈值引擎有滞回区、延时和规则运行状态,仲裁后只保留每个执行器的最终目标。
  • 命令出口对成功请求记住上次值,目标未变化时抑制重复发送;失败请求不会因此自动变成成功。还要单独设计失败重试的退避和上限,不能宣称已经具备完整的有限重试。
  • 目前启动目标可进入反馈监视,检查RunFb,超时记录日志并尝试写事件。当前实现不等于已经覆盖停止反馈、陈旧反馈和重启后所有在途请求。
  • 数值读取检查CnlData.IsDefined,没有逐点源时间有效期检查。自动投入绑定缺失时默认参与控制;绑定质量未知也不能被当成“已经可靠退出自动”。远方允许、故障条件和新鲜度必须按实际项目补充验证。

这些差异直接影响上线:配置表能保存,只说明字段和引用基本成立;是否允许下令、设备是否执行以及失联后怎么办,要分别留测试证据。本文的 JSON 已按当前字段及引用关系核对,没有在现场设备上投入此演示规则。

4. 用状态机抑制重复下令

建议把一次控制分成待机 → 已请求 → 等待反馈 → 运行/失败。只有合法状态转换产生新命令,不在每次循环都发送同一指令。

自动模式、远方允许、输入新鲜有效、设备无故障 └─ 高温持续达到条件,且满足最小停机时间 └─ 发一次启动请求,记录请求时间 ├─ 运行反馈变为启动:进入运行态 └─ 超时仍无反馈:记录失败,按明确策略限制重试

人工操作和自动策略需要仲裁。退出自动后是否维持当前设备状态,进入就地后是否停止远方写入,服务重启后是否重新下令,都要写入验收规则。不能通过网页刷新或重新打开画面触发设备控制。

输入失联时应进入明确的降级状态,具体保持、退出或转交设备本地控制由项目设计确定。平台画面显示最后一次温度时,应同时标明该数据已经过期。

5. 一条命令至少核对三层结果

层次能证明什么不能单独证明什么
Web 接受请求登录、权限和请求校验通过设备已经收到
驱动返回成功协议动作按驱动定义完成压缩机或风机已经实际运行
运行反馈达到目标对应设备回读满足判据所有工艺条件均已满足

操作记录应关联通道、操作人或策略来源、请求值、时间和反馈结果。状态通道来自设备回读,不能在按下“开机”后直接把反馈强行写成 1,让画面看起来已经成功。

查看权限与控制权限分别验证。没有控制权限的账号,即使构造同样的请求也不应下令。固定设备保护和专用联锁继续由相应控制系统承担,动环页面负责展示与授权操作入口。

原系列的动环页面示意。本文的状态机、时限和失败处理需按实际服务端能力配置或实现,不能仅更换画面上的通道号。

6. 用一段温度序列验收

测试环境可输入29.8 → 30.2 → 29.9 → 30.3,先证明短波动不会反复启停;随后让高温连续保持到示例持续时间,再检查只产生一次启动请求。模拟设备未启动,验证超时记录,而不是把画面自动变为运行。

还应覆盖:

场景检查结果
温度无效或长时间不更新策略按设计退出或降级,界面提示过期
人工切到就地自动任务不再持续覆盖就地操作
运行反馈与命令不一致产生可追溯的超时/拒绝记录
重启服务模式、计时基准和未完成请求按设计恢复,无重复下令
切换另一房间状态、故障、命令都来自同一目标设备
通知或视频网关失败告警仍可在事件归档中查询

告警视频映射目前提供实时联动,事件时刻录像需另行验证,详见 告警视频联动实战。

排障时先确定“温度是哪个位置的温度”,再依次查质量、模式、持续条件、命令入口和真实回读。单纯缩短轮询周期,解决不了错误测点和重复发令问题。

官网:Rapid SCADA 中文站

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询