1. 课程导入

欢迎进入《Ignition Perspective HMI 开发》课程。在正式动手拖拽第一个组件之前,我们需要先建立一张"全局地图":Perspective 在 Ignition 平台中处于什么位置?它解决什么问题?学完这门课你能做出什么样的界面?以及一个完整的 HMI 项目从需求到上线要经过哪些环节。只有先看清全景,后续每一节的组件、绑定、样式、脚本才不会变成零散的知识点。

一、核心原理:Perspective 是什么,为什么是它

Ignition 是 Inductive Automation 推出的工业级 SCADA/IIoT 平台,采用"无限授权、模块化、Web 原生"的设计哲学。它的可视化体系主要有两条技术路线:传统的 Vision 客户端(基于 Java Swing,需要安装客户端或使用有限的 Web 启动器)和现代的 Perspective 模块(基于 HTML5/CSS/JavaScript,纯浏览器运行)。

Perspective 的核心定位可以概括为三点:

  • Web 原生与响应式:界面在浏览器中渲染,天然支持 PC、平板、手机、大屏,同一套工程可通过断点适配不同分辨率,无需为每种终端单独开发。
  • 前后端分离的会话模型:浏览器端负责渲染与交互,Gateway 负责数据、脚本、安全与标签访问,二者通过 WebSocket 保持会话,页面刷新不丢状态。
  • 组件化与可复用:视图(View)、组件(Component)、嵌入式视图、页面(Page)构成层级结构,配合参数(Params)与消息(Message)实现模块化复用。

理解 Perspective 的关键,是理解它的"视图树 + 属性绑定 + 会话"三件套。视图树决定界面结构,属性绑定决定数据从哪来、怎么变,会话决定用户身份、权限与页面生命周期。这三者贯穿整门课程。

Ignition Perspective HMI 开发全景 数据源层 PLC / OPC UA SQL / MQTT / 历史库 Ignition Gateway 标签 / 脚本 / 安全 / 会话 Perspective 模块 浏览器客户端 HTML5 / CSS / JS 渲染 PC / 平板 / 手机 / 大屏 数据 WebSocket HMI 开发流程 ① 需求与画面规划 工艺 / 角色 / 分辨率 ② 视图与组件搭建 View / 容器 / 布局 ③ 属性绑定与脚本 Tag / 表达式 / 转换 ④ 交互与导航 事件 / 消息 / 页面 ⑤ 测试与发布 权限 / 性能 / 上线 课程知识框架(30 章主线) 基础篇 环境 / 视图 / 组件 / 布局 样式与响应式 数据篇 属性绑定 / 标签 / 表达式 脚本与转换 交互篇 事件 / 消息 / 导航 / 弹窗 报警与趋势 工程篇 安全 / 性能 部署与复盘 学习主线:先建立"视图树 + 绑定 + 会话"心智模型,再逐章深入组件、数据、交互与工程化,最终能独立交付一套可上线的 Perspective HMI。 关键习惯:每学一个组件,都问自己"它的属性从哪来、变化时谁响应、权限如何控制"。

二、方法流程:一个 Perspective 项目的标准推进路径

无论项目大小,Perspective HMI 的开发都可以按下面五步推进,本课程后续章节也基本沿这条主线展开:

  1. 需求与画面规划:明确工艺对象、操作角色、终端分辨率与刷新频率,画出画面层级草图(总览 → 区域 → 设备 → 详情)。
  2. 视图与组件搭建:在 Perspective 设计器中创建 View,用容器(Column、Row、Flex、Breakpoint)组织布局,放入标签、按钮、图表、表格等组件。
  3. 属性绑定与脚本:把组件属性绑定到 Tag、表达式、查询或脚本,实现数据驱动;必要时用转换脚本处理单位、状态映射。
  4. 交互与导航:配置事件(onClick、onStartup)、消息(Message)、页面导航与弹窗,形成完整的操作闭环。
  5. 测试与发布:验证权限、并发、断线重连与移动端适配,最后发布到生产 Gateway 并做运行复盘。
建议在第一步就确定"断点策略":桌面、平板、手机各用哪些断点,哪些组件在窄屏下折叠或隐藏。这比后期返工便宜得多。

三、案例场景:从"一个泵"看 Perspective 的完整链路

假设我们要做一个"循环水泵监控"画面。数据侧,泵的运行状态来自 PLC 的 Pump01_Run 标签,出口压力来自 Pump01_Pressure;界面侧,一个圆形指示灯显示运行状态,一个数值显示压力,一个按钮用于启停。用 Perspective 实现时,链路是这样的:

PLC 标签 Pump01_Run (Boolean)
   ↓ OPC UA
Ignition Gateway Tag Provider
   ↓ 属性绑定 (Property Binding)
View: PumpOverview / 组件: StatusIndicator.props.fill
   ↓ 状态映射 (Expression / Map)
运行=绿色, 停止=灰色, 故障=红色
   ↓ 用户点击
Button.onClick → 写标签 / 发消息 → 弹窗确认 → 写回 PLC

这个例子虽小,却覆盖了数据源、Gateway、绑定、组件、事件、写回六个环节。后续课程会把每一环拆开讲透,但你现在就应该能看出:Perspective 的开发不是"画图",而是"把数据流和交互流设计清楚,再用组件把它表达出来"。

四、误区与复盘:初学者最容易踩的坑

  • 把 Perspective 当 Vision 用:直接照搬 Vision 的绝对坐标思维,忽略 Flex/断点布局,导致移动端错位。应优先使用容器与相对布局。
  • 绑定写在组件上而不是视图参数上:到处硬编码标签路径,复用性差。推荐用 View Params 传入设备名,组件内部再拼接路径。
  • 忽视会话与权限:上线后才发现不同角色看到同一画面。应在设计初期就规划 Identity Provider 与页面权限。
  • 过度使用脚本:能用表达式绑定解决的,不要写脚本;脚本越多,调试与性能风险越大。
Perspective 的页面刷新会重建会话上下文,任何依赖"客户端全局变量"的写法都不可靠。状态应放在 Gateway 标签、会话属性或视图参数中。

五、学习目标与自检清单

完成本课程后,你应当能够独立完成一套中等规模的 Perspective HMI。下面这张清单可作为学习过程中的自检表:

能力维度 具体目标 对应章节主线
界面搭建 熟练使用 View、容器、断点与样式,做出响应式画面 基础篇
数据绑定 掌握 Tag、表达式、查询、脚本四类绑定的适用场景 数据篇
交互设计 能配置事件、消息、导航、弹窗与报警趋势 交互篇
工程化 理解权限、性能优化、部署与运行复盘方法 工程篇