
昆仑通态HMI实现多路复用变量
📕前言
什么是多路复用变量?
多路复用变量是指一个界面控件动态显示和控制多路同类变量
为什么要用多路复用变量?
以往的单设备控制窗口,是做好一个后再复制n个,然后修改控件变量名;😵💫
而使用多路复用变量,只需1个设备控制窗口,通过索引值来切换不同设备的变量,大大提高了工作效率,特别是在设备多的情况下。😃
💡昆仑通态HMI实现多路复用变量的思路
比如项目上有n个阀门,它们的变量命名是规律的,由后缀_REM、_OP、_CL、_FB、_FC、_Switch加阀门编号组成;
那阀门编号就能作为索引变量,通过索引值来指向不同的设备变量。
⛏1.新建内部变量
首先界面控制都有一个内部中间变量,操作时把实际变量赋值到内部中间变量,这个可以通过脚本来实现。
这里以阀门为例,其他设备也是同样的方法实现。
- 变量名如下
VALVE_index:字符串,表示索引变量 VALVE_REM:整数,表示远程信号 VALVE_OP:整数,表示开到位 VALVE_CL:整数,表示关到位 VALVE_fb:浮点,表示当前开度 VALVE_fc:浮点,表示设定开度 VALVE_switch:整数,表示控制信号 last_VALVE_switch:整数,记录上一次的控制信号 last_VALVE_fc:浮点,记录上一次的设定开度
✍2.编写脚本
在窗口属性中,分别填入启动脚本和循环脚本
启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14'远程信号
!DataGetInt(VALVE_index+"_REM",VALVE_REM)
'开到位
!DataGetInt(VALVE_index+"_OP",VALVE_OP)
'关到位
!DataGetInt(VALVE_index+"_CL",VALVE_CL)
'当前开度
!DataGetFloat(VALVE_index+"_FB",VALVE_fb)
'当前开度给定
!DataGetFloat(VALVE_index+"_FC",VALVE_fc)
last_VALVE_fc = VALVE_fc
'控制信号
!DataGetInt(VALVE_index+"_Switch",VALVE_switch)
last_VALVE_switch=VALVE_switch循环脚本(500ms)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18'远程信号
!DataGetInt(VALVE_index+"_REM",VALVE_REM)
'开到位
!DataGetInt(VALVE_index+"_OP",VALVE_OP)
'关到位
!DataGetInt(VALVE_index+"_CL",VALVE_CL)
'当前开度
!DataGetFloat(VALVE_index+"_FB",VALVE_fb)
'设定开度
if last_VALVE_fc<> VALVE_fc then
!DataSetFloat(VALVE_index+"_FC",VALVE_fc)
last_VALVE_fc = VALVE_fc
endif
'控制信号
if last_VALVE_switch <> VALVE_switch then
!DataSetInt(VALVE_index+"_Switch",VALVE_switch)
last_VALVE_switch = VALVE_switch
endif
💻3.组态界面
在组态界面中,可以设置多个控件,每个控件绑定一个内部变量。
新建通道并新建变量

新建通道 数据块配置存盘
让变量始终在后台采集

配置存盘 新建打开窗口按钮并配置索引值

索引值 绑定内部变量

新建窗口 运行测试

运行效果
完结,祝君顺利。🎉
- 标题: 昆仑通态HMI实现多路复用变量
- 作者: LinJiefeng
- 创建于 : 2026-05-19 21:30:44
- 更新于 : 2026-05-19 21:59:00
- 链接: https://blog.icsteam.cn/2026/05/19/206_Multiplexing_MCGS/
- 版权声明: 原创,转载请标明出处
评论




