1. 项目背景与核心需求
在工业自动化控制领域,HMI(人机界面)的画面切换功能是操作人员与设备交互的基础需求。威纶通(Weintek)作为主流HMI品牌之一,其项目选单功能为画面管理提供了高效解决方案。传统画面切换通常采用固定按钮触发方式,当项目包含数十甚至上百个画面时,这种模式会导致界面臃肿、操作效率低下。
我最近在一个智能仓储系统中实际应用了威纶通的动态选单技术,系统包含87个操作画面,通过选单功能将画面切换时间缩短了60%。这种方案的核心价值在于:
- 实现画面层级化分类管理
- 支持权限分级控制(如管理员/操作员视图分离)
- 动态加载画面列表,避免硬件资源浪费
2. 硬件环境搭建要点
2.1 威纶通HMI型号选择
不同型号的威纶通设备对选单功能的支持存在差异。经实测比较:
- cMT系列(如cMT3090):支持HTML5动态选单,适合复杂项目
- MT8000系列:需使用宏指令实现二级选单
- eMT系列:基础型号仅支持静态画面跳转
推荐配置原则:
bash复制画面数量 < 30 → MT8102iE
30 ≤ 画面数量 ≤ 100 → cMT2121X
画面数量 > 100 → cMT3090 + 扩展内存
2.2 通信协议配置
选单功能常需与PLC联动实现动态内容加载。关键参数设置:
- Modbus TCP通讯时保持心跳包间隔≤2s
- 地址映射建议采用间接寻址(如LW-9000系列)
- 对于西门子PLC,需启用S7通信的"Optimized Block Access"
注意:威纶通与三菱FX5U通信时,需在GX Works3中设置"允许HMI地址访问"权限
3. 选单功能实现全流程
3.1 基础画面架构设计
推荐采用三级树形结构:
code复制主选单(首页)
├─ 生产管理(一级)
│ ├─ 设备监控(二级)
│ ├─ 产量统计(二级)
├─ 系统设置(一级)
├─ 参数配置(二级)
├─ 用户管理(二级)
在EasyBuilder Pro中的具体操作:
- 新建"主选单"基本窗口(属性勾选"作为首页")
- 为每个一级分类创建弹出窗口
- 二级画面使用"重叠窗口"类型
3.2 动态选单实现方案
方案A:地址链接方式(适合中小型项目)
- 在LW1000地址段建立选单索引表
- 配置"多状态切换"元件关联地址
- 设置画面跳转按钮的"间接窗口编号"属性
示例地址映射表:
| PLC地址 | HMI地址 | 对应画面 | 权限等级 |
|---|---|---|---|
| D100 | LW1000 | 设备监控 | 1 |
| D101 | LW1001 | 参数配置 | 2 |
方案B:宏指令方式(适合复杂逻辑)
visual复制Sub OnMacro()
Dim menu_id As Integer
menu_id = GetData("LW1000") '获取当前选单ID
Select Case menu_id
Case 1 To 10
OpenWindow(menu_id + 100) '生产类画面
Case 11 To 20
If UserLevel >= 2 Then
OpenWindow(menu_id + 200) '管理类画面
Else
Alarm("权限不足")
End If
End Select
End Sub
3.3 权限分级控制实现
-
在"系统参数"中创建用户组:
- 操作员组:Level 1
- 工程师组:Level 2
- 管理员组:Level 3
-
设置画面安全等级:
lua复制-- 在画面属性的"安全"选项卡中
if GetUserLevel() >= required_level then
EnableWindow()
else
ShowMessage("请联系管理员")
end
4. 性能优化与异常处理
4.1 画面加载加速技巧
-
预加载策略:
- 将常用画面设为"常驻内存"
- 在系统启动宏中执行:
basic复制PreLoadWindow(101) '预加载主监控画面 PreLoadWindow(205) '预加载报警画面
-
图片优化:
- 使用PNG-8格式替代BMP
- 单画面图片总大小控制在200KB以内
- 启用"渐进式加载"属性
4.2 常见故障排查指南
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 选单点击无响应 | 地址映射错误 | 检查LW地址与PLC的对应关系 |
| 部分画面显示权限错误 | 用户组权限未更新 | 重新下载用户数据库 |
| 画面切换卡顿 | 内存不足 | 关闭非必要常驻画面 |
| 二级选单显示空白 | 宏指令执行超时 | 增加WAIT指令间隔(建议50ms) |
5. 高级应用案例
5.1 多语言动态选单实现
-
创建语言资源文件:
xml复制<Language id="1"> <Item id="101">Production</Item> <Item id="102">Settings</Item> </Language> -
在宏指令中动态切换:
basic复制Sub ChangeLanguage(lang_id)
SetSystemLanguage(lang_id)
RefreshMenu() '重新加载选单文本
End Sub
5.2 基于生产状态的智能选单
结合PLC设备状态自动调整选单内容:
visual复制Sub AutoUpdateMenu()
If GetDeviceStatus() = "RUN" Then
HideMenu(201) '隐藏调试菜单
ShowMenu(101) '显示生产菜单
Else
ShowMenu(201)
HideMenu(101)
End If
End Sub
6. 工程实践心得
-
画面命名规范建议:
- 主画面:MAIN_xxx
- 弹出窗口:POP_xxx
- 报警画面:ALM_xxx
这种命名方式在宏指令调用时更易维护
-
在大型项目中,我习惯将选单配置独立为单独.hmi文件,通过"工程合并"功能集成,这样便于团队协作开发
-
实测发现,当单个工程包含超过150个画面时,采用"按需加载"策略(只在点击时加载画面)可使启动时间缩短40%
-
一个容易忽略的细节:在画面切换宏中加入延时指令(如DELAY 20),能有效避免触摸屏操作时的误触发问题
