4. HMI开发入门

在CODESYS中,HMI(人机界面)开发的核心工具是可视化编辑器(Visualization Editor)。它把画面设计、控件布局、属性绑定和交互逻辑整合在同一个工程视图里,让工程师无需切换工具即可完成从“画界面”到“连变量”的全过程。本节围绕编辑器界面、控件库、画面创建、属性配置和简单交互五个环节展开,帮助初学者建立完整的HMI开发认知。

一、可视化编辑器界面构成

打开CODESYS工程后,在设备树中右键应用(Application),选择“添加对象 → 可视化(Visualization)”,即可创建一个HMI画面。双击该对象,主编辑区会切换到可视化编辑器。编辑器界面主要由以下区域组成:

  • 工具箱(Toolbox):位于右侧或左侧,提供基础控件、标准控件、特殊控件和自定义控件,是拖拽式设计的来源。
  • 画面编辑区(Canvas):中央网格区域,用于放置和排列控件,支持对齐、分布、层级调整和缩放。
  • 属性窗口(Properties):显示当前选中控件的属性,包括位置、尺寸、颜色、字体、变量绑定和事件配置。
  • 设备树/对象树:列出当前工程中所有可视化画面及其层级关系,便于快速切换。
  • 变量声明区:在可视化对象的声明部分定义局部变量,或直接引用PLC_PRG中的全局变量。
提示:CODESYS可视化编辑器支持“所见即所得”设计,但控件最终显示效果与目标运行设备的分辨率、字体和主题有关,建议在属性中统一设置画面尺寸和缩放模式。

二、控件库与常用控件

控件库是HMI开发的“积木盒”。CODESYS标准可视化工具箱通常包含以下几类控件:

控件类别 典型控件 主要用途
基础控件 矩形、圆形、线条、文本 绘制背景、边框、标题和静态说明
输入控件 按钮、输入框、复选框、下拉框 接收操作员输入,触发变量写入
显示控件 标签、进度条、仪表盘、LED灯 显示PLC变量当前值或状态
高级控件 表格、趋势图、报警视图、配方视图 展示历史数据、报警和配方管理
容器控件 分组框、选项卡、画面切换器 组织复杂画面,实现多页面导航

使用控件时,直接从工具箱拖拽到编辑区即可。选中控件后,可在属性窗口中修改其外观和行为。对于需要重复使用的控件组合,可以将其保存为“自定义控件”或复制粘贴到其他画面。

三、画面创建与属性配置

一个完整的HMI项目通常包含多个画面,例如主画面、参数设置画面、报警画面和手动调试画面。创建画面时,建议遵循以下流程:

  1. 在设备树中右键“可视化”,选择“添加对象”,命名画面(如MainScreen)。
  2. 在画面属性中设置画面尺寸(如800×480、1024×600),并选择是否启用滚动条。
  3. 设置背景颜色和网格对齐,便于控件整齐排列。
  4. 从工具箱拖入所需控件,调整位置和大小。
  5. 在属性窗口中绑定变量,例如将按钮的“OnMouseClick”事件绑定到PLC变量,或将标签的“文本显示”绑定到温度变量。
  6. 使用“画面切换”控件或按钮事件,实现多画面之间的跳转。

属性配置是HMI开发的关键。以按钮控件为例,常见属性包括:

  • 文本:按钮上显示的文字,如“启动”“停止”。
  • 变量:按钮按下时写入的PLC变量,如bStart。
  • 事件:如OnMouseDown、OnMouseUp、OnMouseClick,决定交互触发方式。
  • 颜色:正常状态、按下状态、禁用状态的颜色区分。
  • 安全:是否启用权限控制,如仅允许管理员操作。
注意:变量绑定前必须确保PLC变量已在全局变量表或程序声明中定义,且数据类型匹配。例如,按钮写入BOOL变量,输入框绑定REAL或INT变量。

四、简单交互示例:启动/停止控制

下面以一个典型的“启动/停止”控制为例,说明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 启动/停止交互数据流 HMI 可视化画面 启动 bStart 停止 bStop 指示灯 bMotor 转速显示 rSpeed PLC 程序逻辑 bStart / bStop : BOOL bMotor : BOOL rSpeed : REAL IF bStart THEN bMotor := TRUE; bStart := FALSE; END_IF 写入 bStart 写入 bStop 读取 bMotor 读取 rSpeed HMI 负责输入采集与状态显示,PLC 负责逻辑运算与变量保持

五、常见误区与复盘建议

初学者在HMI开发中容易遇到以下问题:

  • 变量未定义或类型不匹配:绑定变量前务必确认变量已在PLC程序中声明,且数据类型一致。例如,将BOOL变量绑定到数值输入框会导致编译错误。
  • 画面尺寸与目标设备不符:不同触摸屏分辨率差异较大,建议在项目初期确定目标设备,并统一画面尺寸和缩放策略。
  • 事件触发方式混淆:OnMouseDown在按下瞬间触发,OnMouseClick在完整点击后触发。对于启动/停止操作,通常使用OnMouseClick更符合操作习惯。
  • 忘记复位按钮变量:如果按钮变量在PLC程序中未复位,可能导致下次点击无效。建议在PLC逻辑中及时将触发变量置回FALSE。
  • 画面切换未释放资源:频繁切换画面时,注意关闭不必要的后台任务和定时器,避免通信负载过高。
复盘建议:完成第一个HMI画面后,先进行离线仿真测试,确认按钮、指示灯和变量绑定均正确,再下载到实际触摸屏或WebVisu中验证。逐步增加画面数量和交互复杂度,避免一次性堆砌过多控件。

掌握可视化编辑器界面、控件库、画面创建、属性配置和简单交互后,就可以开始构建更复杂的HMI应用,如报警管理、趋势记录和用户权限控制。建议从一个小型“启动/停止”项目入手,逐步扩展功能,形成自己的HMI开发模板。