文章目录

变量变化的数值颜色渐变设置

发布于 2026-03-24 03:15:42 · 浏览 2 次 · 评论 0 条

变量变化的数值颜色渐变设置


在电气自动化系统的HMI(人机界面)或SCADA监控画面中,让数值随大小呈现颜色渐变是核心需求。它能帮助操作员在0.3秒内识别异常,远比纯数字更直观。本文覆盖主流工控平台的实现方法,从基础设置到高级数学映射,全部可直接执行。


第一阶段:理解颜色渐变的数学本质

颜色渐变本质是将数值线性映射到RGB色域。任何平台的核心逻辑都遵循以下公式:

$$R = R_{min} + (R_{max} - R_{min}) \times \frac{V - V_{min}}{V_{max} - V_{min}}$$

$$G = G_{min} + (G_{max} - G_{min}) \times \frac{V - V_{min}}{V_{max} - V_{min}}$$

$$B = B_{min} + (B_{max} - B_{min}) \times \frac{V - V_{min}}{V_{max} - V_{min}}$$

其中 $V$ 为实时变量值,$V_{min}$/$V_{max}$ 为量程上下限,$RGB_{min}$/$RGB_{max}$ 为对应极值颜色。

典型应用场景的色标配对

场景类型 $V_{min}$颜色 (RGB) $V_{max}$颜色 (RGB) 视觉暗示
温度监控 0, 112, 192 (蓝) 192, 0, 0 (红) 冷→热
压力/液位 0, 176, 80 (绿) 255, 192, 0 (琥珀) 正常→警戒
转速/频率 128, 128, 128 (灰) 255, 255, 0 (黄) 停机→运行
能耗/功率 0, 128, 0 (深绿) 255, 0, 0 (纯红) 高效→过载

第二阶段:西门子TIA Portal实现(S7-1200/1500 + WinCC)

2.1 基础方法:动画功能直接绑定

打开 TIA Portal项目,定位 到HMI设备下的"画面"文件夹。

双击 需要配置的对象(IO域、棒图或矩形背景),切换 到"动画"选项卡。

点击 "添加新动画" → 选择 "变量状态"或"外观"。

配置 关键参数:

  • 变量:绑定PLC中的REALINT类型变量(如"DB1".Temperature
  • 范围类型选择 "范围"而非"离散值",以实现平滑渐变
  • 最小值/最大值:填入工艺量程(如0.0 ~ 100.0)

激活 "颜色"列的单元格,设置 两端颜色。勾选 "使用颜色梯度"复选框,系统自动计算中间色的RGB插值。

编译 项目(Ctrl + K),下载 到HMI设备验证。

2.2 高级方法:VB脚本精确控制(WinCC Professional)

当需要非线性渐变(如对数曲线、分段函数)时,脚本更灵活。

右键 HMI画面 → 选择 "属性" → 找到 "画面打开"事件。

点击 <添加函数>选择 "VB函数" → 命名ColorGradient_Update

输入 以下代码框架:

' 定义量程和颜色极值
Dim varValue, varMin, varMax
Dim rMin, gMin, bMin, rMax, gMax, bMax
Dim ratio, rOut, gOut, bOut

varValue = HMIRuntime.Tags("Temperature").Read
varMin = 0.0
varMax = 100.0

' 蓝色(0,112,192)到红色(192,0,0)
rMin = 0 : gMin = 112 : bMin = 192
rMax = 192 : gMax = 0 : bMax = 0

' 计算归一化比例(0~1)
If varValue < varMin Then varValue = varMin
If varValue > varMax Then varValue = varMax
ratio = (varValue - varMin) / (varMax - varMin)

' 线性插值
rOut = CInt(rMin + (rMax - rMin) * ratio)
gOut = CInt(gMin + (gMax - gMin) * ratio)
bOut = CInt(bMin + (bMax - bMin) * ratio)

' 组合RGB并应用
Dim colorHex
colorHex = RGB(rOut, gOut, bOut)
HMIRuntime.Tags("Color_Background").Write colorHex

创建 周期触发的全局脚本:打开 "计划任务" → 新建 任务 → 设置 周期为500ms → 绑定 上述函数。

在画面中添加 矩形对象,绑定 其"背景颜色"动态属性到Color_Background变量。


第三阶段:罗克韦尔FactoryTalk View实现(Allen-Bradley PLC)

3.1 基于表达式编辑器的配置

打开 FactoryTalk View Studio,定位 到目标显示画面。

右键 数值显示对象 → 选择 "Animation" → 选择 "Color"。

"Expression"框中输入 条件表达式,语法示例:

If {[PLC]Temperature < 25} Then 0,0,255 
ElseIf {[PLC]Temperature < 50} Then 0,128,255 
ElseIf {[PLC]Temperature < 75} Then 255,255,0 
Else 255,0,0

注意:上述为分段离散变色。如需真渐变,切换 到"Advanced"模式:

启用 "Use gradient"选项,设置 "Minimum color"为0,0,255,"Maximum color"为255,0,0

定义 "Data minimum"和"Data maximum"为标签的 engineering range(如-40 ~ 150℃)。

3.2 宏指令实现自定义渐变算法

创建 新宏:点击 "Macros" → 新建命名GradColorCalc

输入 宏指令序列,使用Parameter传递变量值:

Param1 {[PLC]Analog_Input}
Param2 0      'Min scale
Param3 100    'Max scale

' 归一化计算
Param4 (Param1 - Param2) / (Param3 - Param2)
If Param4 < 0 Then Param4 = 0
If Param4 > 1 Then Param4 = 1

' 绿到红渐变: (0,255,0) to (255,0,0)
Param5 255 * Param4      'R component
Param6 255 * (1-Param4)  'G component
Param7 0                 'B component

' 写回内部标签供显示对象引用
{[System]Grad_R} = Param5
{[System]Grad_G} = Param6
{[System]Grad_B} = Param7

显示对象的"Color"动画中,引用 宏计算结果:RGB({[System]Grad_R},{[System]Grad_G},{[System]Grad_B})

配置 宏的触发:打开 "Display Settings" → "While Display Active"中添加 宏调用,设置 扫描周期为250ms。


第四阶段:三菱GOT2000实现(GT Designer3)

4.1 部件的数值颜色功能

启动 GT Designer3,放置 "数值显示"部件。

双击 部件 → 展开 "数值颜色"设置项。

选择 "根据报警状态更改"或"根据数值更改"。

配置 渐变模式:

  • 选择 "渐变"单选按钮
  • 设置 "基准色1"为起始颜色(低值),"基准色2"为终止颜色(高值)
  • 输入 对应的"基准值1"和"基准值2"

启用 "闪烁"选项(可选):当值超出安全范围时,颜色在渐变色与白色间交替,频率设为1Hz。

4.2 脚本功能实现复杂逻辑(GOT2000高级功能)

打开 "公共设置" → "脚本" → 新建 脚本。

设置 脚本类型为"画面脚本"或"全局脚本"。

编写 梯形图脚本或ST脚本,ST示例如下:

IF SM400 THEN  // 常ON
    // D100为输入值, D0-D2为输出RGB
    REAL_VAL := INT_TO_REAL(D100);
    RATIO := (REAL_VAL - 0.0) / (100.0 - 0.0);

    IF RATIO < 0.0 THEN RATIO := 0.0; END_IF;
    IF RATIO > 1.0 THEN RATIO := 1.0; END_IF;

    // 蓝(0,0,255)到红(255,0,0)
    D0 := REAL_TO_INT(255.0 * RATIO);      // R
    D1 := 0;                               // G
    D2 := REAL_TO_INT(255.0 * (1.0-RATIO));// B
END_IF;

部件的"数值颜色"设置中,选择 "指定字"模式,绑定 D0-D2到RGB分量。


第五阶段:国产组态软件实现(组态王/力控/MCGS)

5.1 组态王KingView方法

双击 文本对象 → 选择 "属性" → 进入 "颜色动画"页。

勾选 "垂直渐变"或"水平渐变"。

绑定 表达式:直接输入模拟量标签名如\\本站点\温度

设置 "最小值对应颜色"和"最大值对应颜色",选择 "线性"或"平方"插值方式。

高级技巧打开 "动画连接" → 选择 "填充" → 绑定 同一变量,可实现棒图高度与颜色同步渐变。

5.2 MCGS昆仑通态方法

放置 "标签"构件,进入 "属性设置"。

找到 "字体颜色"行,点击 右侧按钮进入 动画连接。

选择 "根据变量值变化" → 勾选 "颜色渐变"。

设置 颜色条:点击 "编辑" → 色条两端选择 颜色 → 添加 中间控制点(最多7个)实现多段渐变。

输入 对应数值范围,MCGS自动完成HSV或RGB空间的插值计算。


第六阶段:特殊场景与优化技巧

6.1 非线性渐变:对数与指数映射

某些物理量(如pH值、声压级)需要非线性感知。使用 以下变换后再映射到RGB:

对数映射(适合大动态范围):
$$ratio_{log} = \frac{\ln(V/V_{min})}{\ln(V_{max}/V_{min})}$$

指数映射(适合敏感区间需放大):
$$ratio_{exp} = \frac{e^{k \cdot (V-V_{min})/(V_{max}-V_{min})} - 1}{e^k - 1}$$

其中 $k$ 为曲率系数,典型值3~5。

6.2 色盲友好配色方案

约8%男性存在色觉异常。避免 红绿直接渐变,改用 以下安全配色:

方案 低值色 高值色 明度差异
蓝-黄 #2166ac #fee090 60%
紫-橙 #762a83 #f7f7f7#e08214 55%
灰-红 #404040 #ca0020 50%

6.3 性能优化 checklist

  • 限制 刷新周期:视觉暂留约100ms,脚本周期设为200~500ms足够
  • 避免 浮点运算在PLC中计算颜色:HMI本地脚本或预计算查表更高效
  • 使用 整数RGB(0-255)而非浮点:减少50%以上通信负载
  • 启用 变化触发而非周期触发:变量未变时不刷新画面

第七阶段:调试与验证流程

准备 测试工具:使用 PLC仿真或强制表,生成 0-100%的斜坡信号。

验证 边界值:

  • 输入 等于下限值,确认 颜色严格匹配最小色
  • 输入 等于上限值,确认 颜色严格匹配最大色
  • 输入 超量程10%,确认 颜色锁定在极值色(无异常闪烁)

检测 渐变平滑度:肉眼观察 无肉眼可见的色阶跳跃,若存在,增加 颜色深度(16位色)或检查 整数截断问题。

测量 响应延迟:对比 PLC变量变化时间与画面颜色变化时间,确保 延迟<500ms。延迟过大时,检查 通信周期和脚本负载。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文