基于reTerminal DM与Ignition Edge构建工业边缘HMI面板实战指南 📅 2026/8/2 11:23:06 1. 项目缘起从一块工业屏到“Hello World”的探索最近在折腾一个工业边缘计算的项目客户现场有几台老旧的PLC控制器数据孤岛严重上层MES系统想拉取产线实时状态但缺乏一个轻量、可靠且带本地交互的中间件。传统的方案要么是上一台工控机成本高、体积大要么用无屏的网关调试和维护又不够直观。就在这个当口我注意到了Seeed Studio推出的reTerminal DM。这玩意儿挺有意思它本质上是一台基于树莓派CM4计算模块的工业级边缘计算机但最吸引我的是它那块5英寸的电容触摸屏——这直接就是一个现成的、带图形交互能力的“边缘面板”Edge Panel。硬件到手屏幕点亮系统跑起来第一个念头就是怎么才能让这块屏为我所用官方提供了基于Ignition的Edge Panel Builder工具号称能快速构建可视化应用。但翻遍文档第一个实操例子往往就是经典的“Hello World”。可别小看这个“Hello World”在工业物联网的语境下它远不止在屏幕上打印一行字那么简单。它涉及到开发环境的搭建、Ignition Edge的组件理解、画面与逻辑的绑定以及最终在reTerminal DM这个特定硬件上的部署与运行。这个过程恰恰是打通从云端设计到边缘设备显示的关键一步。今天我就结合自己从零开始的踩坑经历把这个完整的流程拆解清楚目标是让你也能在自己的reTerminal DM上跑通第一个属于你自己的边缘面板应用。2. 核心装备解析reTerminal DM与Ignition Edge Panel Builder在动手写代码之前我们必须先搞清楚手头的“武器”到底是什么以及它们各自扮演什么角色。这就像组装一台精密仪器不了解每个零件的功能和接口肯定是装不起来的。2.1 reTerminal DM不只是个带屏的树莓派reTerminal DM是一台为工业边缘场景设计的设备。我们得跳出“树莓派加个壳”的简单认知。硬件构成的工业考量计算核心采用树莓派Compute Module 4CM4。这意味着它拥有树莓派4B同级的算力可选多种RAM和eMMC版本但以模块化形式存在抗震性和长期供货稳定性更好。我手头的是4GB RAM 32GB eMMC的版本对于运行一个轻量级Ignition Edge和面板应用绰绰有余。交互界面5英寸IPS电容触摸屏分辨率720x1280。这块屏的亮度和可视角度都针对工业环境优化过不像消费级平板那样在强光下就“瞎了”。触摸驱动集成良好在后续的界面测试中非常跟手。工业接口这是体现其“工业级”的关键。它提供了一个真正的RS-485接口带隔离保护可以直接连接Modbus RTU设备还有一个RS-232接口用于调试或连接老式串口设备。此外千兆以太网、Wi-Fi 5、蓝牙5.0这些连接能力一应俱全。GPIO引脚也被引出可以连接数字量I/O模块。电源与耐久性支持9-36V宽压直流输入典型工业24V供电直接接入无需额外转换。金属外壳和良好的散热设计使其能适应0-50°C的工业现场温度。软件栈的预先配置官方为reTerminal DM提供了预装系统的eMMC镜像。这个镜像基于Raspberry Pi OS32位但最关键的是它已经包含了Ignition Edge的运行时。你不需要自己去从头安装配置Ignition Edge这省去了大量繁琐且容易出错的环境配置工作。系统启动后Ignition Edge会作为一个服务自动运行。2.2 Ignition Edge与Edge Panel Builder云端设计边缘运行Ignition是工业界知名的SCADA和IIoT平台而其“Edge”版本是专为边缘设备设计的轻量级运行时。Edge Panel Builder则是与之配套的、用于设计人机界面HMI面板的Web设计器。它们的协作模式非常清晰设计在云端或本地PC你在任何有浏览器的电脑上通过访问Edge Panel Builder一个Web应用进行可视化拖拽式开发。你创建画面、绑定数据、设置动画所有这些设计工作都在你的开发机上完成。运行在边缘设计好的面板应用被“发布”到目标边缘设备这里是reTerminal DM上运行的Ignition Edge运行时中。Edge运行时负责执行面板的逻辑、通过驱动如Modbus、OPC UA与现场设备通信并将画面渲染输出到设备的显示屏上。为什么选择这个组合对于reTerminal DM这样的设备你当然可以自己用Python如Tkinter, Kivy或Web技术Chromium Kiosk模式来开发界面。但Ignition Edge Panel Builder提供了几个无法拒绝的优势工业协议原生支持内置了Modbus、OPC UA、MQTT等大量工业协议驱动无需自己从头实现协议栈配置一下就能连接设备。强大的数据绑定与脚本引擎画面元素如指示灯、数值显示可以轻松地绑定到设备的数据点Tag。支持Python和类似JavaScript的表达式脚本实现复杂的业务逻辑。集中管理与部署如果有多台reTerminal DM可以通过Ignition的网关网络进行集中管理、批量部署和更新应用运维效率极高。降低开发门槛图形化设计器让熟悉PLC梯形图或组态软件的电工、工程师也能快速上手构建界面无需深厚的软件开发背景。我们的“Hello World”目标就是在这套架构上完成从Edge Panel Builder设计一个简单画面到发布至reTerminal DM并全屏显示的全过程。3. 开发环境准备与首次连接拿到设备后别急着打开设计器。确保基础环境通畅能避免后续90%的“玄学”问题。3.1 reTerminal DM的初始设置上电与启动连接好24V电源或Type-C电源仅用于调试开机。首次启动可能会稍慢系统需要完成初始化。你会看到Raspberry Pi OS的启动日志最终进入一个命令行登录界面默认不启动图形桌面以节省资源给Ignition Edge。网络配置有线网络插上网线设备会自动通过DHCP获取IP地址。你需要知道它的IP。可以通过连接一个显示器在命令行下用hostname -I命令查看。更推荐的方法使用串口终端这是工业设备调试的标配。用一根USB转RS-232串口线连接电脑和reTerminal DM的RS-232口。串口参数设置为115200波特率8数据位1停止位无校验8N1无流控。使用Putty、MobaXterm或任何你喜欢的串口工具连接。上电后你就能在终端里看到完整的启动信息并以默认用户pi和密码raspberry登录。在这里执行hostname -I获取IP最可靠。验证Ignition Edge服务登录后执行命令systemctl status ignition-edge。如果看到active (running)的字样说明Edge运行时已在后台正常启动。它的默认Web管理端口是8088。3.2 访问Edge Panel Builder设计器Ignition Edge的设计器并不安装在设备本身而是需要通过浏览器访问Edge运行时来打开。在你的开发电脑上打开浏览器Chrome或Edge最佳。在地址栏输入http://reTerminal_DM的IP地址:8088/。例如http://192.168.1.100:8088/。首次访问你会看到Ignition Edge的登录页面。默认的用户名是admin密码是password。请务必在首次登录后修改密码。登录成功后你就进入了Ignition Edge的管理控制台。在这里你可以配置驱动、查看标签、管理用户等。要打开设计器你需要点击左侧导航栏的“设计器”或“Designer”标签页。系统可能会加载一些资源稍等片刻基于Web的Edge Panel Builder设计器界面就会呈现在你面前。注意如果你的浏览器无法访问8088端口请检查reTerminal DM和你的电脑是否在同一局域网段。电脑的防火墙是否阻止了对该端口的访问。在reTerminal DM上可以用sudo ufw status查看防火墙状态如果启用且未放行8088需执行sudo ufw allow 8088/tcp。4. 创建第一个Edge Panel“Hello World”实战设计器加载完成后我们正式开始构建应用。这个过程和大多数组态软件类似但更轻量、更聚焦于面板本身。4.1 新建项目与画面创建新项目在设计器主页点击“新建项目”。给项目起个名字比如MyFirstEdgePanel。项目是面板应用的容器可以包含多个画面Windows。创建主画面项目创建后会自动进入一个空白的画布。这就是你的主画面。在右侧的“属性”面板中找到“窗口标题”可以将其改为Hello World Demo。同时建议将“宽度”和“高度”设置为与reTerminal DM屏幕分辨率匹配的720 x 1280注意是竖屏宽720高1280。这样能确保画面完美适配不留黑边。认识组件面板设计器左侧是组件面板里面分门别类地存放着各种控件基本形状、按钮、指示灯、图表、输入框等。我们的“Hello World”将主要使用“标签”组件。4.2 设计静态“Hello World”画面添加文本标签从组件面板的“基本”类别中拖拽一个“标签”组件到画布中央。设置文本属性选中这个标签在右侧属性面板中文本输入Hello, reTerminal DM!字体可以调大比如选择Arial 大小设为48加粗。对齐水平居中和垂直居中都选择“居中”。颜色可以设置一个醒目的前景色。添加背景与装饰为了让画面更美观可以从“基本”类别拖一个“矩形”组件将其置于底层右键-排列-移至底层。设置其填充颜色并将大小调整为与画布一致720x1280作为背景。你还可以添加一些图标或公司Logo。至此一个静态的“Hello World”画面就完成了。但这只是第一步它还没有任何交互或动态数据。4.3 实现动态交互按钮与脚本工业面板的核心是交互。我们来添加一个按钮点击后改变标签的文字并记录点击次数。添加按钮从“基本”类别拖一个“按钮”组件到画布上放在标签下方。创建内存标签Tag为了存储点击次数这个数据我们需要一个地方来存放它。在Ignition中这通过“标签”实现。点击设计器顶部菜单栏的“标签浏览器”图标通常是个小标签页打开标签浏览器。在标签浏览器中右键点击“标签提供者”选择“新建 - 内存标签”。在弹出的窗口中定义标签名称clickCount数据类型整数Integer初始值0点击确定。现在我们就有了一个可以读写的数据点。为按钮编写点击脚本选中画布上的按钮在右侧属性面板中找到“事件”选项卡。这里列出了按钮可以响应的所有事件如“动作开始”按下、“动作结束”释放、“点击”等。我们双击“点击”事件右侧的空白处会打开一个脚本编辑器。在脚本编辑器中输入以下Python代码# 获取当前点击次数的值 current_count system.tag.read([.]clickCount).value # 将次数加1 new_count current_count 1 # 写回标签 system.tag.write([.]clickCount, new_count) # 更新画面上的标签文本 event.source.parent.getComponent(Label_0).text fHello! Clicks: {new_count}这段代码做了两件事读取内存标签clickCount的当前值。将其加1后写回并更新画面中那个标签组件Label_0是它的默认ID你可以在属性面板的“名称”栏看到并修改它的文本显示新的点击次数。绑定标签文本到数据另一种更优雅的方式除了用脚本硬编码更新我们还可以使用数据绑定。选中画面上的标签组件在属性面板中找到“文本”属性。不要直接输入文字点击其右侧的“绑定”图标一个小闪电。在表达式绑定窗口中输入Hello! Clicks: str({[.]clickCount})这样标签的文本会自动与clickCount标签的值关联。此时你可以将按钮点击脚本简化为只增加计数即可current_count system.tag.read([.]clickCount).value system.tag.write([.]clickCount, current_count 1)画面上的文字会自动更新。数据绑定是Ignition的核心优势之一它让界面与数据的同步变得声明式且高效。4.4 模拟测试与调试在设计器顶部有一个绿色的“启动窗口”按钮。点击它可以在浏览器内直接模拟运行当前画面。你可以点击按钮观察标签文字和点击次数的变化。这个模拟环境对于快速调试界面逻辑和简单脚本非常有用。5. 发布与部署让应用在reTerminal DM上跑起来设计并测试完成后下一步就是将应用真正部署到reTerminal DM的屏幕上全屏运行。5.1 配置Ignition Edge的“面板”模块回到浏览器中Ignition Edge的管理控制台http://设备IP:8088而不是设计器。在左侧导航栏找到并点击“配置” - “面板”。这是管理所有边缘面板应用的地方。在“面板”配置页面你会看到一个列表初始为空。点击“添加面板”按钮。配置新面板名称HelloWorldPanel可自定义。项目从下拉列表中选择你刚才在设计器中创建的项目MyFirstEdgePanel。主窗口从下拉列表中选择你项目中的主画面通常是Hello World Demo。显示设置这是关键显示设备选择Default或具体的显示设备如果系统识别出多个。对于reTerminal DM通常就是Default。全屏务必勾选。这样应用才能独占整个屏幕隐藏操作系统光标和状态栏。光标隐藏建议勾选让界面更纯净。开机自启动强烈建议勾选。这样设备重启后面板应用会自动启动符合工业无人值守的要求。Kiosk模式勾选。这能防止用户意外退出应用。点击“保存”。此时Ignition Edge服务会加载这个面板配置。5.2 在reTerminal DM上验证与全屏运行保存面板配置后理论上应用就应该已经在reTerminal DM的屏幕上启动了。但你可能正通过串口终端操作看不到屏幕。有几种验证和查看方式直接观察屏幕如果reTerminal DM连接了屏幕它自带你应该立刻能看到“Hello World”应用已经全屏显示。点击按钮功能应正常工作。通过VNC远程查看推荐用于调试在reTerminal DM上启用VNC服务器可以方便地在开发电脑上远程查看屏幕。在串口终端中执行sudo raspi-config。选择Interface Options-VNC-Yes启用。设置一个VNC密码。在开发电脑上使用VNC Viewer如RealVNC连接reTerminal DM的IP:5900输入密码即可看到实时桌面。你应该能看到全屏运行的面板应用。检查服务状态在串口终端中可以再次执行systemctl status ignition-edge确认服务运行正常。也可以查看面板服务的专用日志命令类似journalctl -u ignition-edge -f可以实时观察运行日志。踩坑记录我第一次部署时屏幕一直黑屏。排查后发现是在设计器里画面尺寸设置成了1920x1080我的显示器分辨率而reTerminal DM是720x1280竖屏。Ignition Edge在启动不匹配分辨率的全屏应用时有时会导致显示异常。务必在设计阶段就将画面尺寸设置为目标设备的分辨率。5.3 处理常见部署问题应用未启动在“配置-面板”中检查面板状态是否为“运行中”。可以尝试点击“重启”按钮。查看Ignition Edge日志寻找错误信息。触摸失灵如果画面能显示但触摸无反应首先在本地用鼠标模拟测试是否正常。如果正常可能是reTerminal DM的触摸屏驱动或校准问题。可以尝试在终端执行sudo apt update sudo apt upgrade更新系统或查阅Seeed Studio的Wiki关于触摸屏校准的说明。画面布局错乱100%是画面尺寸与设备屏幕分辨率不匹配导致的。回到设计器严格将主画面尺寸修改为720x1280并检查所有组件的位置和锚点设置。6. 超越“Hello World”从演示到实用化的思考成功运行“Hello World”只是起点。它验证了从开发到部署的完整链路是通的。接下来我们要思考如何让它变成一个真正的工业边缘面板。6.1 连接真实设备数据“Hello World”里的数据是内存中虚拟的。真正的价值在于连接现场设备。假设我们要连接一个支持Modbus RTU的温度传感器。在Ignition Edge中配置Modbus驱动在管理控制台进入“配置” - “OPC UA设备/驱动”。点击“添加驱动”选择“Modbus TCP / RTU / ASCII”。根据你的传感器手册配置串口参数如/dev/ttyAMA0 波特率9600 8N1——注意reTerminal DM的RS-485设备节点通常是/dev/ttySC0或/dev/ttyAMA1具体需查官方文档从站地址等。创建设备标签在驱动下定义对应的寄存器地址创建标签例如Temperature。在面板中绑定真实数据回到设计器在标签浏览器中你现在可以看到来自Modbus驱动的Temperature标签。你可以像之前绑定clickCount一样将一个数值显示框或仪表盘的“值”属性绑定到{[Modbus设备]Temperature}。画面就能实时显示传感器温度了。6.2 构建实用的界面组件导航与多画面一个应用通常有多个画面如首页、监控页、报警页、设置页。可以在主画面放置导航按钮通过脚本system.nav.openWindow(另一个画面名称)来切换。数据可视化利用图表组件趋势图、柱状图绑定历史数据或实时数据直观展示生产趋势。报警管理在Ignition Edge中配置报警触发器当标签值超限时产生报警。在面板上添加报警表格组件实时显示和确认报警。本地存储与逻辑对于需要断电保存的数据如设备参数可以使用Ignition的“数据库”功能连接本地SQLite数据库。更复杂的业务逻辑可以在画面的“脚本”模块中编写全局Python函数来调用。6.3 性能优化与稳定性考量资源监控reTerminal DM的CM4性能不错但也要关注资源使用。避免在画面中使用过多高频率更新的动画或过于复杂的图表。可以通过SSH登录使用htop命令监控CPU和内存。看门狗与自恢复为了应对极端情况可以编写一个简单的Shell脚本作为“看门狗”定期检查Ignition Edge服务状态如果崩溃则自动重启。甚至可以利用systemd的服务重启机制。安全加固修改默认SSH密码和Ignition Edge管理员密码。关闭不必要的服务。如果面板应用不需要外部网络访问可以在防火墙中只开放必要的端口如8088用于管理如果远程VNC也关了。从在屏幕上显示一行“Hello World”到构建一个稳定、可靠、连接真实数据的工业边缘交互终端reTerminal DM与Ignition Edge Panel Builder这个组合提供了一条清晰且高效的路径。它降低了工业边缘HMI的开发门槛将开发者的精力从底层驱动和图形渲染中解放出来更聚焦于业务逻辑和用户体验本身。这个“Hello World”项目就是你踏入工业边缘可视化应用开发大门的第一块坚实基石。