HMI Studio 是一款 WPF 桌面编辑器,将图形设计与机器运行时分离。
- 可在文件夹中组织标准页面、可复用模板页面和弹出页面;
- 每个页面可配置尺寸和背景色;
- 支持文本、按钮、显示器、指示灯、数值字段、导航、弹出窗口、配方、报警、历史记录、图表和图像;
- 显示器和数值字段具有自适应文本、可选描述以及可禁用的背景/边框;
- 独立图像或作为按钮内容使用的图像;
- 通过
Ctrl+点击进行多选、组移动以及对齐对象或使其居中于页面的命令; - 从属性面板修改位置、尺寸、颜色、文本、文本对齐和关联;
- 紧凑的圆形指示灯,根据标签状态动态变色;
- Unified 风格动画,按优先级排序的状态、布尔条件、比较、区间和位,每种状态有颜色和默认回退;
- 左侧页面/对象面板,右侧属性面板,两者均可折叠,拖动分隔条可调整大小;
- 对象属性按功能分组为可展开和折叠的部分;
- 支持配置多个 Siemens S7、OPC UA、Modbus TCP、Omron FINS/UDP、EtherNet/IP、Codesys 或模拟 PLC,字段与所选驱动一致;
- 创建带有地址、类型、访问权限和读取间隔的标签;
- 在文件夹和子文件夹中组织标签和报警;
- 运行时可修改、创建、重命名和删除配方,支持从 PLC 读取和向 PLC 写入;
- 报警支持条件、严重程度、过滤器、激活和解除的日期/时间以及操作员确认;
- 报警历史记录持久化到文件,可过滤,对象中可配置保留期限;
- MySQL 历史记录选择性保存标签,支持变化时或定时记录;
- 运行时查看数据库、表和记录,支持文本、日期/时间和最大行数过滤;
- 可配置的多系列折线图,支持 PLC 实时值或 MySQL 历史数据,每个标签可独立设置名称和颜色;
- 集成调色板,支持手动输入颜色代码;
- 面板间冗余,支持优先级、待机、故障转移和故障恢复;
- 用户管理,密码保护、对象访问级别、登录错误后临时锁定和可选自动登出;
- 登录、登出和用户管理运行时对象,具有持久化的会话历史记录;
- 以 JSON 格式
.hmiproject保存和打开项目; - 全屏运行时,无编辑器元素;
- 内置演示项目,无需 PLC 即可通过
Simulator驱动使用; - 导出仅运行时模式的 ZIP 压缩包。
- 在 PLC 选项卡中,添加控制器并选择驱动。显示的参数会根据所选连接而变化。
- 在 TAG 选项卡中,创建文件夹和变量并将其连接到 PLC。
- 从左侧工具栏添加文件夹、页面和图形对象;使用右侧面板修改其属性。
- 创建一个 Template 类型的页面用于导航,并将其分配给需要使用它的标准页面。
- 在初始页面或模板中插入一个 Esci runtime 对象。如果没有此对象,运行时将无法从编辑器启动。
- 保存项目并点击 RUNTIME。
运行时不会自动生成页面菜单:所有导航都通过导航按钮、模板和弹出按钮来设计。
对于按钮、显示器、数值字段和指示灯,可以启用连接到可读标签的动态功能。状态从上到下进行评估,第一条为真的规则优先,就像动态化表格一样:可以使用真/假条件、相等、阈值、包含区间、单个位和掩码。可用条件根据标签类型而变化。如果没有规则为真,则应用默认状态;每种状态和回退都有调色板和手动颜色代码。
在 UTENTI 选项卡中,可以启用安全并配置账户、访问级别、活动状态、最小密码长度、登录失败后的锁定、自动登出和会话历史保留期。密码不以明文保存:项目使用带有唯一盐值的 PBKDF2 哈希。
每个图形对象都有 Livello accesso richiesto 字段。运行时,访问级别不足的操作员会看到对象被禁用且无法执行其操作。Login 和 Logout 对象管理会话;Gestione utenti 允许授权的管理员创建、修改、禁用和删除账户,以及查看登录、登出和相关原因。系统会阻止删除最后一个活动管理员以及超过当前用户级别的自我提升。
在导出的运行时中,对用户的修改会保存在 Windows 本地数据区域,即使应用文件夹是只读的。如果存在受保护的对象,项目必须提供初始登录或至少包含一个 Login 按钮。
每个页面都有自己的类型、文件夹、宽度、高度和背景色。标准页面可以使用模板,用于创建菜单、标题和通用命令。Apri popup 对象可以指向一个 Popup 类型的页面:第一次点击打开它,再次点击同一个按钮关闭它。
配方对象允许操作员:
- 创建、重命名和删除配方;
- 直接修改每个存储的值;
- 从 PLC 读取当前值;
- 将配方的所有值写入 PLC。
在导出的运行时包中,修改会保存在 runtime.hmiproject 中,因此在重启后仍然可用。提取的文件夹必须可被 Windows 用户写入。
在 DATABASE 选项卡中,设置服务器、端口、用户、密码、数据库和表。可以测试连接、读取数据库列表、创建新数据库以及创建/验证历史记录表。对于每个标签,可以选择是否启用保存以及记录方式:
- OnChange:仅在值变化时;
- Timed:按配置的毫秒间隔。
保留期字段会删除超过设定天数的旧记录:清理会在启动时、每 24 小时以及通过专用按钮按需执行。MySQL 错误不会中断 PLC 通信或操作员界面的运行。
Storico dati 对象允许在运行时选择数据库和表、应用文本搜索、设置本地日期时间范围以及限制返回的行数。在 Grafico linea 对象中,可以添加多个系列:为每个系列选择标签、运行时图例中显示的名称和线条颜色。所有系列都可以使用 PLC 实时值或从配置的历史记录表中读取。
Storico allarmi 对象将事件保存到项目旁边的 JSON 文件中。如果包文件夹不可写,则使用 Windows 用户的本地数据文件夹。每个事件保留激活、解除和确认信息;运行时可以按文本、严重程度、状态和日期范围进行过滤。对象的保留期属性决定保存已解除报警的天数。
在 RIDONDANZA 选项卡中,定义面板、其 SignalR 地址和优先级。只有一个面板需要标记为本地。优先级最高的面板直接连接到 PLC;备份面板通过上级面板处于待机状态。当连接丢失时,备份面板等待配置的延迟,再次检查上级面板,如有需要则提升为活动面板。当上级面板恢复可用时,会执行故障恢复。
每个冗余面板都需要在标记为本地面板后导出自己的运行时包。
Esporta runtime 命令创建一个包含可执行文件、依赖项和项目副本的 ZIP 归档。在客户端 PC 上解压后,启动 HMI.exe。清单文件 runtime-package.json 的存在会强制应用程序直接打开运行时,没有编辑器,也无法返回开发模式。
运行时以最大化方式打开,没有边框、标题、横幅或自动菜单。主窗口忽略正常的关闭请求:项目中必须有一个 Esci runtime 按钮。如果运行时是从编辑器启动的,该按钮会停止连接并返回开发模式;在导出的包中,则会关闭应用程序。
当前包是框架依赖的,需要在客户端 PC 上安装 .NET 10 Desktop Runtime for Windows。
Models/HmiProject.cs:项目持久化模式;Function/ProjectStorageService.cs:.hmiproject文件的读写;Function/HmiRuntimeSession.cs:连接、轮询、标签写入、冗余和日志记录;Function/MySqlDatabaseService.cs:MySQL 历史记录的配置和写入;Function/AlarmHistoryService.cs:报警历史的持久化和保留;Function/RuntimeExportService.cs:运行时包的生成;MainHMI.xaml和MainHMI.xaml.cs:可视化编辑器和运行时渲染器;ExternalConnection/PLCs/Simulator.cs:用于开发和测试的本地驱动。ExternalConnection/PLCs/ModbusTcpConnection.cs:Modbus TCP 的线圈、离散输入、保持寄存器和输入寄存器。ExternalConnection/PLCs/OmronFinsConnection.cs:通过 FINS/UDP 访问 DM、CIO、WR、HR、AR 和 EM0 区域。ExternalConnection/PLCs/EtherNetIpConnection.cs:通过 EtherNet/IP 读写 CIP 符号标签。
Simulator、Siemens S7、OPC UA、Modbus TCP、Omron FINS/UDP 和 EtherNet/IP(用于 CIP 符号标签)驱动均可正常工作。Modbus 和 FINS 支持 16/32 位有符号和无符号类型、实数、布尔值和字符串;标签配置仅在需要时显示区域、地址、位和长度。Codesys 驱动仍为占位符:对于实际设备,需要替换为控制器实际使用的协议。