位状态指示灯只能显示 0/1,多状态指示灯就不一样了——它按寄存器的具体数值映射到多个预定义状态,每个状态可以配独立的图标、颜色、文字。模式识别、流程阶段、档位显示这类场景就是它的主场。
1. 核心能力
- 多状态映射:预设多个状态项,每项关联一个特定数值或数值范围。如 0=停机(灰)、1=自动运行(绿)、2=手动调试(黄)、3=故障锁定(红)
- 可交互:允许写入的寄存器上,点击控件循环切换状态(递增 0→1→2→0…)
- 非连续值映射:支持状态转换表,把 0、5、10、99 这种离散编码一一对应到状态,不要求连续递增

工业上状态字常是非连续编码(兼容性/预留位/历史原因),比如 0=停机、5=自动运行、10=手动模式、99=严重故障——状态转换表就是干这个的。
2. 属性介绍
2.1 功能设置
| 属性 | 说明 |
|---|---|
| 读取地址 | 绑定的寄存器地址 |
| 切换开关 | 勾选后允许触控写操作 |
| 写入地址 | 勾选切换开关后,可设写入地址是否与读取相同 |
| 操作模式 | 递增:每次点击值+1;递减:每次点击值-1 |
| 循环调节 | 如状态数8,当前为7(末状态)时再点回到1 |
| 执行时机 | 设置寄存器的时机 |
| 数据类型 | UINT16、INT16、UINT32、INT32 |
| 播放声音 | 点击时播放指定声音 |

2.2 状态设置
- 状态数:1~256 个状态
- 转换状态:按状态数填写值映射,如「0;200;300;400;8;88;888;8888」——寄存器值 0 显示第0帧、200 显示第1帧…
- 使用图库:状态0图库/状态1图库,裁剪;使用文字:各状态不同文字,可配字体/大小/行间距/标签;选择状态:单独设每个状态的文字内容、颜色、对齐、闪烁、跑马灯

⚠️ 寄存器值不在状态数范围时,多状态图标不显示。例:状态数 8 只认 0~7,寄存器值写成 8,控件直接空白。转换状态表也一样——表中没有的值,控件不显示。排查「灯不亮」先查这个。
3. 应用案例
3.1 递增模式(循环调节)
智能家居场景:2 个多状态指示灯(图库版+文字版)+ 1 个数值控件。读取 LW1000,UINT16,状态数 8,循环调节勾选,文字状态 S0-回家、S1-离家、S2-就餐…S7-自动。点击切换,状态和数值实时变。


3.2 递减 + 状态转换表
读取 LW1001,状态数 8,转换状态「0;200;300;400;8;88;888」(非连续编码),操作模式递减。配合数值控件手动改值,观察状态跟随。


整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「多状态指示灯」,版权归大彩科技所有。
发表回复