资讯动态

机器视觉低代码平台新特性:序列图编辑器与全局变量

发布时间:2026/10/16 6:49:39 来源:尧图企业网站定制
这个机器视觉低代码平台又更新了。标题说是“水一波”但这次新增的功能不算水一个是序列图节点编辑器一个是全局变量。核心目的很明确——把节点之间的订阅关系重新梳理干净解决传统连线式编辑器里“线一大片、连错难发现”的老问题。这次更新最值得关注的不是多了一两个算法模块而是编辑器的组织方式变了。以前是在自由画布上把节点用连线串起来流程一复杂连线交叉、连线悬空、误连漏连都很难排查现在改成序列图的方式节点按主流程和子层级排列依赖关系变成显式订阅声明。对做现场调试和维护的人来说这个变化比单纯加算子实用得多。本文会围绕这次更新的两个核心特性展开序列图节点编辑器怎么用、全局变量适合放在哪些场景然后给出一套从升级备份到功能验证的完整流程最后整理常见的迁移问题和排查方法。如果你正在用这类平台搭视觉检测流程或者被节点连线折磨过这篇内容可以直接收藏。1. 核心能力速览能力项说明编辑器形态序列图节点编辑器以主流程加子层级方式组织替代传统自由连线画布全局变量支持跨节点共享参数、配置与中间结果可作为订阅源使用订阅关系节点通过显式订阅声明依赖不依赖物理连线图面更干净主要收益降低连错线风险提升复杂流程的可读性与可维护性适用平台机器视觉低代码平台具体版本支持范围以官方发布说明为准部署方式本地安装或增量升级可携带历史工程文件做格式迁移批量能力流程结构固定后配合全局变量和外部脚本可实现批量参数注入接口能力是否开放 API 服务需按平台版本确认下文给出通用验证模板适合场景视觉检测流程编排、多相机流程管理、现场调试、验收交付以下几点在阅读后续内容前先明确序列图编辑器改变的是节点的组织和依赖表达方式不改变算法的运行逻辑全局变量是配合订阅机制使用的数据通道不是简单把变量堆在工程里旧的连线式工程能否自动转换取决于平台是否提供迁移工具不确认的部分要用小工程先做验证。2. 传统节点编辑器的痛点与序列图设计思路2.1 传统自由画布节点的典型问题传统节点编辑器通常采用自由画布加连线的方式。每个算法节点是一个模块节点之间通过连线传递图像、区域、数组、数值等数据。这种方式在节点数量少时很直观但流程一旦超过十个节点问题就很明显连线交叉图面混乱阅读成本高。鼠标误操作容易把线连到错误端口。某些连接是隐藏的比如通过全局参数间接传递的数据不打开配置根本看不到。删除节点时相关连线不会自动收敛经常留下悬空线。现场改流程时牵一发动全身连错一条线可能整条产线误判。这些问题的根源在于节点图把“数据结构关系”和“流程顺序关系”混在了一张自由画布里。大家既要看执行顺序又要看数据流向两种信息叠加在一起自然容易出错。2.2 序列图节点编辑器是怎么设计的序列图节点编辑器的思路是把这两种关系拆开。主流程按执行顺序排列每个节点是一个明确的位置节点之间默认按序列顺序执行不需要额外拉一条“顺序线”。如果某个节点需要并行处理或者某段流程需要局部展开就通过父子层级管理。父节点可以展开成子序列子序列内部再按顺序排列。这样整个流程从视觉上更像一棵层次分明的树而不是一张蛛网。节点之间的数据依赖不再靠画线表达而是通过订阅声明。也就是说每个节点自己声明需要哪个上游节点的输出或者需要全局变量中的哪个值。编辑器会自动建立依赖关系并在图面上用清晰的标识展示。打开一个节点就能直接看到它订阅了谁、被谁订阅不再需要顺着密密麻麻的连线去找。2.3 为什么这套设计更适配机器视觉流程机器视觉检测流程在工业现场有很强的固定模式。典型的流程是图像采集、图像预处理、ROI 提取、定位、缺陷检测或尺寸测量、结果判定、数据输出。这种流程本质上是线性的主线加少数并行分支而不是完全自由的网状结构。用序列图来表达这类流程和现场工程师的思维方式更贴合。采集完图像做什么、预处理后交给哪个检测分支、多个检测分支如何汇总在序列图里都是一层层清清楚楚的。新同事接手工程时看序列层级比看连线图容易理解得多。这也是这次更新最有价值的地方不是把已有的东西换个壳而是让编排方式更贴近工业流程的实际情况。3. 全局变量跨节点数据共享的规范化设计3.1 为什么需要全局变量在节点式流程中除了节点之间逐级传递的图像和检测数据还有很多信息是需要跨节点共享的例如相机标定参数、产品批次号、检测阈值、生产工单号、IO 状态等。这些数据如果每次都靠连线从一个节点传到另一个节点会制造大量不必要的连接而且一旦漏连运行时的表现非常隐蔽——节点不报错但结果不对。全局变量就是用来承载这类数据的。它独立于节点之间的数据流存在任何节点都可以订阅它也可以在某些节点里更新它。序列图编辑器把全局变量和节点输出区分开数据传递变得更有规律。3.2 典型使用场景从实际工程角度看全局变量适合放以下几类数据。相机与标定参数内参、畸变系数、像素当量、标定日期。这些参数在多道检测工序中反复使用不应当作为普通节点间传输数据复制多份。配方与阈值不同产品的 OK/NG 判定阈值、灰度区间、面积范围。切换产品时只需更新配方变量不需要修改流程结构。批次与追溯信息批次号、产线编号、班次、订单号。这些信息挂在结果数据上方便追溯和报表统计。设备与通信状态PLC 信号、运行模式、急停状态。外部系统可以直接读写全局变量与视觉流程解耦。3.3 全局变量与节点输出的边界全局变量不是用来替代节点输出的两者的边界需要分清。节点输出描述的是“这个节点处理后的结果”比如预处理后的图像、检测得到的缺陷列表、测量得到的宽度值。全局变量描述的是“整个工程运行期间需要共享的状态”比如当前的批次号、当前产品的判定阈值。建议的规则是能走节点输出的就走节点输出因为节点输出自带上下游关系看得见摸得着只有那些确实需要跨多条子流程共享的数据才使用全局变量。如果把所有中间结果都塞进全局变量序列图又会变成另一种形式的隐性连接。这次更新强调的是“订阅关系更干净”前提是使用者也按规范来用。一个全局变量声明配置的通用参考如下实际字段以平台实现为准。{ variables: [ { name: batch_id, type: string, scope: global, init: , comment: 当前生产批次号由外部系统写入 }, { name: ok_threshold, type: float, scope: global, init: 0.85, comment: OK 判定阈值按产品配方切换 }, { name: camera_01_matrix, type: array, scope: global, init: [], comment: 相机 01 的标定矩阵 } ] }注意全局变量需要显式初始化。实际现场最常见的问题之一就是变量声明了但没给初始值平台运行时取到空值检测流程直接误判。后面排查章节会再展开。4. 节点订阅关系的重新设计4.1 从“连线传递”到“订阅声明”这次更新的另一个关键词是“订阅”。在旧模式里A 节点的结果要传给 B 节点必须从 A 的输出口拉一条线到 B 的输入口。节点一多端口密密麻麻鼠标稍一偏移就可能连错。新模式下B 节点直接声明我需要 A 节点的输出图像我需要全局变量 ok_threshold。编辑器在后台建立订阅关系并在节点信息面板里统一展示。打开任意节点可以看到它订阅了哪些数据源这些数据源是来自上游节点还是来自全局变量。依赖关系变成可查询的元数据而不是画布上的一条线。4.2 订阅关系如何让图面更干净从画布表现来看订阅关系被集中管理。主画布上不再需要为每个数据传递画一条线节点的位置可以更紧凑。编辑器可以用颜色或图标区分数据来源类型来自上游节点、来自全局变量、来自外部输入。一眼看过去就知道数据从哪来。更实际的好处是排错效率。以前流程跑出错误结果要顺着一堆连线从头查到尾查完还不一定找得到。现在只要检查几个关键节点的订阅列表就能快速确认每个节点的数据来源是否正确。遇到“看起来连上了但结果不对”的情况不再是无头苍蝇式排查。4.3 订阅关系的配置表达示例序列图的流程定义在配置文件里可以表达成类似下面的结构。这里给出的是通用示例字段名需要按实际平台的约定调整。flow: - id: step_acquire type: camera_acquire name: 相机采集 params: camera_id: camera_01 children: - id: step_preprocess type: image_preprocess name: 图像预处理 subscribe: image: step_acquire.output_image - id: step_detect type: defect_detect name: 缺陷检测 subscribe: image: step_preprocess.output_image threshold: globals.ok_threshold - id: step_result type: result_output name: 结果输出 subscribe: detect_result: step_detect.result batch_id: globals.batch_id节点订阅声明通常包括数据源和字段名。订阅上游节点时写节点 ID 加输出字段订阅全局变量时写 globals 前缀加变量名。这套写法在工程文件里是可检索、可 diff 的配合团队协作时能明显减少配置冲突。4.4 订阅关系的运行检查运行时平台一般会做依赖校验订阅的源是否存在、类型是否匹配、是否有循环依赖。升级完新版本后建议在一个小工程里故意配置错误的订阅源观察平台是否给出明确报错。如果平台能定位到具体节点和字段说明依赖校验做得比较到位如果只给一个笼统的“流程执行失败”那现场排错依然要靠日志辅助。5. 部署升级与环境准备5.1 升级前备份无论采用哪种升级方式备份都是第一步。机器视觉工程不只是流程节点还包括相机参数、标定文件、模板图、配方数据、通讯配置和用户权限。只备份流程文件升级后很可能出现“流程能打开、相机连不上”的问题。建议备份清单如下。备份项说明工程文件旧版连线图工程、序列图工程、归档版本相机配置文件相机 IP、曝光、增益、触发模式等标定文件标定板图像、标定矩阵、像素当量记录模板与素材定位模板图、缺陷样本、OCR 字库配方参数按产品保存的阈值、ROI 坐标、检测参数通讯配置PLC 地址映射、数据库连接、日志服务配置备份完成后建议先在一台非生产电脑上安装新版本用完整工程数据做预升级验证。直接在生产电脑上升级一旦出现兼容问题产线停线损失远大于多花半小时做测试。5.2 升级方式不同平台提供的升级方式不一样常见有三种。在线升级平台内置更新模块联网后自动检测版本并下载安装。适合允许现场电脑连接内网更新源的环境。离线补丁包从官网或技术支持处获取安装包拷贝到现场电脑后执行。适合隔离网或不允许外连的工厂。覆盖式安装在新版本安装过程中保留原工程和配置文件。第一次做这种升级前先确认旧版本安装目录下的数据文件不会被清理。无论用哪种方式升级后第一件事都是检查版本号。确认平台主程序、算法模块、相机驱动三个部分的版本一致避免出现界面升级了但相机采集组件还是旧版的情况。5.3 环境检查清单机器视觉低代码平台通常依赖显卡驱动、相机厂商 SDK 和各类运行库。升级前可以按以下清单快速检查。操作系统版本及补丁更新状态。显卡驱动版本与平台要求的 CUDA 或 DirectML 版本是否匹配。相机 SDK 是否与当前相机型号兼容特别是 GigE Vision 和 USB3 Vision 的驱动。磁盘剩余空间是否足够存放新版本及日志缓存。端口占用平台自带的调试服务、通信服务使用的端口有没有被其他软件占掉。环境检查不复杂但很容易被忽略。现场最常见的启动失败往往不是因为软件本体有问题而是显卡驱动回滚、相机 SDK 冲突、端口被防火墙拦截这一类环境问题。6. 新功能验证流程新版本装好后不要直接加载生产工程。建议按下面的流程用最小工程把序列图编辑器和全局变量全部验证一遍。整个验证过程二十分钟内可以完成但能避免后面大工程踩坑。6.1 步骤一新建序列图工程在平台里新建一个工程选择序列图类型。观察编辑器的布局主流程区域、节点面板、变量面板是否齐全。新建后先熟悉节点放置操作确认可以快速拖入节点并调整顺序。预期结果工程创建成功序列图编辑器正常打开主流程区域可以放置节点。6.2 步骤二声明全局变量在变量面板中新建三个测试变量。例如test_count整数型初始值 0。test_threshold浮点型初始值 0.50。test_batch字符串型初始值空。创建后保存工程再重新打开检查变量值是否被正确保留。这个操作是为了验证全局变量的持久化能力。如果重新打开后初始值丢失说明变量初始化逻辑有问题后续所有依赖变量的节点都会受影响。6.3 步骤三搭建一个简单的采集-预处理-检测流程用三个或四个节点搭一个最小流程。例如图像采集节点、图像预处理节点、缺陷检测节点、结果输出节点。节点之间不手动连线全部通过订阅关系指定数据源。配置订阅图像预处理节点订阅图像采集节点的输出图像。缺陷检测节点订阅图像预处理节点的输出图像。缺陷检测节点订阅全局变量test_threshold作为判定阈值。结果输出节点订阅缺陷检测节点的检测结果同时订阅test_batch作为追溯字段。预期结果所有订阅关系配置完成后节点图标出现已订阅标记图面上没有连线需要做。6.4 步骤四运行并检查结果载入一张测试图运行整个序列图流程。检查以下内容流程是否按序列顺序逐节点执行执行日志中每个节点是否记录了开始与结束时间。缺陷检测节点能否从全局变量读到test_threshold的值并且结果随test_threshold变化而变化。结果输出节点是否正确携带test_batch的值。运行结束后修改test_threshold再次运行确认新值立即生效不需要重新编译或清理缓存。判断标准两次运行结果随阈值变量变化而不同且每个节点的输入源都能在订阅面板中清晰看到。6.5 步骤五模拟订阅错误故意把缺陷检测节点的图像订阅源改成一个不存在的节点 ID或者改成类型不匹配的字段再次运行。预期结果平台在运行前或者运行启动时报错错误信息能指出哪个节点、哪个订阅字段有问题。如果平台给出的是“流程执行失败”这种泛化报错说明订阅校验能力有限后续大工程排错需要重点依赖日志定位。7. 旧工程迁移与兼容性7.1 自动转换机制如果平台提供了旧连线图工程到序列图工程的自动转换迁移的第一步是先用一个小的旧工程试转换不要直接拿生产工程操作。所谓“小工程”指节点少于十个、没有嵌套结构的测试工程。转换后重点检查三件事节点顺序是否符合原流程预期。原有连线是否全部转换成了订阅关系有没有掉线。依赖同一输出的多个下游节点订阅是否都被正确建立。自动转换通常能处理线性流程但对并行分支、状态依赖、环形反馈这类复杂结构转换结果需要人工验证。更稳妥的做法是转换完成后逐节点打开订阅面板核对数据源。7.2 迁移前的检查清单旧工程迁移到序列图之前可以按下面列表自查。工程中是否存在悬空线和孤立节点如果有先清理再迁移。是否有命名相同的算法模块迁移后会不会产生订阅歧义。是否直接使用了平台内置的全局参数功能这部分参数是否能映射为新版全局变量。是否依赖旧的画布注释和标签信息这些内容在新版序列图中是否有对应表达。迁移后是否保留了旧工程文件归档方便回退。7.3 常见迁移问题从实际经验看迁移最容易出现三类问题变量名冲突。旧工程中多个子流程各自定义了同名变量转换后合并到全局变量空间发生冲突。连线丢订阅。转换工具把一部分连线丢掉节点变成无输入的孤立节点。执行顺序错乱。旧图中存在不按空间位置排序的逻辑自动转换后执行顺序与预期不一致。这三类问题都建议用第 6 节的验证流程再跑一遍用最小工程先试通再迁移真实工程。8. 常见问题与排查方法问题现象可能原因排查方式解决方案新版本安装后工程文件打不开工程文件格式与新版不兼容或迁移工具未完成转换查看打开日志确认报错是格式错误还是反序列化异常用旧版本打开工程导出为中间格式后再导入新版转换后节点顺序与原来不一致旧画布空间位置排序与执行逻辑不一致逐节点核对执行日志和执行顺序手工调整序列顺序或重建子流程节点运行时报没有输入数据订阅源配置错误或订阅源节点未执行打开节点订阅面板检查数据源ID和字段重新选择正确的上游节点或全局变量全局变量读到旧值变量未在前一轮流程结束时重新赋值在流程结束阶段添加变量重置节点增加变量初始化节点检查是否被复位修改阈值后运行结果不变节点缓存的参数没有刷新检查节点参数缓存选项和运行日志关闭参数缓存或手动触发重新加载平台启动时相机连接失败相机 SDK 版本冲突或驱动被更新覆盖检查设备管理器和相机厂商驱动版本重装匹配版本的相机 SDK 或驱动批量执行时不同产品在同时使用全局变量结果串味并行任务共享了同一套全局变量检查并行任务是否使用独立上下文在子流程内使用局部变量或用批次标识隔离上下文流程执行超时或卡在某个节点节点等待外部输入、图像资源未释放查看节点日志和资源占用检查触发源与超时时间设置必要时重启流程订阅配置合法但保存后丢失工程文件未正常刷新或写入失败检查保存日志和磁盘权限另存一份新工程文件用于保存验证需要注意并行任务下的全局变量隔离是一个容易被忽略的坑。如果平台支持多流程并行运行全局变量是所有流程实例共享的还是每个实例独立的必须提前确认清楚。共享上下文里写入批次号或阈值很可能出现一个流程改了变量另一个流程跟着受影响的情况。9. 最佳实践与使用建议9.1 全局变量命名规范化全局变量的作用域是整个工程命名一定要有统一规则。建议采用“前缀语义”的方式例如cam_01_exposure、recipe_ok_threshold、batch_current_id。不要用a、b、tmp这样的名字。命名清晰后订阅面板的可读性会大大提高排查时查找变量也更快。9.2 控制订阅粒度订阅粒度要适中。图像数据这种高频大数据量建议走节点输出不要复制到全局变量阈值、批次号、统计结果这类低频状态可以走全局变量。订阅粒度控制得好序列图的主线不会被大对象拖慢调试时看数据流也更直观。9.3 控制序列层级序列图支持子流程嵌套但层级不是越深越好。建议主流程控制在十个节点以内子流程内控制在六到八个节点以内。层级过深时打开一个流程要层层展开才能看完整反而增加了阅读负担。遇到特别复杂的流程优先拆分成独立的子序列工程而不是堆在一个工程里。9.4 用批量数据回放验证新版本上产线前建议把历史采集的图像样本整理成测试集用序列图流程做批量回放。批量回放时可以记录每个节点的处理时间和结果判定与原生产记录比对。这样能暴露两类问题一类是流程逻辑在新编辑器下的行为变化另一类是阈值和参数在批量样本中的稳定性。9.5 接口与外部系统集成的合规边界如果平台提供 API 或脚本接口用全局变量作为外部入参是一种通用做法。例如生产管理系统在切换产品时通过接口写入配方阈值和批次号视觉流程不需要改动结构。但要注意外部接口必须限定访问范围避免无关主机随意写入变量图像数据和检测结果涉及产品信息、人员信息时要按工厂规定做访问控制和脱敏处理。用测试环境验证接口拿到明确结果后再接入实际生产链路。接口集成的通用调用模板如下实际地址和参数以平台文档为准。import requests import json url http://127.0.0.1:8000/api/v1/flow/run payload { flow_id: visual_inspection_main, variables: { recipe_ok_threshold: 0.92, batch_current_id: 20250601_A2 }, image_path: ./samples/part_001.jpg } response requests.post(url, jsonpayload, timeout120) print(response.status_code) print(json.dumps(response.json(), ensure_asciiFalse, indent2))如果返回结果里能包含每个节点的执行时间和最终判定说明这套接口可以用于后续的批量检测工具开发。如果接口只返回最终结果建议在平台日志侧补充过程数据的记录。10. 总结与下一步这次更新最值得先试的功能是序列图节点编辑器。它解决的问题不是“多了一个新样式”而是把节点依赖从画布连线迁移到了显式订阅关系上。先做一个最小工程把采集、预处理、检测、输出四个节点串起来切身体会一下订阅面板和序列层级的交互方式再判断它适不适合自己的工程习惯。全局变量值得花时间做一套命名规范。它和订阅机制是配合关系用好了能省掉大量冗余连线。最容易踩的坑是变量初始化和并行任务隔离这两点一定要在小工程里先验证。如果工程还停留在旧的连线式编辑器建议先备份再拿离线补丁包或完整安装包在测试电脑上做预升级用第 7 节的检查清单完成迁移验证。整个迁移过程最有价值的不是按钮上的转换而是逐节点核对订阅关系是否和原逻辑一致。后续可以继续往这几个方向扩展订阅关系的可视化分析、常用检测流程的模板化封装、全局变量配方的版本管理以及批量回放工具的建设。把这些基础打牢之后现场换新设备、切换新产品、交接新同事都会比现在省心不少。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑