4. HMI开发入门
在CODESYS中,HMI(人机界面)开发的核心工具是可视化编辑器(Visualization Editor)。它把画面设计、控件布局、属性绑定和交互逻辑整合在同一个工程视图里,让工程师无需切换工具即可完成从“画界面”到“连变量”的全过程。本节围绕编辑器界面、控件库、画面创建、属性配置和简单交互五个环节展开,帮助初学者建立完整的HMI开发认知。
一、可视化编辑器界面构成
打开CODESYS工程后,在设备树中右键应用(Application),选择“添加对象 → 可视化(Visualization)”,即可创建一个HMI画面。双击该对象,主编辑区会切换到可视化编辑器。编辑器界面主要由以下区域组成:
- 工具箱(Toolbox):位于右侧或左侧,提供基础控件、标准控件、特殊控件和自定义控件,是拖拽式设计的来源。
- 画面编辑区(Canvas):中央网格区域,用于放置和排列控件,支持对齐、分布、层级调整和缩放。
- 属性窗口(Properties):显示当前选中控件的属性,包括位置、尺寸、颜色、字体、变量绑定和事件配置。
- 设备树/对象树:列出当前工程中所有可视化画面及其层级关系,便于快速切换。
- 变量声明区:在可视化对象的声明部分定义局部变量,或直接引用PLC_PRG中的全局变量。
二、控件库与常用控件
控件库是HMI开发的“积木盒”。CODESYS标准可视化工具箱通常包含以下几类控件:
| 控件类别 | 典型控件 | 主要用途 |
|---|---|---|
| 基础控件 | 矩形、圆形、线条、文本 | 绘制背景、边框、标题和静态说明 |
| 输入控件 | 按钮、输入框、复选框、下拉框 | 接收操作员输入,触发变量写入 |
| 显示控件 | 标签、进度条、仪表盘、LED灯 | 显示PLC变量当前值或状态 |
| 高级控件 | 表格、趋势图、报警视图、配方视图 | 展示历史数据、报警和配方管理 |
| 容器控件 | 分组框、选项卡、画面切换器 | 组织复杂画面,实现多页面导航 |
使用控件时,直接从工具箱拖拽到编辑区即可。选中控件后,可在属性窗口中修改其外观和行为。对于需要重复使用的控件组合,可以将其保存为“自定义控件”或复制粘贴到其他画面。
三、画面创建与属性配置
一个完整的HMI项目通常包含多个画面,例如主画面、参数设置画面、报警画面和手动调试画面。创建画面时,建议遵循以下流程:
- 在设备树中右键“可视化”,选择“添加对象”,命名画面(如MainScreen)。
- 在画面属性中设置画面尺寸(如800×480、1024×600),并选择是否启用滚动条。
- 设置背景颜色和网格对齐,便于控件整齐排列。
- 从工具箱拖入所需控件,调整位置和大小。
- 在属性窗口中绑定变量,例如将按钮的“OnMouseClick”事件绑定到PLC变量,或将标签的“文本显示”绑定到温度变量。
- 使用“画面切换”控件或按钮事件,实现多画面之间的跳转。
属性配置是HMI开发的关键。以按钮控件为例,常见属性包括:
- 文本:按钮上显示的文字,如“启动”“停止”。
- 变量:按钮按下时写入的PLC变量,如
bStart。 - 事件:如OnMouseDown、OnMouseUp、OnMouseClick,决定交互触发方式。
- 颜色:正常状态、按下状态、禁用状态的颜色区分。
- 安全:是否启用权限控制,如仅允许管理员操作。
四、简单交互示例:启动/停止控制
下面以一个典型的“启动/停止”控制为例,说明HMI与PLC的交互过程。假设PLC程序中已定义以下变量:
VAR_GLOBAL
bStart : BOOL;
bStop : BOOL;
bMotor : BOOL;
rSpeed : REAL;
END_VAR
在HMI画面中放置两个按钮和一个指示灯:
- “启动”按钮:事件OnMouseClick,变量绑定
bStart,动作设为“置位”。 - “停止”按钮:事件OnMouseClick,变量绑定
bStop,动作设为“置位”。 - 指示灯:变量绑定
bMotor,颜色属性中设置“真”为绿色,“假”为灰色。
PLC程序中的逻辑可以简单写为:
IF bStart THEN
bMotor := TRUE;
bStart := FALSE;
END_IF
IF bStop THEN
bMotor := FALSE;
bStop := FALSE;
END_IF
这样,操作员点击“启动”按钮后,HMI将bStart置为TRUE,PLC程序检测到后置位bMotor,指示灯变绿;点击“停止”按钮后,bMotor复位,指示灯变灰。整个过程体现了HMI作为“输入输出桥梁”的作用。
五、常见误区与复盘建议
初学者在HMI开发中容易遇到以下问题:
- 变量未定义或类型不匹配:绑定变量前务必确认变量已在PLC程序中声明,且数据类型一致。例如,将BOOL变量绑定到数值输入框会导致编译错误。
- 画面尺寸与目标设备不符:不同触摸屏分辨率差异较大,建议在项目初期确定目标设备,并统一画面尺寸和缩放策略。
- 事件触发方式混淆:OnMouseDown在按下瞬间触发,OnMouseClick在完整点击后触发。对于启动/停止操作,通常使用OnMouseClick更符合操作习惯。
- 忘记复位按钮变量:如果按钮变量在PLC程序中未复位,可能导致下次点击无效。建议在PLC逻辑中及时将触发变量置回FALSE。
- 画面切换未释放资源:频繁切换画面时,注意关闭不必要的后台任务和定时器,避免通信负载过高。
掌握可视化编辑器界面、控件库、画面创建、属性配置和简单交互后,就可以开始构建更复杂的HMI应用,如报警管理、趋势记录和用户权限控制。建议从一个小型“启动/停止”项目入手,逐步扩展功能,形成自己的HMI开发模板。