目录
labeldetect 用户手册¶
这是 labeldetect 标签检测软件的使用手册,面向产线操作员、设备工程师和现场调试人员。
怎么打开这本手册¶
- 软件里按 F1:在运行端、调试端或任意检测工具窗口按 F1,会用浏览器打开随软件一起安装的离线手册,不需要联网。运行端菜单"帮助 → 用户手册"也是同一入口。
- 本机文件:手册在软件安装目录的
help文件夹里,双击index.html即可,搜索功能离线可用。 - 打印或存 PDF:左侧导航最下方"打印整本手册",打开后用浏览器打印并选择"另存为 PDF"。
手册怎么分¶
| 章节 | 看什么 |
|---|---|
| 快速上手 | 安装、授权、认识运行端与调试端、从零跑通第一个工程、账号与日志 |
| 检测项 | 十二种检测项各一页:用途、包含的检测框、参数含义和调参思路、常见误判 |
| 硬件接入 | 相机、光源、PLC、三色灯、传感器、扫码枪怎么接、怎么设 |
| 通讯 | 设备设置、编辑运行顺序、字符串协议、Modbus、MES 的配置与联调 |
| 常见问题 | 现场高频问题:现象、先查什么、怎么解决 |
| 名词解释 | 软件里的名词和图像处理术语的白话解释 |
| 更新日志 | 各版本的新增、修复与变更 |
找不到想看的内容
用右上角搜索框,支持中文关键词。搜不到就联系我们,我们会把它补进手册。
快速上手
快速上手¶
这一章带你从装软件、拿授权,一路做到产线上真正跑起来检测。没用过这套软件的人,按顺序读完这一章就能自己建出一个能用的工程。
软件长什么样:一个窗口,两个页面¶
软件只有一个窗口。顶部一行左边是「运行」「调试」两个页签,右边是"运行""停止""触发"和登录状态,两个页面都看得到这一行。
运行端就是「运行」页。产线上班用的就是它:点"运行"开始检测,屏幕左边大字显示 PASS 还是 NG,左边是良率和产量,右下角滚动着每一件的检测过程。操作员一整天只需要看这一页。
调试端就是「调试」页。建工程、画检测框、调参数都在这里:模板图、检测项列表、各种参数面板,是工程师干活的地方。点顶部页签就能在两页之间切换,不会另外弹窗。
两个页面的关系记住三句话:
- 进调试端要先登录(管理员以上);登出后自动回到运行端。
- 检测正在运行时可以切到调试端看,但绝大多数改动会被拒绝,提示"正在运行中, 请先关闭运行界面的运行状态"。要改参数就先停机。
- 工程只有一份。在调试端改完、点"保存工程",运行端立刻用的就是新的。
谁该看哪一章
产线操作员看完认识运行端就够了。设备工程师和现场调试人员要把这一章读完。
推荐阅读顺序¶
- 安装与授权 —— 软件装在哪、机器指纹怎么回传、授权文件放哪里。
- 认识运行端 —— 运行端每个区域、每个菜单是干什么的。
- 认识调试端 —— 任务树的四层结构、编辑模式和调试模式的区别。
- 从零跑通第一个工程 —— 端到端做一遍:建工程 → 接相机 → 拍模板图 → 画检测框 → 训练 → 试跑 → 上线。
- 账号、日志与工程文件 —— 密码怎么改、出问题日志怎么导给我们、工程怎么备份和搬到别的机器。
走完这五页,再按需要去看检测工具(每一种检测框的参数怎么调)、硬件接入(相机、光源、传感器)和通讯(PLC、上位机、MES)。
随时按 F1 打开这本手册¶
在运行端、调试端或任意一个检测工具窗口里按 F1,都会用浏览器打开这本手册;运行端菜单"帮助 → 用户手册"是同一个入口。手册随软件一起装在本机,不联网也能看、也能搜。
相关页面¶
安装与授权¶
软件不需要安装程序,拷贝到检测电脑上就能跑;但每一台机器都要单独授权,没有授权文件软件起不来。这一页讲清楚软件装在哪、数据存在哪,以及第一次开机怎么把授权办下来。
安装:拷过去,双击 exe¶
把我们提供的整个软件文件夹拷到检测电脑的本地硬盘(不要放在 U 盘或网络盘上),双击里面的 LabelDetect.exe 启动。文件夹里跟你有关的几样东西:
| 位置 | 是什么 |
|---|---|
LabelDetect.exe |
软件本体,双击启动。建议在桌面建一个快捷方式 |
help\ |
这本手册的离线版。软件里按 F1 打开的就是它 |
log\ |
运行日志。出问题要日志时从这里取,见账号、日志与工程文件 |
软件文件夹要能写
软件要往自己的 log\ 目录写日志。如果把文件夹放在 C:\Program Files 这类需要管理员权限的位置,日志会自动改写到用户目录下,排查问题时要多找一个地方。建议放在 D:\ 这类普通数据盘上。
数据目录¶
工程之外的东西(系统设置、账号密码、授权文件、有无检测和异常检测的注册库)不放在软件文件夹里,而是放在当前 Windows 用户的 .labeldetect 目录下,也就是:
C:\Users\<你的Windows用户名>\.labeldetect
重装或升级软件时,这个目录不要删——删了等于把授权、密码和注册库一起清掉。
首次启动:把授权办下来¶
第一次启动时,软件会先弹一个错误框:
软件尚未注册许可证, 请先获取许可证
点确定后会打开"授权码窗口"。整个授权就是"把这台机器的编号发给我们,我们发一个授权文件回来"这么一件事:
- 窗口上方"当前UUID"一栏里是这台机器算出来的唯一编号。点"导出UUID"把它存成一个
.txt文件(也可以直接把这一行字复制下来)。 - 把这个编号发给我们。
- 我们会回一个文件名形如
<你的UUID>.lic的授权文件。把它拷到这台机器上。 - 回到"授权码窗口",点"导入License",选中那个
.lic文件。选对了会提示"导入成功"。 - 点"确认"。校验通过会提示"授权码校验成功!",软件继续启动。
授权文件不要改名
导入时软件会检查文件名里是否含有本机编号,改过名的文件会被拒绝,提示"导入授权码出错,授权未更新,请确认授权文件是否正确"。收到什么名字就保持什么名字。
授权成功后,文件会被放进上面说的数据目录,路径是 C:\Users\<用户名>\.labeldetect\<UUID>.lic。备份这台机器时记得把它一起备份。
换机器要重新申请
机器编号是从主板、硬盘这些硬件上现算出来的,不是存在文件里的。所以换主板、换硬盘、换整机之后编号会变,原来的授权文件就不认了,要把新编号发给我们重新签一个。整盘克隆到另一台机器同样无效。
授权到期或者要加相机工位时¶
授权可以是永久的,也可以带到期日;授权里还写了这台机器最多能建几个相机工位。要续期或者要加工位数,流程和首次一样,只是入口换成菜单:
帮助 → 更新授权,打开的还是那个"授权码窗口",导入新的 .lic 再点"确认"即可。
更新授权后重启一次
新授权里的工位数量上限等信息要重新启动软件才会生效。导入成功后关掉软件再打开一次。
看版本号¶
帮助 → 关于,弹出的窗口里有"版本号"和"更新时间"。报故障给我们时请连版本号一起报。
同一个窗口里的"更新历史记录"按钮,打开的是逐版本的改动说明——哪一版修了什么、加了什么功能。
常见问题¶
启动时提示"许可证与本机不匹配"
拿到的 .lic 不是给这台机器签的,或者机器硬件换过了。打开"授权码窗口"核对"当前UUID"和文件名里的编号是否一致,不一致就把当前编号发给我们重签。
启动时提示"许可证签名校验失败(非法或损坏的许可证)" 文件在传输中损坏了(常见于微信/邮件转存、用记事本打开后又保存过)。请我们重发一份,传输时打包成压缩包。
启动时提示"授权已过期(到期日 ……)" 限期授权到期了。走上面的"更新授权"流程续期。
启动时提示"系统时间异常(检测到时间回拨), 启动失败" 这台电脑的系统时间被往回调了。把系统时间调回正确的当前时间(建议开启网络对时)后再启动。
打开授权窗口时提示"本机硬件唯一标识为占位符,授权可能与同型机冲突" 这台工控机的主板没有写入唯一标识。软件仍然可以授权和使用,但同型号的另一台机器有可能算出相同的编号。如果现场有多台同型机,请联系我们处理。
双击 exe 没反应,或者只闪一下
先确认没有另一个 LabelDetect 已经在运行(软件同一时间只允许开一个)。如果确实没有,到软件文件夹的 log\ 目录里找 startup_error.txt 和 startup_trace.txt,连同日志一起发给我们。
相关页面¶
认识运行端¶
运行端是产线上班时一直开着的那个窗口:开始检测、停止检测、看结果、看产量,都在这里。这一页把窗口上每一块、每一个菜单讲清楚,遇到看不懂的按钮可以回来对照。

窗口分成哪几块¶
| 区域 | 位置 | 作用 |
|---|---|---|
| 菜单栏 | 最顶上 | 建工程、开工程、进调试端、各类设置 |
| 页签 | 最顶上控制条左端 | 「运行」「调试」切换两个页面 |
| 顶部控制条 | 菜单栏下面一整行 | 页签,以及运行 / 停止 / 触发、登录状态、运行模式;调试端也看得到这一行 |
| 左侧参数区 | 窗口左边 | 在线/离线开关、通讯客户端、检测结果统计 |
| 大结果显示 | 左侧参数区下方 | 一米外就能看清的 PASS / NG 大字 |
| 设备状态条 | 左侧最下方 | 光源、通讯设备、数据串口、报警灯的连接状态 |
| 相机工位运行区 | 中间大片区域 | 每个检测方案一个小窗口,显示实时检测图 |
| 运行日志区 | 右下角 | 每一件产品的检测过程与耗时 |
| 状态栏 | 最底下一行 | 工程保存时间与工程路径 |
左右两边各有一个窄长条按钮,点一下可以把左侧参数区、右下日志区收起来,把画面让给检测图。
顶部:执行控制¶
| 按钮 | 作用 |
|---|---|
| 运行 | 开始检测。软件会先开相机等硬件,再进入等待触发状态 |
| 停止 | 停止检测,关掉硬件 |
| 触发 | 手动打一次检测(软触发)。只在运行中可点 |
| 「调试」页签 | 切到调试端。要先登录,且必须已经打开了工程;第一次进会转一下进度框;再点「运行」页签回来 |
| 登录 / 登出 | 切换登录状态;左边的字显示当前身份:未登录 / 管理员 / 超级管理员 |
按钮右边还有一行小字,以"运行模式:"开头,告诉你当前工程是不是试运行、是全自动还是人工复判、用的哪种并行方式。
回车键当触发用
在"设置 → 打开系统设置 → 通用设置"里勾上"开启回车键触发",运行中直接敲回车就等于点一次"触发",不用再去点按钮。只在「运行」页生效,切到调试端后回车不会触发。
菜单栏¶
菜单¶
| 菜单项 | 作用 |
|---|---|
| 新建工程 | 建一个新的检测工程,详见从零跑通第一个工程 |
| 打开工程 | 打开已有工程。选的是一个后缀为 .lproj 的文件夹,不是文件 |
| 打开最近工程... | 最近开过的 5 个工程,点一下直接打开;里面还有"清除最近工程" |
| 保存工程 | 保存当前工程,快捷键 Ctrl+S |
| 另存为... | 把当前工程另存到别的位置,常用来做改动前的备份 |
| 统计数据 | 打开历史数据查询窗口,按时间、SN 条码、产品型号、检测结果查,能导出 Excel |
| 调试页 | 和顶部「调试」页签一样 |
| 查看自定义变量 | 列出工程里已定义的自定义变量(原来只在调试端菜单里;要先登录;运行中也能打开查看,但删除按钮藏起来,停止后才能删) |
| 语言 | 中文 / English 切换 |
帮助¶
| 菜单项 | 作用 |
|---|---|
| 用户手册 | 打开这本手册。等同于按 F1 |
| 关于 | 看版本号和更新时间;里面的"更新历史记录"按钮列出逐版本改动 |
| 更新授权 | 导入新的授权文件,见安装与授权 |
设置¶
| 菜单项 | 作用 |
|---|---|
| 工程设置 | 和调试端"工程设置"是同一个窗口:最大失败数、检测 SN、人工复判、运行模式等跟工程走的设置;须先打开工程且停止运行 |
| 打开系统设置 | 存图、通用、良率三类设置,见下一节 |
| 打开账号设置 | 改三个账号的密码,见账号、日志与工程文件 |
| 试运行模式 | 打勾后照常检测、照常出结果,但不往统计数据里记账。调机、试料时用它,免得把当班良率搞脏。日志区会提示"试跑模式: 不统计数据" |
| 自动存图 | 打勾后按系统设置里的路径和格式保存检测图。它和"系统设置 → 存图设置 → 本地存图"是同一个开关,在菜单里放一份是为了随手开关 |
菜单里还有一项"打开通讯服务端界面"(内控 / 外控都有):手动发测试指令、看指令收发的测试工具。内控模式(指令由软件自己按运行顺序下发)下指令直接投给检测引擎,运行界面没有通讯面板;外控模式下它在本机起一个假服务端供调试。
菜单项是灰的点不动
除"调试页"外,上面这些设置项都只有超级管理员能用;管理员登录后能进调试端,并且在调试端里可以开"工程设置";未登录时全部禁用。先点右上角"登录"。
设备¶
只有一项"设备设置",里面是光源控制器、通讯设备(Modbus / TCP / 串口)、报警灯与传送带这些外设的串口和地址配置。详见通讯与硬件接入。
系统设置里有什么¶
"设置 → 打开系统设置"打开的窗口左边有三页:
存图设置
- "本地存图":存图总开关,下面填"存图路径"、"PASS图格式"(jpg 或 png)、"存图路径结构"。选好结构后,下面的"预览:"会直接把目录格式写给你看。
- "只存NG图片":强烈建议现场勾上,PASS 图很快就能把硬盘塞满。
- "是否循环存图" + "保存周期(天)":超期的旧图自动删。"磁盘空间预警:"到阈值时在日志区告警。
- "FTP存图":把图同时传到 FTP 服务器,填主机地址、端口、用户名、密码、输出目录,旁边"测试连接"可以先试通。
通用设置

- "标签相机工位"里的"数量限制:":本机最多能建几个相机工位。这一项由授权决定,一般是灰的。
- "自动加载最近工程":开机自动打开上次那个工程,产线机器建议开。
- "保存工程:速度优先 / 空间优先":工程存盘的取舍,默认速度优先。
- "开启回车键触发":见上文。
- "启用 MES 上传":现场不接 MES 的把这个勾去掉,软件就不再往 MES 报结果,也不再留"待补传"记录、不记错误、不弹红色告警条;勾上时下面的"NG是否上传MES"才可用。
- "NG是否上传MES"、"统计数据使能"、"统计数据保留时间"。
- "总结果整合所有检测结果(推荐勾选)":勾上后,只要有一个检测方案判 NG,整件就判 NG。
- "有无 AI 线程数(0 = 全部核)":有无检测(AI)推理最多占几个 CPU 线程,出厂是 4。多台网口相机同时拍、日志里报"取图丢包"时调小(例如 2),见相机;填 0 = 不限,用满全部核。
- "有无 AI 设备":有无检测(AI)用显卡还是 CPU 算。"自动(有 NVIDIA 显卡就用)"(出厂)在显卡版安装包 + NVIDIA 显卡上用显卡,否则用 CPU;"仅 CPU"强制用 CPU。重启软件后生效。见有无检测 · 显卡版与 CPU 版。
- "组内并行预拍":一个触发后面跟着好几台相机时,触发一到就让这几台一起拍完,曝光时刻都贴着触发点;出厂勾上。不勾就按顺序一台一台拍,只在我们排查拍照时刻问题时才会让你关掉。
- "检测引擎独立进程运行":出厂勾上。检测引擎跑在单独的进程里(任务管理器里会看到两个 LabelDetect.exe),引擎出问题时界面不跟着卡死,软件会弹"检测引擎重启中"、自动重启引擎并重新载入工程;外部控制(PLC / 上位机)连接不会自动重连,要在通讯面板手动点连接。去掉勾 = 引擎和界面在同一个进程里(老方式),只在我们排查问题时才会让你关掉。重启软件后生效。
- “检测内核”:选“新内核”或“旧内核(将删除)”,出厂为旧内核。先勾选“检测引擎独立进程运行”才能选,确认后重启软件生效(检测引擎自动重启时也会按新设置启动)。新内核让检测忙时的界面状态刷新和心跳照常响应;本次起不来会自动用旧内核并提示一次,设置不会被改掉。内部错误自动恢复时,运行日志会提示“检测内核内部错误已自动恢复,详见日志”。
上面几项改完点"确认":线程数、有无 AI 设备、"检测引擎独立进程运行"与"检测内核"要重启软件后才生效;"组内并行预拍"下次点"开始运行"就生效(鼠标停在相关控件上可看生效时间提示)。
良率
- "自动清零" + "自动清零时间:":每天几点自动把良率统计清零,通常设成交接班的点。这一页就这一项设置。
左侧参数区¶
登录模式设置:一个在线/离线开关和一个状态图标。接了 MES 时,连上显示"在线",断开显示"离线"。开关状态跟着 MES 的实际连接走。
通讯客户端:填 IP 和端口、连接超时,按钮在"连接"和"断开连接"之间切换,上面一行字显示"连接状态: 已连接"或"连接状态: 未连接"。工程打开后软件会自动连一次,连上就把这块收起来;没连上会一直显示着提醒你。
检测结果:这一块里嵌了几个小框。
| 小框 | 里面的数字 | 怎么理解 |
|---|---|---|
| 人工复判统计 | 判对率 | 只在工程启用了人工复判时才出现 |
| 直通良率 | 直通率 / 不良数量 / 通过数量 / 直通检测数量 | 产品只放一次就检测通过的比例 |
| 最终良率 | 良率 / 不良数量 / 通过数量 / 总检测数 | 允许重测的情况下,最终判定的比例 |
| 本班检测 | 检测次数 / 通过数量 / 不良数量 | 每检测一次就加一,不按 SN 去重。想知道"这个班到底测了多少次"看这个 |
下面两个按钮"清空已检测产品信息"和"清空良率检测结果"只有超级管理员能点。换批次、换型号时用"清空良率检测结果"把统计归零。
点一下"检测结果"标题上的勾选框可以把整块折叠收起来。
大结果显示:一整条色块,运行时显示当前这一件的结果:
| 显示 | 底色 | 含义 |
|---|---|---|
| NOT RUNNING | 灰 | 没在运行 |
| RUNNING | 金 | 运行中,正在等触发或正在检测 |
| PASS | 绿 | 这一件通过 |
| NG | 红 | 这一件不通过 |
| IGNORE | 绿底黄字 | 人工复判时选了忽略,这一件不计入统计 |
| MES上传失败 | 红 | 结果没能写进 MES |
判 PASS 和判 NG 时软件会分别放一声提示音。
大结果上方平时是空的,一旦发生过 MES 上传失败,会挂出一条红色大字告警,写明积压了多少件、原因是什么、留痕文件在哪。检测不会因此停下来,但这些件需要人工补传。MES 恢复连接后告警自动消失,并在日志区再报一次还有多少件要补。
设备状态条:最下面一行小色块,只显示这台机器确实启用了的外设——光源、通讯(带设备类型)、数据串口、报警灯/传送带。绿色是好的,红色是断的。相机不在这一行里(相机状态请看中间的检测图有没有更新)。
中间:相机工位运行区¶
每一个检测方案占一个小窗口,标题是"相机工位名-检测方案名"。方案的外框定位是关的,标题会带"(外框定位关)"——这种方案里没有自己定位的检测项不跟产品位置走,见标签外框。检测一件之后,标题条会变绿(PASS)或变红(NG),窗口里是这一次的检测图,NG 的地方画着框。
这些小窗口可以用鼠标拖动、拉大拉小,摆成你想要的样子;摆好后保存工程,下次在这台电脑上打开还是这个布局。布局记在本机(C:\Users\<用户名>\.labeldetect\layout\<工程名>.json),不随工程文件走——换台电脑打开同一个工程,按那台电脑自己的布局来(第一次是默认排布)。布局按工程名记:另存为的副本会带走当前布局;在磁盘上改了工程目录名要重新摆一次;两个同名工程共用一份布局。
双击任意一个小窗口,会弹出对比窗口,把这一件的原图和缺陷图放大了看。
右下角:运行日志区¶
一行一条,记录每一件的检测过程、各步耗时、告警和错误。下面两个按钮:
- "查看日志":直接在软件里翻最近 200 行系统日志,不用去找文件。
- "导出诊断包":把日志、崩溃与挂死记录、节拍库、系统设置和当前工程(不含图片)打包成一个 zip,发给我们排查问题用。详见账号、日志与工程文件。
常见问题¶
点"运行"没反应,或者弹出"无法开始运行" 先看提示里写的原因。常见的是相机没接好、相机工位数量超出授权、工程里的指令和授权对不上。按提示处理后再点。
点"运行"后弹"硬件启动告警" 相机或光源没打开成功。检查网线/USB 线、相机供电,以及是不是有别的程序(比如相机厂商的调试软件)正占着相机。
检测结果里的数字不动 确认不是开着"试运行模式"。试运行只影响"统计数据"这张历史表;如果连"本班检测"的检测次数都不涨,说明根本没触发到检测,查触发信号。
菜单大半是灰的 没登录,或者登录的是管理员而不是超级管理员。点右上角"登录"换身份。
相关页面¶
认识调试端¶
调试端是工程师干活的窗口:建相机工位、拍模板图、画检测框、调参数、试跑。这一页讲清楚它的结构和每一处入口,具体某个检测框怎么调,去看检测工具。
前置条件¶
- 运行端里已经新建或打开了一个工程。没有工程时点「调试」页签会提示"当前工程为空, 请先新建/打开工程"。
- 已用管理员或超级管理员登录。
怎么进来¶
点窗口顶部的「调试」页签,或者菜单里的"调试页"。没登录的话会先弹登录框,选账号类型、输密码。第一次进会转一下进度框,随后整页换成调试端。
点「运行」页签随时回运行端,调试端留在后台,再点回来不用重新加载(后台时检测结果不往调试端刷,切回来看到的是上次的图,下一件出结果才更新)。
身份不同能做的事不同:
- 超级管理员:全部功能。
- 管理员:不能新建相机工位,相机工位和检测方案上的右键菜单不弹出,模板图不能改不能删。可以改检测框参数、试跑、保存。
当前身份显示在左栏靠下的位置。

菜单¶
调试端没有自己的菜单栏,下面这些都在顶部统一的菜单栏里:
| 菜单项 | 在哪 | 作用 |
|---|---|---|
| 工程设置 | "设置"菜单 | 工程级设置,跟工程走,见下文。管理员在调试端里也能开 |
| 打开系统设置 | "设置"菜单 | 本机设置(存图、通用、良率);只有超级管理员 |
| 设备设置 | "设备"菜单 | 光源控制器、通讯设备、串口、三色灯;只有超级管理员 |
| 保存工程 | "菜单" | 保存,快捷键 Ctrl+S。保存不做训练,训练是单独一个按钮 |
| 查看自定义变量 | "菜单" | 列出工程里已定义的自定义变量,供通讯输出和逻辑检测引用 |
运行中这三项设置都点不开,先停止运行。
"工程设置"里只有一页检测参数设置:产品最大检测失败次数、检测 SN、启用外部扫码枪、人工复判、人工复判下静默密码、运行模式(正常 / 多线程)、软件错误处理模式、运行时长包含相机触发时间、产品型号。
四层结构:相机工位 → 检测方案 → 检测项 → 检测框¶
这四个词贯穿整套软件,先记住它们的关系:
| 层 | 是什么 | 在哪儿看 |
|---|---|---|
| 相机工位 | 一路取像通道,绑一台相机 | 左栏上方的树,第一层 |
| 检测方案 | 这一路相机要拍的一种画面,持有自己的模板图和相机/光源参数 | 左栏树的第二层 |
| 检测项 | 模板图上划出的一个检测对象,比如"标签外框""固定区域_1" | 右栏树的第二层 |
| 检测框 | 检测项底下的具体算子,比如"搜索参数""定位参数""缺陷参数" | 右栏树的第三层 |
左栏管前两层,右栏管后两层:在左栏选中哪个检测方案,右栏就列出那个方案下的检测项和检测框。
右栏树里"标签外框"那一行后面的括号是定位状态(定位:特征点 / 定位:模板匹配 / 定位:关),见标签外框。
左栏:相机工位¶
顶上是"编辑运行顺序"按钮(下面单说),底下是树,最下面是"新建相机工位"按钮。
在相机工位上点右键:
| 菜单项 | 作用 |
|---|---|
| 添加检测方案 | 在这个工位下加一个检测方案 |
| 设置相机工位 | 改工位名、绑定/断开相机、设相机读图超时 |
| 禁用相机工位 / 启用相机工位 | 暂时让整个工位不参与检测 |
| 删除相机工位 | 连同下面的检测方案一起删掉 |
在检测方案上点右键:
| 菜单项 | 作用 |
|---|---|
| 重命名检测方案 | 改名 |
| 设置检测方案 | 打开"检测方案设置":全局参数设置(一次改完这个方案下同类检测框的共用参数)和基础参数设置(禁用运行时间、图像取反、触发方式(主动触发 / 被动触发 / 模板触发)、模板触发用的防抖 / 防重拍 / 触发间隔、拍后清缓存、丢包补拍次数、读图超时) |
| 模板触发 | 只在这个方案的触发方式选了"模板触发"时才出现 |
| 设置相机参数 | 打开相机参数配置界面,调曝光、增益、触发模式、HDR、光源通道。详见相机接入与参数 |
| 禁用检测方案 / 启用检测方案 | 暂时跳过这个方案 |
| 删除检测方案 | 删掉 |
单击某个检测方案就切到它,中间和右边的内容随之刷新。
改动结构后运行顺序自动跟着变
新建的检测方案默认进阶段 1,删掉的自动从运行顺序里消失,相机工位或检测方案改名也不用重排。只有要把相机换到别的阶段、或者添加通讯触发 / 输出时,才需要点左栏顶上的"编辑运行顺序"。这个窗口怎么用,见编辑运行顺序。
右栏:检测项树¶
树的第一层是固定的 12 个类型分组:标签外框、有无检测、异常检测、固定区域、可变区域、条码字符对、多行字符、码检测、颜色抽取、字符识别、卡尺工具、逻辑检测。你建的每个检测项挂在对应分组下面,检测项下面再挂它的检测框。
双击检测框会打开那个工具的参数窗口——这是调参数的主入口。 双击检测项的名字可以改名。
在检测项上点右键,能做的事随类型不同,常见的有:
| 菜单项 | 作用 |
|---|---|
| 运行此检测项 | 只跑这一个检测项,快速看它自己的结果 |
| 禁用此检测项 / 启用此检测项 | 暂时跳过它。注意:没启用的检测项点不开参数窗口,会提示"当前检测项未启用, 请先右键启用该检测项" |
| 删除检测项 | 删掉 |
| 添加到副模板 | 把这个检测项也加到副模板图上 |
| 添加细节检测框 / 添加屏蔽内容检测框 | 在这个检测项范围内再划小框:细节框单独判,屏蔽内容框则是"这一块不要看" |
| 使用原图 | 这个检测项在未经亮度调整的原图上检测,而不是拉伸后的图 |
| 设置为SN码 | 把这个检测项读到的内容当作本件的 SN,存图和 MES 都用它 |
| 设为自定义变量 | 把读到的内容存成变量,供通讯输出或逻辑检测引用 |
在树的空白处点右键,有"展开所有检测项"和"收缩所有检测项"。
中间:模式、运行与 ROI 操作¶
编辑模式 / 调试模式¶
| 模式 | 干什么 | 这时能看到的按钮 |
|---|---|---|
| 编辑模式 | 在模板图上建检测项、画框、训练 | 单模板运行、训练工程、添加模板图、新建检测项、模板图旋转拉伸、ROI 锁定/移动/向导 |
| 调试模式 | 拿真实的待检图试跑,看哪儿判错了再回去改 | 单模板运行、整体运行、单次触发、打开调试图、打开调试文件夹 |
调试模式看到的图和编辑模式不一样
调试模式下"编辑窗口"里显示的是当前图经过定位矫正、亮度处理之后的结果图,和"当前图原图"标签页里的图不是同一张。这是正常的。
要能切到调试模式,这个检测方案必须先有标签外框。
运行按钮¶
| 按钮 | 作用 |
|---|---|
| 单模板运行 | 只拿主模板图当比对模板跑一遍,结果进"当前对比结果"标签页 |
| 整体运行 | 主、副模板图全部当比对模板跑,结果进"所有对比结果"标签页 |
| 训练工程 | 训练当前检测方案的模板,快捷键 Ctrl+T。只有编辑模式下能用 |
| 单次触发 | 让相机真拍一张回来当调试图。只有调试模式下有 |
跑完之后,点"查看运行时间"(右栏顶上)可以看每个检测项各花了多少毫秒。
改完一定要先训练再保存
改了检测框的位置、模板图的旋转拉伸参数之后,必须点"训练工程",否则改动不会生效。保存工程本身不会替你训练。训练比较慢,窗口会提示"正在进行训练...此操作耗时较长, 请等待..."。
ROI 操作¶
ROI 就是你在图上画的那些框。编辑模式下中间这一条有三个入口:
- ROI锁定:打开后所有框都拖不动了,防止调参数时误拖。运行中软件会自动锁上,而且不让解锁。
- ROI移动:整体平移所有框。填"相对水平方向移动"和"相对垂直方向移动"的像素数,点"确认移动"。用于模板图整体偏了一点、又不想重画所有框的情况。
- ROI向导:自动找出图上一块块内容并帮你批量建检测项。用法:先手动把"标签外框"画好并训练一次,再点"ROI向导",在窗口里点运行让它自动检测,逐个选好"检测项类型"后点"添加",最后点"完成"。成像不好时会漏掉一些区域,漏的手动补。
拖一个框就建一个检测项¶
中间还有一行:勾上"启用拖拽建检测项",再选右边的类型(外框 / 有无 / 固定 / 可变 / 条码字符 / 解码 / 抽色 / 字符识别 / 异常),然后直接在模板图上拖一个框,软件会问"是否新建 XX 检测项?",确认后就建好了。比走"新建检测项"对话框快很多。这个功能在调试模式下不起作用。
模板图操作¶
左栏中间是"模板图操作":上面是模板图列表,下面是"添加模板图"和"新建检测项"两个按钮。
主模板图和副模板图:每个检测方案只能有一张主模板图,检测项都是画在它上面的;副模板图可以有多张,用来兼容同一种标签的合法差异(比如字体、字号、字间距变了),避免被当成缺陷。
怎么得到模板图,两条路:
- 从相机拍:右键检测方案 → "设置相机参数",在相机参数配置界面里点运行让相机出图,调好曝光和焦距后,点工具栏上的"设置为模板图"。
- 从文件导入:点"添加模板图",填模板图名称、选"主模板图"还是"副模板图"、选图片路径,确认。
在模板图列表里点右键:"设置模板图"(换成另一张图)和"删除模板图"。删副模板图没有提示;删主模板图会把这个检测方案上所有检测项一并清空,所以会先问你一次。
模板图旋转拉伸¶
左栏下方"模板图旋转拉伸"这一块,用来把拍歪了、打光不匀的模板图掰正、调匀:
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 水平翻转 / 垂直翻转 | 把模板图镜像过来 | 相机装反、经反射镜取像时才用 |
| 旋转度(-180~180) | 把模板图转正的角度 | 标签明显歪时填;能在机械上摆正就不要靠它 |
| 拉伸类型 | 均匀光照 / 非均匀光照 / 光照拉伸 | 整张亮度均匀选"均匀光照";条形光源打得一边亮一边暗选"非均匀光照" |
| 拉伸系数 / 拉伸偏移 | 调整图片整体亮度,值越大越亮 | 以字迹清楚、不过曝为准,一点一点加 |
| 光照邻域范围 | "非均匀光照"下,亮度校正参考多大一片区域 | 保持默认;字迹周围出现发白光晕时调小 |
这一块改了必须重新训练
界面上那行提示写得很清楚:"注意:修改旋转拉伸参数后需要重新训练"。改完记得按 Ctrl+T。
拿真图试跑¶
切到调试模式后,左栏下方会出现这几个入口:
- 打开调试图:选一张图跑一遍。
- 打开调试文件夹:选一个文件夹,把里面的图一张张翻着跑。打开时会让你"输入屏蔽调试图片类型:",填上不想跑的扩展名即可;下面一行会显示"屏蔽类型: ..."。左右两个箭头按钮翻上一张/下一张。
- 单次触发:让相机真拍一张。
窗口最底下常驻显示"模板图路径:"和"调试图路径:",随时知道现在比的是哪两张图。
常见问题¶
点什么都提示"正在运行中, 请先关闭运行界面的运行状态" 运行端还在跑。回运行端点"停止",再回来改。
双击检测框打不开参数窗口 多半是这个检测项被禁用了,右键先"启用此检测项"。
切不到调试模式(按钮是灰的) 这个检测方案还没有标签外框。先建标签外框并训练。
点"ROI向导"提示"请先添加标签外框并确认模板已经旋转拉伸" 向导要靠标签外框定位,先把外框画好、点一次"训练工程",再用向导。
改了参数,回运行端跑还是老样子 两件事都要做:在调试端点"训练工程",再点"保存工程"。
相关页面¶
从零跑通第一个工程¶
这一页从新建工程一直做到产线上点"运行",中间用最常用的"固定区域"检测项举例。做完这一遍,你就明白整套软件的操作节奏了。
全程大约需要半小时。建议先拿一张合格的标签样品放在相机下面,别急着上线。
前置条件¶
- 软件已经授权并能正常启动,见安装与授权。
- 相机已经接上电脑(网口或 USB),能被相机厂商的工具找到。
- 你手上有超级管理员密码。
第 1 步:登录并新建工程(运行端)¶
- 在运行端点右上角的"登录",账号类型选"超级管理员",输密码,确定。左边的字会从"未登录"变成"超级管理员"。
- 点菜单栏的"菜单 → 新建工程"。
- 在"新建工程"窗口点"选择路径",给工程起个名字(一般用产品型号),选一个数据盘上的目录保存。软件会建出一个
<你起的名字>.lproj的文件夹,工程的一切都在这个文件夹里。 - 点"确认"。提示"新建成功"就算完成。
看到什么算成功:窗口最底下的状态栏出现了工程路径;"运行"按钮从灰变亮。

点顶部的「调试」页签。整页换成调试端,中间是一片空白,左上角的"相机工位"框里还什么都没有。
第 3 步:新建相机工位并选相机¶
一个相机工位 = 一路取像通道 = 一台相机。
- 点左栏"相机工位"框底下的"新建相机工位"。
- "相机工位名称:"保持默认(相机工位1)或者改成好认的名字,比如"正面"。名字最长 20 个字,不能带括号。
- "相机工位类型:"保持"标签缺陷检测"。
- "指定相机品牌:"选你的相机品牌(mindvision / hikrobot / basler / do3think)。
- 下面的表格里列出了电脑上找到的相机,有序号、序列号、品牌、信息、自定义名称。在要用的那一台前面打勾。
- 点"确认"。
看到什么算成功:左栏"相机工位"框里出现了一条工位。鼠标停在上面会显示它绑定的相机序列号。
找不到相机怎么办
表格是空的说明软件没枚举到相机。先检查线和供电,再用相机厂商的工具确认能出图,最后确认没有别的程序占着这台相机。也可以先不选相机,建好工位之后右键"设置相机工位"再补绑。接线细节见相机接入与参数。
第 4 步:新建检测方案¶
一个检测方案 = 这一路相机要拍的一种画面 + 它的模板图 + 它自己的相机和光源参数。
- 在刚建的相机工位上点右键 → 添加检测方案。
- 填"检测方案名称:",确认。
看到什么算成功:工位下面挂出一条检测方案,单击它以后中间的区域亮起来了。
第 5 步:调相机参数并拍模板图¶
- 在检测方案上点右键 → 设置相机参数,打开"相机参数配置界面"。
- 点工具栏上的运行按钮(三角形),让相机连续出图。
- 调曝光时间、增益、焦距,直到标签上的字迹清楚锐利、对比度高、没有过曝。参数含义见相机接入与参数。
- 图调好了,点工具栏上的设置为模板图按钮。窗口里会出现一行绿字提示设置成功。
- 点停止按钮让相机停下,把"触发模式"改成产线实际要用的模式(一般是外部触发),设好触发延时和去抖时间。
- 点"保存配置"。这一步不能忘,不点等于白调。
- 关掉这个窗口。
看到什么算成功:回到调试端主窗口,左栏"模板图操作"里出现了一张模板图,中间的"编辑窗口"里显示着刚拍的那张图。
也可以直接导入图片
如果你已经有一张合格样品的照片,点左栏的"添加模板图",填名称、选"主模板图"、选图片路径即可。
第 6 步:把模板图掰正、调匀(可选)¶
如果标签在画面里是歪的,或者一边亮一边暗,用左栏的"模板图旋转拉伸":
- 歪:在"旋转度(-180~180)"里填角度把它转正。
- 一边亮一边暗:"拉伸类型:"选"非均匀光照"。
- 整体偏暗:调"拉伸系数:"和"拉伸偏移:",一点一点加到字迹清楚为止。
这一块改完之后必须重新训练,后面第 8 步会做。
第 7 步:建第一个检测项——标签外框¶
标签外框是一切的基础:它告诉软件"标签在画面里的哪一块",后面所有检测项的位置都是相对它算的。每个检测方案必须有,而且只能有一个。
- 确认中间的模式选的是"编辑模式"。
- 点左栏的"新建检测项","检测项类型:"选"标签外框",点"确认"。
- 图上出现一个框,拖动它的边把整张标签纸刚好框住。
也可以用更快的方式:勾上中间那行的"启用拖拽建检测项",选"外框",直接在图上拖一个框,软件问"是否新建 标签外框 检测项?"时点"是"。
看到什么算成功:右栏的树里,"标签外框"分组下面多了一项。
第 8 步:训练¶
点中间的"训练工程"按钮(或按 Ctrl+T)。窗口提示"正在进行训练...此操作耗时较长, 请等待...",等它跑完。
看到什么算成功:没有弹出报错框。
第 9 步:建一个固定区域检测项¶
"固定区域"用来检查印刷内容有没有印错、印花、缺墨——凡是每一件都长得一模一样的图案、文字块,都用它。
- 点"新建检测项","检测项类型:"选"固定区域","使用原图:"一般选"否"(在调过亮度的图上检测),点"确认"。
- 把新出现的框拖到要检查的那块内容上,框略大于内容一圈即可。
- 在右栏的树里展开这个检测项,能看到三个检测框:
| 检测框 | 管什么 |
|---|---|
| 搜索参数 | 允许这块内容相对模板偏移多大范围 |
| 定位参数 | 在搜索范围里怎么把它精确找准 |
| 缺陷参数 | 找准之后,和模板比差多少算缺陷 |
- 双击其中任意一个可以打开它的参数窗口。第一遍先用默认值,跑起来看效果再回头调。各参数的含义见检测工具。
内容多的标签用 ROI 向导
一张标签上有十几块内容时,一个个画太慢。先把标签外框画好、训练一次,再点中间的"ROI向导",让它自动找出各块内容,你逐个选好类型点"添加",最后点"完成"。漏掉的手动补。
第 10 步:再训练一次,然后单模板运行¶
- 点"训练工程"。
- 点"单模板运行"。这是拿主模板图自己跑自己,主要用来检查有没有配错。
看到什么算成功:界面自动跳到"当前对比结果"标签页,各个检测项都没有报错、没有画出红框。如果模板图自己跑自己都判 NG,说明参数设得太严,先回去放宽。
第 11 步:拿真品试跑¶
- 把中间的模式切到"调试模式"。
- 点"单次触发"让相机真拍一张,或者点左栏的"打开调试图"选一张之前存的图。
- 点"整体运行"。
- 看"所有对比结果"标签页。判错的地方左键点一下那个框,右栏会高亮对应的检测框,双击进去调参数。
- 调完切回"编辑模式"训练,再切回来试。如此反复,直到合格品稳定判 PASS。
- 拿几个已知的不良品试一遍,确认能判出 NG。
调试模式下图看着不一样是正常的
"编辑窗口"里显示的是当前图经过定位矫正和亮度处理后的结果图,"当前图原图"标签页里才是相机原样拍到的图。
第 12 步:保存工程¶
点菜单"菜单 → 保存工程",或者按 Ctrl+S。
保存不等于训练
保存工程不会顺手帮你训练。顺序永远是:改完 → 训练工程 → 保存工程。
第 13 步:回运行端开跑¶
- 结构建好之后,回到调试端左栏顶上点一次"编辑运行顺序",确认拍照与通讯的次序是你要的(单相机单方案的简单工程,默认顺序通常就能用)。配置方法见通讯。
- 点顶部的「运行」页签,回到运行端。
- 点"运行"。软件会先开相机等硬件,大结果标签变成金色的 RUNNING。
- 让一件产品过一遍(或者点"触发"手动打一次)。
看到什么算成功:中间的相机工位运行区里出现检测图,标题条变绿(PASS)或变红(NG);左边"检测结果"里的数字在涨;右下角的日志区一行行往下滚。
先开试运行模式
刚上线的头几十件建议先在"设置 → 试运行模式"上打勾。照常检测、照常出结果,但不往统计数据里记账,免得把当班良率搞脏。稳定之后再取消勾选。
常见问题¶
"新建工程"是灰的 没有用超级管理员登录。
点「调试」页签提示"当前工程为空, 请先新建/打开工程" 先新建或打开一个工程。
在调试端改什么都提示"正在运行中, 请先关闭运行界面的运行状态" 运行端还在跑,先回去点"停止"。
切不到"调试模式" 这个检测方案还没建标签外框,或者没训练过。
"新建相机工位"点了提示"检测面数已达上限, 请联系售后人员" 授权里写死了本机能建几个工位。要加工位请联系我们更新授权,见安装与授权。
运行端点"运行"后一直是 RUNNING,产品过去了也不检测 没收到触发信号。先在调试端用"单次触发"确认相机本身能出图,再查触发接线与相机的触发模式设置,见传感器经串口 IO 控制器触发拍照。
相关页面¶
账号、日志与工程文件¶
这一页讲三件平时不用管、但一出事就必须知道的事:密码怎么改、日志在哪怎么导给我们、工程文件长什么样怎么备份。
账号与权限¶
软件有两个能登录的身份,都在运行端右上角的"登录"按钮里切。登录窗口标题是"管理员登录",里面填"账号类型:"和"密码:"。
| 身份 | 能做什么 |
|---|---|
| 未登录 | 只能看。所有设置菜单都是灰的,进不了调试端 |
| 管理员 | 能进调试端改参数、试跑、保存工程。不能新建相机工位,不能改删模板图;"设置"菜单里只有切到调试端时能开"工程设置",其它设置项仍然是灰的 |
| 超级管理员 | 全部功能:新建工程、系统设置、设备设置、账号设置、试运行模式、自动存图、清空统计,以及调试端的全部操作 |
出厂密码装机时由我们告知(手册里不公开),装机后第一件事就是改掉。
登录窗口里还有"本地校验"和"服务器(MES)校验"两个选项。常规现场用"本地校验",也就是拿本机保存的密码验;只有接了 MES 账号体系的现场才用"服务器(MES)校验"。
改密码¶
运行端菜单 设置 → 打开账号设置(需要超级管理员),弹出"账号管理窗口",两个输入框分别对应"管理员:""超级管理员:",改完点"确认",提示"账号设置保存成功"。
品质管理员这个角色已经没有了
老版本里还有第三个角色"品质管理员",现在已经彻底退役:登录窗口没有它,账号设置里也不再有那个密码框。开了人工复判的现场,复判窗口的"账号类型:"里只有"超级管理员"一项,填的就是超级管理员密码。升级时老的账号配置文件里残留的品质管理员密码会被自动忽略,不用手工清理。
登出¶
再点一次那个按钮(此时写着"登出")即可回到未登录状态。登出会顺手把打开着的调试端关掉。
日志:在哪、怎么给我们¶
软件写三类日志,都在软件安装目录的 log\ 文件夹里:
| 文件 | 内容 |
|---|---|
system.log |
系统与操作日志:谁登录了、开了哪个工程、报了什么错 |
detection_info.log |
每一件产品的检测明细 |
thread_monitor.log |
运行线程的内部监控记录,排查卡顿和闪退时我们要看 |
日志每天午夜换一个新文件,各保留最近 5 份。
日志可能不在安装目录
如果软件装在没有写权限的位置(比如 C:\Program Files),日志会自动改写到 C:\Users\<用户名>\.labeldetect\log。找不到就去那边看。用下面的"导出诊断包"最省事,它自己知道去哪儿拿。
快速看一眼¶
运行端右下角的"查看日志"按钮,直接在软件里显示系统日志最后 200 行。现场自查先看这个。
导出发给我们¶
- 点运行端右下角的"导出诊断包"。
- 在弹出的窗口里点"选择路径",选一个好找的位置(比如桌面)。文件名已经填好了(
labeldetect_diag_电脑名_日期_时间.zip),不用改。 - 点"确认导出"。等它跑完,提示"导出成功"。
导出的是一个 .zip 诊断包,里面有:
- 日志目录下的全部文件:上面三类运行日志,以及软件闪退、卡死时自动留下的崩溃与挂死记录(单个超过 128 MB 的日志只带最后 32 MB,包里的文件名多一个
.tail后缀); - 节拍库:每一件产品的各段耗时与判定记录;
- 系统设置;
- 当前打开的工程,不含图片(工程里的模板图等图片资产不带)。
把这个 zip 发给我们即可。
报故障时一起发这几样
诊断包、"帮助 → 关于"里的版本号、出问题那一刻的屏幕照片,以及出问题那几件的存图(诊断包里不带存图)。有这四样我们基本能定位问题。
工程文件¶
工程是一个文件夹¶
一个工程就是一个后缀为 .lproj 的文件夹,比如 D:\projects\A面标签.lproj。打开工程时选的也是这个文件夹,不是里面的某个文件。选错了软件会提示"所选文件夹不是有效工程(缺 manifest.yaml)"。
文件夹里面是这样的:
| 里面的东西 | 是什么 |
|---|---|
manifest.yaml |
工程清单,当前这一版的全部配置 |
assets\ |
模板图等图片文件 |
history\ |
最近几版的旧清单 |
保存工程时软件是"先写新的、最后一步才切换",所以保存到一半断电也不会把工程写坏:要么还是上一版,要么已经是新版,不会出现半截的工程。
工程里存了什么、没存什么¶
存在工程里(换机器会一起带走):相机工位与检测方案的结构、绑定的相机序列号、模板图、所有检测项和检测框的参数、运行顺序里的指令、通讯地址与端口、运行模式与人工复判等工程级开关。
不在工程里(跟着这台机器走):
| 内容 | 存在哪 |
|---|---|
| 存图路径、存图格式、良率自动清零等系统设置 | C:\Users\<用户名>\.labeldetect\sys_config.yaml |
| 两个账号的密码 | C:\Users\<用户名>\.labeldetect\account_config.yaml |
| 运行端检测图小窗口的摆放布局 | C:\Users\<用户名>\.labeldetect\layout\<工程名>.json |
| 授权文件 | C:\Users\<用户名>\.labeldetect\<UUID>.lic |
| 有无检测的注册库 | C:\Users\<用户名>\.labeldetect\ai_support |
| 异常检测的注册库 | C:\Users\<用户名>\.labeldetect\anomaly |
| 光源控制器、通讯设备、报警灯等设备设置 | 同 sys_config.yaml |
备份与搬到别的机器¶
备份:把整个 .lproj 文件夹拷走就是一份完整备份。改大动作之前,用运行端菜单"另存为..."存一份带日期的副本更省事——它只导出一份拷贝,不会切换你当前正在用的工程。
搬到另一台机器,按顺序做这四件事:
- 把
.lproj文件夹整个拷过去,在新机器上用"打开工程"打开。 - 重新绑相机:新机器上的相机序列号和原来不一样。在调试端每个相机工位上右键"设置相机工位",重新勾选相机。
- 重新配系统设置和设备设置:存图路径、串口号、通讯地址这些都是跟机器走的,要在新机器上重新设一遍。
- 如果工程里用了有无检测或异常检测,注册库要单独搬:在原机器打开那个工具窗口,点"导出"把类型存成 zip;在新机器上打开同一个工具窗口点"导入"选那个 zip,导入后提示"导入成功, 请重新打开设置界面"。
注册库不跟着工程走
这是最容易漏的一步。只拷 .lproj 过去,有无检测和异常检测会因为找不到注册图而失效。
检测图存在哪¶
存图的开关和路径在运行端"设置 → 打开系统设置 → 存图设置"里,是跟着机器走的设置,不在工程里。选好"存图路径结构:"之后,下面的"预览:"会把目录格式直接写给你看。
两种常用结构:
按 SN+时间戳 分目录
存图根路径\工程名_SN_时间戳\PASS 或 NG\相机工位名_检测方案名\工程名_SN_时间戳.jpg
读不到 SN 时,目录名里就没有 SN 那一段。
按 物料号/供应商/批次 分目录
存图根路径\物料编码\供应商\批次\PASS 或 NG\相机工位名_检测方案名\时间戳.jpg
物料编码、供应商、批次三项在同一页填,三项都不能留空,否则运行时会报"物料编号/供应商/批次不能为空"。
两种结构有三个共同点:
- PASS 图按你在"PASS图格式:"里选的格式存(jpg 或 png)。
- NG 会存两张:一张原图(png),一张文件名以
_DEFECT.jpg结尾的缺陷图,上面画着判 NG 的框。 - 勾了"只存NG图片"就不存 PASS 图。现场强烈建议勾上,PASS 图很快能把硬盘塞满。
定期清理
在同一页勾上"是否循环存图"并设好"保存周期(天)",过期的图会自动删。再把"磁盘空间预警:"设成一个有余量的值,快满时日志区会提前告警。
常见问题¶
忘了超级管理员密码 联系我们处理。
点"导出诊断包"没反应 先用"查看日志"确认日志本身有内容。如果导出路径选在了没有写权限的位置,会提示"当前选择路径没有读写权限, 请重新选择路径",换一个位置再试。
换了电脑后打开工程,相机全是断开的 正常。相机是按序列号绑定的,换机器后要按上面"搬到别的机器"的第 2 步重新绑。
存图目录里只有 NG 没有 PASS "只存NG图片"勾上了。
相关页面¶
检测项
检测项总览¶
这一章讲的是"在模板图上画框、告诉软件这里要检查什么"。本页先把几个绕不开的词说清楚,再给一张"该用哪种检测项"的对照表,最后是所有检测项都一样的那几个操作。
在任意检测工具窗口里按 F1,打开的就是本章。
先认识五个词¶
模板图:一张标准良品的照片,所有的框都画在它上面。一个检测方案至少要有一张模板图,它叫主模板图;如果同一个工位上会流过几种外观不同但要求一样的产品,可以再添几张副模板图;把某个检测项右键"添加到副模板"之后,运行时这个检测项会在各张模板图上各定位一次,取定位相似度最高的那张来比。主模板图和副模板图都在"模板图操作"里用"添加模板图"加入;哪些检测项要跟着版式变,就逐个右键"添加到副模板"。
检测项:模板图上划出来的一个检查对象,比如"标签外框""固定区域_1"。它在调试端左侧的树里是一条,新建时软件会自动按"类型_序号"起名。本章一页讲一种检测项。
检测框:检测项下面挂的一层,是真正干活的算子。同一个检测项往往有好几个检测框,各管一件事——比如"搜索参数"负责允许目标漂多远,"多行字符参数"负责认字。在树里双击一个检测框,就打开它的参数窗口。
训练:把模板图上的内容记成"标准答案"的过程。画完框、改完参数后要点工具栏的"训练工程"(快捷键 Ctrl+T),不训练就跑,结果不作数。用 AI 的两种检测项(有无检测、异常检测)还要额外注册样本图,见各自的页面。
PASS / NG:每个检测框给自己的结论,检测项汇总它下面所有检测框,一件产品的总结果再汇总所有检测项——只要有一个检测项判 NG,整件就是 NG。所以排查误判时,先在结果图上找出是哪一个检测项红了,再进它的参数窗口看细节。

十二种检测项¶
| 检测项 | 用来做什么 | 典型场景 | 页面 |
|---|---|---|---|
| 标签外框 | 找到标签本体的位置,给其它所有框当基准;顺带查标签本身的破损、缺角、空白 | 每个检测方案的第一个框,几乎必建 | 标签外框 |
| 固定区域 | 检查一块内容永远不变的区域印得对不对 | 图标、公司 LOGO、认证标志、固定文字块 | 固定区域 |
| 条码字符对 | 把条码和它下面那行明文一起检,并核对两者是否一致 | 一维码 + 下方字符的产品标签 | 条码字符对 |
| 码检测 | 只解码,拿到码的内容 | 二维码、一维码读取,SN 上传 MES | 码检测 |
| 字符识别 | 认一段固定不变的文字并逐字比对 | 型号、规格、固定批号 | 字符识别 |
| 可变区域 | 认一段每件都不一样的文字 | 流水号、生产日期、批次号 | 可变区域 |
| 多行字符 | 一次认多行文字,逐行设参考值和比对规则 | 多行地址、多行规格参数块 | 多行字符 |
| 有无检测 | 判断这块位置上东西在不在、对不对 | 漏贴、错贴、漏装、装反 | 有无检测 |
| 逻辑检测 | 不画框,把别的检测项的结果拿来组合判断 | 两个日期差几天、两个定位点间距、自定义变量运算 | 逻辑检测 |
| 整件逻辑检测 | 不属于哪个方案;一件产品所有相机工位都跑完后,拿全部自定义变量做一次判断,计入总结果 | 正反面型号对不对得上、两个工位读到的 SN 是否一致 | 整件逻辑检测 |
| 卡尺工具 | 量一对边缘之间的距离 | 间隙、宽度、偏移量,需要给 PLC 回数值时 | 卡尺工具 |
| 圆孔测量 | 在孔边布一圈卡尺找点、拟合圆,量孔的直径 | 通孔、沉孔、倒角孔的孔径,需要给 PLC 回直径时 | 圆孔测量 |
| 颜色抽取 | 按颜色把像素挑出来,看它占多大比例或多大面积 | 色块、色标、彩色导线、变色指示 | 颜色抽取 |
| 异常检测 | 只喂良品图,让软件自己学"正常长什么样",凡是不像正常的都报出来 | 说不清会出什么缺陷的表面、印刷、涂层 | 异常检测 |
名字为什么和老版本不一样
老版本叫"分类器"的,现在叫检测项;老版本的"区域分析",现在并进了有无检测;老版本树里显示为"字符检测"的,就是字符识别。
该用哪一种¶
| 你要做的事 | 用这个 | 说明 |
|---|---|---|
| 让所有框跟着标签一起动 | 标签外框 | 必须先建,其它检测项的坐标都以它为基准 |
| 查印刷有没有糊、缺、脏 | 固定区域 | 内容固定才用它;内容每件都变要用可变区域 |
| 读一段每件都不同的字 | 可变区域 | 单行;要一次读好几行用多行字符 |
| 一次读好几行字 | 多行字符 | 每行能单独设参考字符、相似度阈值、裁切 |
| 只要码的内容 | 码检测 | 一维码、二维码都支持 |
| 码和它下面的明文要对得上 | 条码字符对 | 一个检测项里同时管码、明文和两者的一致性 |
| 判断"有没有""装没装反" | 有无检测 | 优先用 OK/NG 注册(AI);光靠亮度能分开时可用传统算法 |
| 量尺寸、量间距,并把数值发给 PLC | 卡尺工具 | 导入标定文件后可输出毫米值 |
| 量圆孔直径,并把数值发给 PLC | 圆孔测量 | 只输出直径;导入标定文件后可输出毫米值 |
| 按颜色判断 | 颜色抽取 | 判据是颜色占比或面积,不是形状 |
| 缺陷种类说不清、样式太多 | 异常检测 | 只注册良品图即可,但需要单独的训练程序 |
| 把两个检测项的结果放在一起判断 | 逻辑检测 | 日期比较、距离比较、自定义变量表达式;只能用本方案的变量 |
| 跨相机工位 / 跨方案比结果 | 整件逻辑检测 | 所有方案跑完后用全部自定义变量判断,一票否决总结果 |
所有检测项都一样的操作¶
新建有三条路,结果一样:
- 点工具栏"新建检测项",在弹出的窗口里选类型,确定后在模板图上拖出框。
- 在模板图空白处右键 →"添加检测项"→ 选类型。
- 在模板图上直接拖一个框,松手后选类型。
右键新建的框以右键点为中心、当前视野三分之一大小(标签外框是视野的 90%),再拖到位即可。移动框分两步:先点一下框线选中(框变绿、四角出手柄),鼠标放到框线上变成抓手后再拖;没选中的框拖不动,画新框时碰到别的框边也不会把它挪走。
其它常用操作都在调试端左侧的树里,选中一条检测项后右键:
| 操作 | 菜单项 | 说明 |
|---|---|---|
| 运行单项 | "运行此检测项" | 只跑这一个,不动其它,调参时最常用 |
| 停用 | "禁用此检测项" | 暂时不参与判定,框还留着;再点"启用此检测项"恢复 |
| 删除 | "删除检测项" | 会二次确认。删掉被逻辑检测引用的检测项,逻辑检测那一侧会自动解绑 |
| 重命名 | 在树里双击名字直接改 | 名字会出现在结果记录和报警里,建议写成看得懂的话 |
| 复制 | 在模板图上右键该框 →"复制此检测项",再到目标位置右键 →"粘贴此检测项" | 参数一并复制。标签外框不能复制 |
| 展开 / 收起 | "展开所有检测项" / "收缩所有检测项" | 框多的时候用 |
运行中改不了参数
运行界面处于运行状态时,双击检测框会提示"正在运行中, 请先关闭运行界面的运行状态"。唯一的例外是有无检测的 AI 注册,见有无检测。
名词速查¶
- 相机工位:一路取像通道,绑一台相机,下面挂若干检测方案。
- 检测方案:相机工位下一级,持有自己的模板图和相机 / 光源参数。
- 检测项:模板图上划出的一个检查对象。
- 检测框:检测项下一级,真正干活的算子。
- 主模板图 / 副模板图:标准良品照片;主模板图唯一,副模板图可多张。
- 训练:把模板图内容记成标准答案。
- ROI:框选出来的那块区域。
- PASS / NG:通过 / 不通过。
- 注册图:交给 AI 学习的样本图,分 OK 组和 NG 组。
完整解释见名词解释。
相关页面¶
标签外框:定位标签并检查空白区域¶
标签外框干两件事:找到标签在这一帧里的位置,让后面所有检测项的框跟着标签一起走;顺带检查标签上没有印刷内容的地方有没有脏点、划伤、破损。
一个检测方案里有且只有一个标签外框,而且必须先建它——其它检测项的坐标都是相对它算的。
前置条件¶
- 检测方案已经设好主模板图。
- 模板图上的标签是良品、摆正、清晰。
它包含哪些检测框¶
标签外框下面固定挂两个检测框:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 定位参数 | 把当前拍到的图和模板图对齐,算出标签相对模板偏了多少、转了多少 | 开 |
| 空白区域 | 在对齐后的标签上,检查没有印刷内容的区域有没有缺陷 | 关,要用得先右键"启用此检测项" |
定位参数有两套算法,在树里选中标签外框右键,勾不勾"使用模板匹配定位"来切换:
- 不勾(默认):特征点定位。在整张标签上找有辨识度的点,和模板图的点配对,配上足够多就能算出偏移。标签内容越丰富越稳。
- 勾上:模板匹配定位。按轮廓形状去找,对内容少、但外形清楚的标签更合适,也更能容忍缩放。
两套算法的参数完全不同,切换之后必须重新训练。
定位开没开,去哪看¶
先说清楚:定位分两级。
- 外框定位(就是本页的"定位参数"):把整张图对齐到模板图,对齐后的图交给所有检测项用。
- 检测项自己的定位:固定区域 / 可变区域 / 条码字符对 / 字符识别各有自己的"搜索参数 + 定位参数",码检测 / 多行字符有"搜索参数"。外框定位关掉以后,它们仍在各自的搜索范围里把内容找出来,产品偏得不超过搜索范围就还能对上。有无检测 / 颜色抽取 / 异常检测 / 卡尺工具 / 圆孔测量 / 空白区域没有自己的定位,只靠外框定位。
| 检测项 | 自己的定位 | 外框定位关了会怎样 |
|---|---|---|
| 固定区域 / 可变区域 / 条码字符对 / 字符识别 | 搜索参数 + 定位参数 | 在搜索范围里照样找;偏移超出搜索范围才对不上。它自己的"定位参数"也被停用时,框就固定在模板位置。新建的字符识别默认停用定位参数(见字符识别),加了副模板时自动打开 |
| 码检测 / 多行字符 | 搜索参数 | 在扩大后的搜索范围里整块找码、找字;搜索参数里关了扩张时,框就固定在模板位置 |
| 有无检测 / 颜色抽取 / 异常检测 / 卡尺工具 / 圆孔测量 / 空白区域 | 没有 | 框固定在模板图上画的位置,不跟产品走,产品一偏就对不上 |
外框定位开没开、用的哪一套,三个地方都能直接看到:
- 调试端右栏树:"标签外框"那一行后面带括号,写着
定位:特征点/定位:模板匹配/定位:关(这一行本身就是标签外框,所以括号里说的就是外框定位)。外框定位关着时,鼠标停在这一行上,提示会写明是哪个开关关的,以及哪些检测项会被固定在模板位置。 - 运行顺序编辑器:每个拍照行的说明后面带
外框定位:特征点/外框定位:模板匹配/外框定位:关。 - 运行端:外框定位关掉的方案,检测图小窗口标题后面会带"(外框定位关)"。
另外,点运行开始检测时,日志区会对每个外框定位关掉的方案提示一条,提示会列出哪些检测项会被固定在模板位置。只是提示,不会拦着不让检测。
下面三个开关,任何一个都会把定位关掉,但关掉的东西不完全一样(三个同时有时,按表里从上到下的顺序算):
| 开关 | 定位 | 空白区域 | 外框结果 | 图片尺寸校验 |
|---|---|---|---|---|
| 标签外框被停用(树里在标签外框上右键"禁用此检测项") | 整图不矫正 | 一起不查 | 不出结果,永远不会判 NG | 不做 |
| 定位参数被停用(树里在"定位参数"上右键"禁用此检测项") | 整图不矫正 | 照查 | 通过 | 不做 |
| 特征点定位没勾"是否进行矫正"(定位参数里) | 整图不矫正 | 照查 | 通过 | 仍然要做:拍到的图尺寸和模板图不一致会报异常停下 |
"是否进行矫正"只对特征点定位有用;用模板匹配定位时勾不勾都一样。
外框定位关掉以后:没有自己定位的检测项(有无检测、颜色抽取、异常检测、卡尺工具、圆孔测量、空白区域),以及自己的定位也被关掉的检测项,框就固定在模板图上画的位置,不会跟着产品走,产品一偏就会"对不上";其余检测项还在各自的搜索范围里找,产品偏得超出搜索范围才对不上。遇到检测框和产品对不上,先看外框定位是不是关了,再看那个检测项自己的搜索参数 / 定位参数。
命令行 run_cli info 输出里,每个检测方案都有 location_mode(feature 特征点 / template 模板匹配 / off 关 / none 没有标签外框),以及 location_dependents(外框定位关掉时会被固定在模板位置的检测项名单)。
新建与画框¶
- 在调试端点工具栏的"新建检测项",类型选"标签外框",确定。
- 模板图左上角出现一个绿框,把它拖到刚好框住整张标签纸。框太小会漏掉标签边缘的缺陷,框太大会把背景算进来。
- 如果标签在模板图里是斜的,先用"模板图旋转拉伸"把整张图转正,再画框。
- 点工具栏"训练工程"(Ctrl+T)。
框拖不动
先看工具栏的"ROI锁定"是不是开着,锁定状态下所有框都拖不动。

参数说明¶
定位参数(特征点定位)¶
在树里双击"定位参数"打开。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 是否进行矫正 | 是否把当前图对齐到模板图。关掉就只按框的原始位置取图 | 产品位置每件都可能挪动时必须开。位置被治具卡死、从不偏移时才考虑关,关掉能省时间 |
| 透视矫正 | 除了平移和旋转,还允许"近大远小"的倾斜变形 | 标签平贴、相机正对时不要开,开了反而容易把噪声当成倾斜。只有标签明显是斜面上拍的才开 |
| 匹配特征点数 | 只读显示框,显示本次当前图与模板图配对成功的特征点对数(不是模板上的特征点总数),不能改 | 不用管。这个数掉到"最小匹配个数"以下就会定位失败,可据此判断是往下调阈值还是重训模板 |
| 最小匹配个数 | 当前图和模板图至少要配上这么多对特征点,才算定位成功;配不上就整件 NG | 默认 10。标签内容少、配不上导致老是 NG,就往下调到 6~8;标签内容丰富又出现"定位错位置"时往上调到 20~30 |
| 金字塔层数 | 把图缩小几次再去找特征点。缩得越多越快,但特征点越少 | 默认 2。大图跑得慢就加到 3;标签本身小、找不到点就减到 1 或 0 |
| 是否使用外框的所有特征点 | 用整张标签的特征点来对齐,还是只用被标记过的那几块 | 一般开着,对齐更准。标签上有大片每件都变的内容(流水号、日期)干扰对齐时,关掉它,再到那些内容固定的检测项上右键勾"设置为特征点模板",只用这几块对齐 |
| 位置范围限制 | 是否检查"标签偏得离不离谱"。勾上才能改下面"标签位置范围(相对于模板)"那组上下限(不勾时整组置灰、不检查) | 想拦住"标签贴歪了""上错料"这类问题时开 |
| x方向最小值 / x方向最大值 | 允许标签相对模板在左右方向偏多少像素 | 先跑几十件正常品,看"结果"页里的实际 x 值分布,再在这个范围外留一点余量。给太宽等于没拦,给太窄会误判 |
| y方向最小值 / y方向最大值 | 上下方向同上 | 同上 |
| 角度最小值 / 角度最大值 | 允许标签相对模板转多少度 | 默认 ±60 度很宽。贴标机正常只会偏一两度,收到 ±5 度就能拦住明显贴歪 |
| 倾斜最小值 / 倾斜最大值 | 允许多少斜切变形 | 默认 ±5 度,一般不动 |
上下限填反了(最小值大于最大值)时输入框变红、不生效,改回去就好。
"匹配参数"一组是特征点配对的细节,一般保持默认:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 匹配方法 | 由配对点算位置时剔除错配的方法(REGULAR / RANSAC / LMEDS / RHO) | 保持默认 RANSAC |
| 匹配阈值 | 一对特征点要多"像"才算配上,0~1,越小越严、配上的越少 | 默认 0.75。定位到错位置时调小到 0.6~0.7;配对数老是不够时调大一点 |
| ransac阈值 | 剔除错配时允许的偏差,单位像素 | 默认 0.5,一般不动 |
按钮与状态(在页面最上面):"训练"重新记一次模板特征点;旁边显示"训练结果"和"训练状态"。改过框的位置或上面任何参数,都要重新训练。
定位参数(模板匹配定位)¶
勾了"使用模板匹配定位"之后,打开的是另一套界面。
"模板匹配参数"一组是这套算法的全部参数,"训练"按钮和训练状态在组的最上面。
匹配方法:"形状匹配"只找转动,"多尺度形状匹配"还允许目标有放大缩小。产品到相机的距离固定就用前者,更快。产品每次放置远近/高度略有不同(画面大小差约 1%~3%)、长文字行右端出现成片误报时,选"多尺度形状匹配":定位会量出这一件的比例,后面的比对按这个比例缩回再比。默认缩放范围 0.97~1.03,够覆盖 ±3% 的放置差;范围别放太宽,整张印大/印小本身是缺陷,范围太宽会被补偿掉。多尺度建模比形状匹配慢。多尺度形状匹配下"亚像素"不起作用。
训练参数(改完必须点"训练"):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 起始角度 / 最大角度 | 允许标签转多大角度去找 | 范围越大越慢。贴标正常只偏几度,给 -5 到 5 就够 |
| 角度步长 | 找的时候每次转多少度。勾"自动角度步长"让软件定 | 一般勾上。找不准再手动往小调,代价是变慢 |
| 最小缩放 / 最大缩放 / 缩放步长 | 只在"多尺度形状匹配"下有用,允许目标大小变化的范围,可输两位小数 | 默认 0.97 / 1.03;距离固定就保持默认 |
| 金字塔层数 | 先在缩小的图上粗找,再逐级精找。勾"自动金字塔层数"让软件定 | 默认勾上。标签很小、总是找不到时手动改小 |
| 最小组件尺寸 | 比这个小的零碎轮廓不当特征 | 标签上有细密噪点时往上调,可以滤掉噪声 |
| 最小对比度 | 明暗差小于这个值的边缘不要。勾"自动最小对比度"让软件定 | 打光偏暗、边缘发灰时手动调小 |
| 特征优化 | "自动"让软件挑一部分特征点(快),"全部特征点"全用上(准但慢) | 先用"自动";定位不稳再换"全部特征点" |
| 低阈值 / 高阈值 | 提边缘用的两个门槛,越大只留明暗反差越大的边。勾"自动低阈值""自动高阈值"让软件定 | 保持勾选。手动调时低阈值必须小于高阈值 |
| 匹配度量 | "考虑极性"要求黑白关系和模板一致;两个"忽略极性"允许反色 | 同一种标签用"考虑极性"最稳。标签会出现深浅底色两种版本时才选忽略 |
查找参数(改完不用重新训练):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 分数阈值 | 找到的目标和模板的相似度要达到多少才算数,0~1 | 默认 0.5。误定位到别处就往上调到 0.7~0.8;正常品偶尔找不到就往下调 |
| 贪心度 | 搜索时"见好就收"的程度,越大越快、越容易漏 | 默认 0.9。定位偶发失败时降到 0.5~0.7 |
| 亚像素 | 把定位精度算到像素以内 | 需要很高定位精度时开,会稍慢 |
"匹配结果"一栏显示本次找到的位置和相似度,调参时盯着它看。
空白区域 —— 设置¶
空白区域指的是:标签外框范围里,减去所有其它检测项的框之后剩下的地方。也就是说,你在标签上每多画一个检测项,空白区域就自动少一块。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 灰度阈值 | 一个点要比它周围暗多少,才被当成可疑缺陷 | 默认 20。漏检小黑点就调小(如 10),背景本身有纹理、误报多就调大(如 30~40) |
| 区域尺寸(奇数有效>=3) | 判断"周围"有多大,单位像素,必须是奇数 | 默认 51。缺陷比较大、整块变暗时要调大,否则缺陷内部被当成"周围"而看不出来;只查小脏点可以调小,速度也快 |
| 缺陷最小边长 | 一处可疑区域的宽和高都超过这个值,才算缺陷 | 这是滤小噪点的主力。误报多就往上调;漏小脏点就往下调。调 0 表示不按这条过滤 |
| 缺陷最大边长 | 一处可疑区域只要有一条边达到这个值,直接判缺陷(不需要另一条边也大) | 注意它是"超过即拦",不是上限过滤。用来抓细长划痕:划痕很细,宽度过不了最小边长,但长度能过这一条 |
| 边界忽略像素 | 把其它检测项的框往外扩这么多像素再挖掉 | 默认 10。定位有一点点误差时,框边上常会假报缺陷,把这个值加大几像素就干净了。加太大会把框边真实的缺陷也放过 |
光照矫正(整个分组可以勾掉):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 方向 | 打光不均匀是左右方向(X)还是上下方向(Y) | 看条形光源的摆放方向选。选错了矫正没效果 |
| 邻域大小(奇数有效>=3) | 取多大一块算平均亮度,必须是奇数 | 默认 81。标签窄就调小,亮度过渡很缓就调大 |
| 参考亮度 | 矫正后空白处大约拉到多亮,0~255 | 默认 180。拉完在"标签光照矫正图片"里把鼠标放到空白处,看通道值是不是在这个数附近 |
如果打光本来就均匀,把"光照矫正"整个勾掉,更快也更不容易出怪结果。
两个"奇数有效"的尺寸("区域尺寸""邻域大小")填了偶数时输入框变红、不生效,改成奇数就好;用上下箭头调每次跳 2。
空白区域 —— 区域¶
这一页有两张表,里面的框都跟着标签走,标签偏了它们也跟着偏:
- 检测区域:一条都不加时,整个空白区域都查;加了之后只查你加的这几块。用在"标签大部分地方允许有花纹、只有中间一块必须干净"的场合。
- 屏蔽区域:这几块永远不查。用来放过压痕、模切边、透明窗这类天生就"不干净"的地方。
两张表都有"添加""删除""删除所有"三个按钮,加完框在图上拖到位。
训练与调试¶
- 画完框、改完定位参数,先点"训练工程"(Ctrl+T),再点"单模板运行"。
- 打开"定位参数",在"结果"页看这次算出来的 x、y、角度、倾斜。这些数就是你设位置范围的依据。
- 打开"空白区域",用右边图片下拉框逐张看:
- 标签图片:按定位结果抠出来的标签。抠歪了说明定位没做对,先回去修定位。
- 标签光照矫正图片:光照矫正后的样子,空白处应该均匀。
- 检测空白掩膜:白的地方才查,黑的地方不查。如果你以为该查的地方是黑的,多半是被别的检测项的框盖住了,或者被"屏蔽区域"挡了。
- 缺陷二值图:所有可疑点。这里白点一大片,说明"灰度阈值"或"区域尺寸(奇数有效>=3)"给得不合适。
- 结果图片:最终判为缺陷的地方用红框圈出来。
- "结果"页会显示一行提示,写着本次找到的缺陷"边长从 X 到 Y"。把"缺陷最小边长"设在正常噪点边长之上、真实缺陷边长之下,是最快的调法。
常见误判与处理¶
| 现象 | 原因 | 怎么办 |
|---|---|---|
| 正常品也报"定位失败",整件 NG | 特征点配对数不够 | 把"最小匹配个数"调小;把"金字塔层数"调小(特征点会变多);检查打光是不是变了导致模板对不上,必要时重拍模板图重新训练 |
| 模板匹配定位这一步要好几秒,大相机上甚至二十秒,进调试端也跟着卡 | 老工程里没勾"自动金字塔层数""自动角度步长",用的是旧默认的固定 4 层、0.01°;图越大、"角度范围"放得越宽越慢 | 把"自动金字塔层数""自动角度步长"都勾上,重新训练。实测 2000 万像素、角度范围 ±30°:单次定位从 20 秒降到 0.2 秒以内,定位结果不变。新建的工程默认就勾着 |
| 定位成功但所有框整体偏了一点 | 模板图和现场实际状态不一致,或标签本身有拉伸 | 重新拍模板图并训练;斜面产品可以试着开"透视矫正" |
| 标签明明贴歪了却判 PASS | 没开"位置范围限制",或范围给得太宽 | 勾上"位置范围限制",按"结果"页里正常品的实际数值收紧角度和 x、y 范围 |
| 空白区域整片报缺陷 | 打光不均,或"灰度阈值"太小 | 先开"光照矫正"并选对方向;再把"灰度阈值"往上调 |
| 缺陷框密密麻麻出现在各个检测项框的边上 | 定位有微小误差,框边被当成明暗突变 | 把"边界忽略像素"加大几个像素 |
| 压痕、模切边每次都报 | 这些地方本来就不平整 | 到"区域"页的"屏蔽区域"里加框盖住它们 |
| 细长划痕漏检 | 划痕宽度过不了"缺陷最小边长" | 把"缺陷最大边长"设成略小于划痕长度,让它走"只要一条边够长就判缺陷"这条路 |
| 空白区域这一项根本不出结果 | 它默认是关闭的 | 在树里选中"空白区域"右键"启用此检测项" |
相关页面¶
固定区域:检查固定位置的印刷内容¶
固定区域用来看一块内容永远不变的地方印得对不对:LOGO、图标、认证标志、固定文字块、固定图案。它拿模板图上的这块内容当标准答案,逐像素和当前这件比,差得太多就报缺陷。
内容每件都不一样(流水号、日期)的地方不能用它,要用可变区域。
前置条件¶
- 检测方案里已经有标签外框,并且已经训练过。
- 主模板图上这块内容是良品、清晰。
它包含哪些检测框¶
固定区域下面有一个检测框,里面固定挂三个:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 搜索参数 | 规定这块内容允许在多大范围内漂移,软件就在这个扩大后的范围里去找它 | 开 |
| 定位参数 | 在搜索范围里,按形状把这块内容精确找出来 | 开 |
| 缺陷参数 | 把找到的图和模板图对比,判有没有印刷缺陷 | 开 |
搜索参数和定位参数是这个检测项自己的局部定位,和标签外框的整图定位是两级(见标签外框)。
另外可以在树里选中这个检测项右键,再加两种框:
- 添加细节检测框:在这块区域里再圈一小块,单独数轮廓数量。适合"这里必须有 3 个孔""这个小标记不能少"这类点数的活。
- 添加屏蔽内容检测框:圈出的地方缺陷参数不查。用来放过允许变化的小角落。
要让标签外框的空白区域检测放过某一块,不在这里加框:打开"标签外框"检测项的"空白区域"参数窗口,到"区域"页往"屏蔽区域"表里加。
新建与画框¶
- 点工具栏"新建检测项",类型选"固定区域",确定。
- 模板图左上角出现一个绿框,拖到刚好框住那块固定内容。
- 框要贴着内容,不要留大片空白——空白多了,真实缺陷占的面积比例就变小,容易漏检。
- 也别切到内容,切一半会被当成缺陷。
- 按 Ctrl+T"训练工程",再点"单模板运行"看效果。
白底还是黑底
画完框先打开"缺陷参数",在"预处理"里把"白底黑字"勾对:白底黑字就勾上,黑底白字就不勾。弄反了缺陷检测基本没法用。

参数说明¶
搜索参数¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 横向偏移容忍绝对值 | 允许这块内容相对模板往左右各漂多少像素 | 默认 30,也就是左右各 15 像素。贴标位置抖动大就加大;加大后会变慢,而且容易在附近找到长得像的东西 |
| 纵向偏移容忍绝对值 | 上下方向同上 | 同上 |
| 横向锁定 / 纵向锁定 | 勾上后,批量改参数时不动这一项 | 一般不用 |
调的时候把右边图片下拉框切到"输出图片",能直接看到扩张后实际送去搜索的那块图。
定位参数¶
这一页是按轮廓形状去找目标,和标签外框勾了"使用模板匹配定位"时是同一套。
匹配方法:"形状匹配"只允许转动;"多尺度形状匹配"还允许放大缩小。相机到产品距离固定就选前者,更快。产品每次放置远近/高度略有不同(画面大小差约 1%~3%)、长文字行右端出现成片误报时,选"多尺度形状匹配":定位会量出这一件的比例,后面的比对按这个比例缩回再比。默认缩放范围 0.97~1.03,够覆盖 ±3% 的放置差;范围别放太宽,整张印大/印小本身是缺陷,范围太宽会被补偿掉。多尺度建模比形状匹配慢。多尺度形状匹配下"亚像素"不起作用。
训练参数(改完必须点"训练"):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 起始角度 / 最大角度 | 允许目标转多大角度 | 范围越大越慢。标签外框已经把整体转正了,这里给 -5 到 5 通常够用 |
| 角度步长 | 每次转多少度去试。勾"自动角度步长"让软件定 | 保持勾选 |
| 最小缩放 / 最大缩放 / 缩放步长 | 只在"多尺度形状匹配"下起作用,可输两位小数 | 默认 0.97 / 1.03;距离固定就别动。最小等于最大时按"形状匹配"处理,最小大于最大会提示重填 |
| 金字塔层数 | 先在缩小的图上粗找再精找,勾"自动金字塔层数"让软件定 | 目标很小、老是找不到时,手动调小 |
| 最小组件尺寸 | 比这个小的零碎轮廓不当特征 | 图案周围有噪点时往上调 |
| 最小对比度 | 明暗差小于这个值的边不要,勾"自动最小对比度"让软件定 | 打光暗、边缘发灰时手动调小 |
| 特征优化 | "自动"只挑一部分特征点(快);"全部特征点"全用(准但慢) | 先用"自动",找不稳再换 |
| 低阈值 / 高阈值 | 提取边缘的两个门槛,越大越只保留反差大的边。勾"自动低阈值""自动高阈值"让软件定 | 保持勾选;手动时低阈值必须小于高阈值 |
| 匹配度量 | "考虑极性"要求黑白关系和模板一致,两个"忽略极性"允许反色 | 同款标签固定用"考虑极性" |
查找参数(改完不用重新训练):
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 分数阈值 | 相似度要达到多少才算找到,0~1 | 默认 0.5。找错位置就往上调到 0.7~0.8;正常品时不时找不到就往下调 |
| 贪心度 | 搜索"见好就收"的程度,越大越快也越容易漏 | 默认 0.9,定位偶发失败时降到 0.5~0.7 |
| 亚像素 | 定位精度算到像素以内 | 缺陷检测对对齐要求高时可以开,稍慢 |
"匹配结果"一栏显示本次找到的位置和相似度。定位一旦失败,缺陷检测就不用看了,先把这里调稳。
缺陷参数 —— 预处理¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 白底黑字(勾选框;不勾 = 黑底白字) | 告诉软件这块图哪边是内容、哪边是底 | 按实际勾。弄反了缺陷位置会整个跑偏 |
缺陷参数 —— 图像对齐¶
对比之前,软件要先把当前图和模板图严丝合缝地叠在一起。这一组管的就是"怎么叠"。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 迭代优化 | 叠好之后再反复微调几次,把残余的错位磨掉 | 默认开着。关掉会快一点,但边缘更容易假报缺陷 |
| 启用透视矫正 | 除平移旋转外,还允许"近大远小"的倾斜变形 | 平贴产品别开;明显斜面上的内容才开 |
| 自动选择适配算法 | 让软件自己在几种找对应点的算法里挑(勾选 = 是) | 建议不勾。挑选过程很费时间,只有手动怎么选都对不齐时才勾上 |
| 关键点检测类型 | 用哪种特征来对齐:texture1、texture2、texture3、edge。从左到右越来越慢 | 默认从 texture1 开始试;纹理少、只有清晰边框的内容用 edge 效果好;自动选择时置灰,由软件决定 |
| 边缘拉伸尺度 | 对齐时把边缘看得多重。值越大,边缘附近越容易被当成"本来就会差一点"而放过 | 默认 1。字符边缘老是假报缺陷,就往上调到 1.5~2;调太大会把真实的缺角也放过 |
| 边缘增强 | 配合上一项,给边缘再加一个固定量 | 默认 0,一般不动 |
缺陷参数 —— 缺陷定义¶
这一组决定"差多少才算缺陷"。软件把差异分成两类:比模板亮的(常见于缺墨、划白、漏印)和比模板暗的(常见于脏污、重影、多墨)。两类各有自己的两个门槛,一处差异要同时过掉灰度门槛和面积门槛才算缺陷。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 更亮灰度差值 | 比模板亮多少才算可疑,0~255 | 默认 30。漏检缺墨就调小(20 左右),打光波动大导致误报就调大(40~60) |
| 更暗灰度差值 | 比模板暗多少才算可疑 | 默认 30,调法同上 |
| 更亮缺陷面积 | 一处"更亮"的可疑区域要有多少像素才判缺陷 | 默认 20。误报小白点就调大;要抓细小缺墨就调小。这是最常调的一个 |
| 更暗缺陷面积 | 一处"更暗"的可疑区域要有多少像素才判缺陷 | 默认 20,调法同上 |
| 缺陷最小高度 | 缺陷的高度要大于这个值 | 默认 3。横向细划痕会被它挡掉,要抓就调到 1 |
| 缺陷最小宽度 | 缺陷的宽度要大于这个值 | 默认 3,同上 |
只调一边
大部分现场只关心一类缺陷。比如只怕缺墨,就把"更暗灰度差值"调到很大(比如 200)把暗缺陷整个放掉,专心调"更亮"那两项,干扰会少很多。
细节检测框¶
右键"添加细节检测框"加出来的框,双击它打开:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 曝光补偿 | 先把这一小块提亮多少再数轮廓 | 内容偏暗、数不出轮廓时往上调 |
| 二值化阈值类型 | "自动"让软件按这块图自己定分界线;"固定"用你给的数 | 打光稳定就用"固定",结果更可复现;明暗变化大用"自动" |
| 固定阈值参数 | 选"固定"时用的那个分界灰度值,0~255 | 在结果图上把鼠标放到内容和底上,读两边的通道值,取中间 |
| 参考轮廓数量 | 模板图上数出来多少个轮廓,只读 | 训练后自动填。如果它和你肉眼数的对不上,先调上面两项 |
| 当前轮廓数量 | 这一件数出来多少个,只读 | 运行后看它和参考值一不一样,不一样就判缺陷 |
训练与调试¶
- 每次挪框、换模板图、改定位参数之后,都要"训练工程"(Ctrl+T)。只改缺陷参数可以不训练。
- 在树里选中这个检测项右键"运行此检测项",只跑这一个,调参最快。
- 打开"缺陷参数",顶部有"设置""图形""结果""运行结果"四页:
- 到"图形"页勾选想看的中间结果,再回到右边图片下拉框里选。
- 参考图片是标准答案,当前对齐图片是这一件叠正之后的样子。两张来回切,如果内容错位明显,问题在对齐,不在缺陷门槛。
- 更亮差异和更暗差异是最有用的两张:把鼠标移到某个点上,图左上角会显示这个点和模板差了多少。用这个数来定"更亮灰度差值"和"更暗灰度差值",比瞎试快得多。
- 缺陷结果图片是最终判定,红框就是报出来的缺陷。
- 一个可行的调法:先把两个"灰度差值"设成正常品里读到的最大差异再加 10,然后用"缺陷面积"滤掉零星小点。
常见误判与处理¶
| 现象 | 原因 | 调哪里 |
|---|---|---|
| 正常品整块报红 | 底色判反了 | "缺陷参数 → 预处理"勾上或取消"白底黑字"(不勾 = 黑底白字) |
| 缺陷框密密麻麻贴在字符和图案边缘 | 对齐有微小误差 | 开"迭代优化";把"边缘拉伸尺度"从 1 调到 1.5~2 |
| 整体偏亮或偏暗就报一片缺陷 | 打光或曝光变了 | 先查光源和相机曝光;短期可把两个"灰度差值"调大,但这会降低灵敏度 |
| 定位老是失败(结果直接 NG) | 搜索范围不够,或分数阈值太高 | 加大"横向偏移容忍绝对值"和"纵向偏移容忍绝对值";把"分数阈值"往下调;把"贪心度"往下调 |
| 定位定到旁边一个长得像的图案上 | 分数阈值太低,搜索范围太大 | 把"分数阈值"调到 0.7 以上;收小搜索范围 |
| 细小缺墨漏检 | 面积门槛太高,或最小高宽挡住了 | 调小"更亮缺陷面积";把"缺陷最小高度""缺陷最小宽度"调到 1 |
| 允许变动的小角落每次都报 | 这块本来就会变 | 右键"添加屏蔽内容检测框",圈住它 |
| 跑得慢 | 搜索范围太大,或"自动选择适配算法"勾着;老工程的"定位参数"里没勾"自动金字塔层数""自动角度步长"(旧默认是固定 4 层、0.01°) | 收小搜索范围;取消勾选"自动选择适配算法";"关键点检测类型"从 edge 换回 texture1;"定位参数"里勾上"自动金字塔层数""自动角度步长"后重新训练(新建的工程默认就勾着) |
相关页面¶
可变区域:检查会变化的字符内容¶
可变区域用来读每件都不一样的一行字:流水号、生产日期、批次号、密码。它不能拿模板图当标准答案逐像素比,只能把字认出来,再按你定的规则判合不合格。
它是一对框:一个检测框框住旁边内容固定的部分(比如"生产日期:"这几个字)当参照物,一个字符框框住会变的内容。参照物找准了,字符框才跟着落到正确位置。
前置条件¶
- 检测方案里已经有标签外框,并且训练过。
- 会变的这行字旁边有一块内容固定的东西可以当参照。实在没有,就把检测框放在附近任何固定的图案或边框上。
它包含哪些检测框¶
检测框(参照物,用法和固定区域完全一样):
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 搜索参数 | 允许参照物漂移多大范围 | 开 |
| 定位参数 | 在这个范围里按形状把参照物精确找出来 | 开 |
| 缺陷参数 | 检查参照物本身印得好不好 | 开 |
字符框(会变的内容):
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 检测参数 | 认字,并按规则比对 | 开 |
| 缺陷参数 | 逐个字符查笔画有没有缺、糊、多墨(字模 OCV) | 关,要用得先右键"启用此检测项",再按字模 OCV建字体库 |
还可以在树里选中这个检测项右键,用"添加细节检测框""添加屏蔽内容检测框"再加两种框。
新建与画框¶
- 点工具栏"新建检测项",类型选"可变区域",确定。
- 模板图左上角出现两个绿框。点其中一个,右侧树里对应的那条会高亮,用这个办法分清哪个是检测框、哪个是字符框。
- 把检测框拖到那块固定内容上,贴紧,别切字。
- 把字符框拖到会变的那行字上:
- 上下要留一点余量,别贴着字顶和字底切;左右要够长,能容下最长的那种内容。
- 框里只放这一行。上下行的字被框进来,认出来的结果就会串行。
- 框里尽量不要有边框线、下划线、条码这类东西。
- Ctrl+T"训练工程",再"单模板运行"。

参数说明¶
检测框的三个检测框参数和固定区域一模一样,见固定区域。下面只讲字符框。
字符框 —— 检测参数¶
这一页分三块,顶部还有"设置""混淆字符""替换字符"三个标签页。
预处理参数:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 白底黑字 | 告诉软件字是深的还是浅的:勾上 = 白底黑字,不勾 = 黑底白字 | 按实际勾。弄反了基本认不出字 |
| 英文模型 | 用哪套识别模型:勾上 = 英文模型,只认数字、英文字母和常见符号;不勾 = 中英文模型,还认汉字 | 内容里没有汉字就一定勾上"英文模型"——它不会把字母认成汉字,更稳也更快。有汉字才取消勾选(用中英文模型) |
| 旋转角度 | 把这块图先转 0、90、180 或 270 度再认 | 软件只认横排正向的字。竖排或倒排的字必须在这里转正 |
| X方向缩放 | 认之前把图横向拉伸或压缩的倍数 | 默认 1。字被压扁(常见于喷码)时调到 1.5~2 会明显变准 |
| Y方向缩放 | 纵向同上 | 默认 1。字太矮太小时往上调 |
| 最小字符高度 / 最小限定框高度 | 勾上"最小字符高度"后,比"最小限定框高度"矮的笔画会先被抹掉再认;不勾时数值框置灰 | 用来去掉框里混进来的细线、下划线、上下行漏进来的半截字。"最小限定框高度"填的数值参考:把鼠标在图上量一下正常字符的高度,取它的一半左右 |
比对参数:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 中文符号转英文 | 把全角的括号、逗号、冒号统一换成半角再用 | 默认开着,一般别关 |
| 忽略符号(仅比对用) | 比对时把所有非字母数字的字符都丢掉,只比字母和数字。不影响输出的结果 | 内容里的符号识别不稳、但你只关心字母数字对不对时开 |
| 过滤符号(结果输出) | 直接把非字母数字从输出结果里删掉 | 要把结果发给 MES 或写进记录,而符号是噪声时才开。开了以后别的地方拿到的也是删过的 |
| 置信度阈值 | 识别结果的可信程度要达到多少,0~1 | 默认 0.8。这是判"印糊了"的主力:印花了置信度就掉下来。误报多就降到 0.6~0.7,漏检糊字就升到 0.85 |
| 字符串长度限制 | 结果必须正好这么多个字符,否则 NG。填 -1 表示不检查 | 内容位数固定(比如流水号永远 10 位)时一定要填,能一下子拦住少印、多印、被遮挡 |
| 与参考字符串比对 | 是否拿结果和"参考字符串"对一遍;不勾时"比对方式""参考字符串"置灰 | 可变区域的内容每件都不一样,通常关掉,只靠置信度和长度判定。只有内容其实有固定前缀时才开 |
| 比对方式 | 三选一:参考字符串在结果字符串中 / 结果字符串在参考字符串中 / 结果字符串等于参考字符串 | 只想卡固定前缀就用"参考字符串在结果字符串中" |
| 参考字符串 | 拿来比对的那串字 | 点它下面的"设为当前识别结果"可以把这次认出来的直接填进去 |
识别结果:显示"结果字符串"和"结果置信度",是只读的。调参时全靠它。
混淆字符页:每一行是一组"互相认错也当对"的字符,比如 1Il、oO0。左列是组名,不能改;右列填这一组里等价的字符。只在比对时起作用,不改输出结果。用"+"加一组,选中行用删除图标删一组。
替换字符页:两列,左列"原字符",右列"替换为"。凡是识别结果里出现左列的内容,一律换成右列的。用来兜底修一些固定认错,比如老把某个符号认成别的。它改的是输出结果本身。
判定顺序是固定的,照这个顺序排查最快:认不出字 → NG;长度不等于"字符串长度限制" → NG;置信度低于"置信度阈值" → NG;开了比对而比对不过 → NG。
字符框 —— 缺陷参数¶
这一页查的是笔画本身有没有毛病——缺一角、糊成一团、多一个墨点。算法是字模 OCV:把每个字和字体库里存的样本比。启用、建字体库、调参和看结果全部见字模 OCV。
这一步只有客户明确要求查印刷质量时才做。只查内容对不对的话,"检测参数"就够了。
训练与调试¶
- 动过框的位置就必须 Ctrl+T"训练工程"。只改识别参数不用训练。
- 右键"运行此检测项"单跑,看"检测参数"里的"结果字符串"和"结果置信度"。
- 结果图片下拉框里有三张关键图:
- 输入图片:字符框实际抠出来的那块。抠歪、切字、混进别的行,都在这里看得出来,要回去调框或调检测框的定位。
- 旋转矫正图:转正并缩放之后送去识别的图。这才是模型真正看到的东西。
- 预处理图:勾了"最小字符高度"才有,能看到细线被抹掉后的样子。
- 换十几张不同内容的实拍图跑一遍,记下最低的那个置信度,把"置信度阈值"设在它下面一点点。
常见误判与处理¶
| 现象 | 原因 | 调哪里 |
|---|---|---|
| 完全认不出字 | 底色弄反,或方向不对 | 勾上或取消"白底黑字"(不勾 = 黑底白字);"旋转角度"转正 |
| 少认几个字或多认几个 | 字符框切到字了,或框里混进别的行 | 重新画字符框,上下左右各留一点余量,只框一行 |
| 数字被认成汉字 | 没勾"英文模型"(用的是中英文模型) | 内容里没汉字就勾上"英文模型" |
| 认出一串奇怪的短横线、下划线 | 框里有边框线或下划线 | 勾"最小字符高度","最小限定框高度"填正常字高的一半左右 |
| 喷码的扁字认不准 | 字被压扁 | 把"X方向缩放"调到 1.5~2 |
| 字很小认不准 | 分辨率不够 | 先想办法把"Y方向缩放"调大;根上的办法是换镜头或把相机拉近 |
| 正常品时不时 NG,结果串看着是对的 | 置信度卡太紧 | 把"置信度阈值"往下调,同时开"字符串长度限制"补上强度 |
| 内容位数少印了一位却判 PASS | 没开长度检查 | "字符串长度限制"填上正确位数 |
| 参照物定位失败,整件 NG | 检测框那侧的搜索范围或分数阈值不对 | 见固定区域的定位参数 |
| 缺陷参数一开就全 NG | 字体库里还没有样本,或认字结果和图上的字对不上 | 见字模 OCV:先把"检测参数"调到稳定认对,再"当前字符全部加为模板" |
相关页面¶
条码字符对:条码与明文互相校验¶
条码字符对是一个检测项里同时管三件事:解码、读码下面那行明文、核对两者是否一致。标签上码和字印的不是同一个内容——这是最典型的贴错料、串料事故,靠单独的码检测和字符识别是抓不到的。
只想拿到码的内容、不需要核对明文,用码检测更省事。
前置条件¶
- 检测方案里已经有标签外框,并且训练过。
- 标签上码和明文的相对位置固定(码在上、字在下,间距不变)。
它包含哪些检测框¶
新建之后会出现三个框,树里也是三条:
检测框 —— 框住旁边内容固定的部分,当整组的参照物。用法和固定区域完全一样:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 搜索参数 | 允许参照物漂移多大范围 | 开 |
| 定位参数 | 在这个范围里按形状精确找到参照物 | 开 |
| 缺陷参数 | 检查参照物本身印得好不好 | 开 |
条码框 —— 框住条码或二维码:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 条码检测结果 | 解码,拿到码的内容 | 开 |
| 缺陷参数 | 查条码本身有没有断条、缺角、白点、脏点 | 关,而且只对一维码有意义 |
明文框 —— 框住码下面那行人能看懂的字:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 检测参数 | 认字,并和条码解出来的内容比对 | 开 |
| 缺陷参数 | 逐字符查笔画缺陷(字模 OCV),要先建字体库 | 关 |
明文和条码是自动挂钩的
每跑一件,软件会把"条码检测结果"解出来的字串自动填进明文框"检测参数"的"参考字符串"里,再按"比对方式"判定。默认的比对方式是"参考字符串在结果字符串中",也就是"明文里必须包含码的内容"。你不需要手工去填参考字符串。
新建与画框¶
- 点工具栏"新建检测项",类型选"条码字符对",确定。
- 模板图左上角出现三个绿框。点一个,右侧树里对应那条会高亮,用这个办法分清哪个是哪个。
- 把三个框分别拖到位:
- 检测框 → 旁边那块内容固定的图案或文字,贴紧。
- 条码框 → 整个码。宁可画大一点:码被切掉一点点就可能解不出来。二维码要把四周的静区(空白边)也框进去。
- 明文框 → 码下面那一行字,上下留点余量,只框一行。
- Ctrl+T"训练工程",再"单模板运行"。
- 如果这个码就是产品的 SN:在树里选中这个检测项右键"设置为SN码",检测结果就会和这个 SN 绑在一起,以后能按 SN 回查缺陷图。

参数说明¶
检测框的三个参数页和固定区域一样,见固定区域。明文框的两个参数页和可变区域的字符框一样,见可变区域。下面只讲条码框特有的,以及明文框上和可变区域不同的地方。
条码框 —— 条码检测结果¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 解码类型 | 三选一:二维码 / 条码 / DataMatrix | 必须选对,选错一张都解不出来。一维码选"条码" |
| 横向拉伸比例 | 解码前把图横向拉伸几倍 | 默认 1。码被打印机压扁、条纹挤在一起时调到 1.5~2 |
| 纵向拉伸比例 | 纵向同上 | 默认 1。一维码本来就矮,通常不用动 |
| 过滤冒号 | 一个快捷按钮,点一下就把"正则表达式"填成过滤冒号的规则 | 码里带冒号而下游不接受时点它 |
| 正则表达式 | 符合这个规则的字符会从结果里删掉 | 留空就不过滤。只有下游(MES、PLC)要求去掉某些字符时才填 |
| 起始位 / 长度 | "裁切结果"里的两个值:从第几位开始、取多少位 | 码很长而下游只要中间某一段时用。长度填 0 表示不裁 |
| 比对字符 | "无铭文固定字符比对":解出来的内容必须完全等于这一串,否则 NG | 用在"这台机器上流过的码永远是同一个"的场合。内容每件都变就别开 |
| 扫到多个不同的码 | "多码处理"里的下拉:"判NG(默认)" 或 "按正则筛选" | 框里只可能有一个码就保持默认。标签上下叠了两个码、框又不好画小时,选"按正则筛选" |
| 正则 | 选了"按正则筛选"才能填,只保留匹配这个规则的码 | 比如两个码里只有一个以 2636 开头,就填 ^2636。填错了框会变红 |
| 解码失败自动扩大搜索区重试(×1.5/×2/×3) | 第一次没解出来时,自动把搜索区按中心放大再试最多三次 | 默认开着,建议别关。它专治"框画小了、标签又漂了一点"导致的偶发漏读 |
| 解码方式 | 只读,主解码器 / 备用解码器 | 多数件应走主解码器 |
多码策略的副作用
选了"按正则筛选"以后,即使框里只有一个码,这个码也必须匹配正则才算过。这其实相当于多了一道内容校验,好处是能拦住串料,坏处是正则写窄了会误杀。
条码框 —— 缺陷参数¶
这一页只对一维码有意义。检测二维码或 DataMatrix 时,把它保持禁用状态(右键"禁用此检测项")。
它把一维码的每一根黑条圈出来,从三个角度找毛病。
参数模式:下拉"基础参数 / 高级参数"。日常只用基础参数(下表);高级参数是算法内部的膨胀核、平滑、动态阈值等,一般不要动。选"高级参数"后界面换成高级那一套(按组排在同一页,要往下滚),同名的阈值 / 容忍量以高级那一套为准。
基础参数:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 子面积缺陷容忍量 | 黑条如果缺了一块,缺口的面积超过这个值就判缺陷 | 从大往小调:先给很大让它全过,再逐步调小到刚好能抓住真实缺口 |
| 最大高度差缺陷容忍量 | 各根黑条的高度差超过这个像素数就判缺陷。黑条断成两截时高度会骤变 | 本来就设计成长短不齐的码(比如带保护条的),给一个很大的值等于不查这一项 |
| 孔洞检测阈值 | 黑条里面的白点,亮到什么程度算孔洞 | 调大更宽容 |
| 孔洞面积缺陷容忍量 | 孔洞总面积超过这个值才判缺陷 | 不想查细小孔洞就给一个很大的值 |
| 斑点检测阈值 | 白底里面的黑点,暗到什么程度算斑点 | 同孔洞 |
| 斑点面积缺陷容忍量 | 斑点总面积超过这个值才判缺陷 | 同孔洞 |
高级参数里主要是:把条码从周围内容中抠干净的膨胀参数(横向/纵向膨胀核宽、迭代次数)、把码整体提亮的线性拉伸参数、二值化的动态阈值高低尾和最小区域面积,以及孔洞和斑点各自的获取、膨胀、平滑参数。这些默认值一般不用动;真要动就一边改一边看右边的中间结果图。
明文框 —— 检测参数(和可变区域的差别)¶
参数表和可变区域完全一样,只有三点不同:
- 与参考字符串比对默认是开着的,而且参考字符串是自动填的,填的就是这一件条码解出来的内容,不要手工去改。
- 比对方式默认是"参考字符串在结果字符串中"。明文通常比码多印一些前缀后缀,所以用"包含"而不是"等于"。如果明文和码的内容一字不差,可以改成"结果字符串等于参考字符串",判定更严。
- 如果明文里有码里没有的分隔符,又老因为它比对不过,可以开"忽略符号(仅比对用)"。
明文框 —— 缺陷参数¶
逐字符查明文的笔画缺陷,默认关,要用先右键"启用此检测项"。算法是字模 OCV,用法见字模 OCV。
训练与调试¶
- 动过任何一个框就要 Ctrl+T"训练工程"。
- 右键"运行此检测项"单跑,然后按下面顺序看:
- 先看条码框 → 条码检测结果的"结果"。显示"未检测到值"就是没解出来,后面的比对都是空谈。
- 再看明文框 → 检测参数的"结果字符串"和"结果置信度"。
- 两个都对了,再看整体是 PASS 还是 NG;如果还是 NG,多半是比对方式不合适。
- 条码框在"输入图片"里能看到实际抠出来的那块码。码被切边、静区不够,在这里一眼就能看出来。
- 条码框的缺陷参数调好之后,一定要拿几张真实的坏码验证它确实报 NG——这类参数很容易调成"什么都过"。
常见误判与处理¶
| 现象 | 原因 | 调哪里 |
|---|---|---|
| 结果一直是"未检测到值" | 解码类型选错了 | "解码类型"改成码的真实类型 |
| 偶发解不出,重拍一张又好了 | 框画小了,标签漂一点码就被切 | 把条码框画大,盖住整张码加静区,这是最有效的一招;确认"解码失败自动扩大搜索区重试"是开着的 |
| 二维码小、印得又密,解不出 | 分辨率不够 | 先试把"横向拉伸比例""纵向拉伸比例"调到 1.5~2;根上的办法是把相机拉近或换镜头 |
| 一维码解出来但校验位不对 | 码本身印坏或被压缩 | 提高打印质量;开条码框的"缺陷参数"把坏码拦下来 |
| 结果是"多码NG: ..." | 框里同时扫到了两个不同的码 | 先试着把框画小只盖一个码;画不小就用"多码处理 → 按正则筛选"加正则 |
| 结果是"正则不匹配(...): ..." | 开了"按正则筛选",而这个码不符合正则 | 检查正则写得对不对,或改回"判NG(默认)" |
| 码和明文都读对了,还是 NG | 比对方式太严,或明文里有多余符号 | 比对方式改成"参考字符串在结果字符串中";开"忽略符号(仅比对用)" |
| 明文认不准 | 框切到字、方向不对、模型选错 | 见可变区域的常见误判 |
| 正常的一维码被缺陷参数判 NG | 容忍量给太小 | 把三组容忍量都调大,再从大往小逐个收 |
| 检测二维码时报条码缺陷 | 条码缺陷参数只适用一维码 | 选中条码框下的"缺陷参数"右键"禁用此检测项" |
相关页面¶
码检测:读取一维码和二维码¶
码检测只干一件事:把框里的码解出来。解得出来就 PASS,解不出来就 NG。解出来的内容还能拿去当产品 SN、发给 MES 或 PLC。
如果还要核对码下面那行明文印得对不对,用条码字符对。
前置条件¶
- 检测方案里已经有标签外框,并且训练过。
- 码在图上够清晰:黑白分明、不反光、条纹分得开。
它包含哪些检测框¶
码检测下面只有一个检测框,里面挂两个:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 搜索参数 | 允许码相对模板漂多大范围 | 开 |
| 调整参数 | 解码的全部设置,以及对结果的后处理 | 开 |
码检测不支持细节检测框、屏蔽框,也不支持"添加到副模板"。
支持的码制有三类,在"调整参数"的"解码类型"里选:
- 条码 —— 一维码。先用主解码器读,读不到自动换备用解码器再读一遍,两道都过不了才算失败;"调整参数"里的"解码方式"会显示这一件是哪一道解出来的——经常走到备用解码器,说明框或打光该调了。
- 二维码 —— QR 码。
- DataMatrix —— 工业上常见的方形点阵码。
新建与画框¶
- 点工具栏"新建检测项",类型选"码检测",确定。
- 把绿框拖到码上。把框画大,不要贴着码的边缘切:
- 二维码要把四周的静区(空白边)也框进去,静区不够解码库就认不出来。
- 标签是手工贴的,漂个上百像素很常见,框大一点比什么参数都管用。
- 打开"调整参数",把"解码类型"选成码的真实类型。
- Ctrl+T"训练工程",再"单模板运行",看"结果"里有没有解出内容。
- 这个码是产品 SN 的话,在树里选中这个检测项右键"设置为SN码";要把内容送给通讯口或逻辑检测用,右键"设为自定义变量"。

参数说明¶
搜索参数¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 横向偏移容忍绝对值 | 允许码相对模板往左右各漂多少像素 | 默认 30,也就是左右各 15 像素,对手工贴标来说太小了。手贴标签建议给到 200 以上 |
| 纵向偏移容忍绝对值 | 上下方向同上 | 同上 |
| 横向锁定 / 纵向锁定 | 批量改参数时不动这一项 | 一般不用 |
调整参数¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 解码类型 | 二维码 / 条码 / DataMatrix | 必须选对。选错一张都解不出来,而且不会有别的提示 |
| 横向拉伸比例 | 解码前把图横向拉几倍 | 默认 1。码被打印机压扁、条纹挤在一起时调到 1.5~2 |
| 纵向拉伸比例 | 纵向同上 | 默认 1 |
| 过滤冒号 | 快捷按钮,点一下把"正则表达式"填成过滤冒号的规则 | 码里带冒号而下游不收时点它 |
| 正则表达式 | 匹配到的字符会从结果里删掉 | 留空就不处理。只在下游明确要求去掉某些字符时才填 |
| 起始位 / 长度 | "裁切结果"的两个值:结果从第几位开始取、取几位 | 码很长而下游只要其中一段时用。长度填 0 表示不裁 |
| 比对字符 | "无铭文固定字符比对":解出来的内容必须完全等于这一串,否则 NG | 用在"这条线上的码永远是同一个"的场合;内容每件都变时别开 |
| 扫到多个不同的码 | "多码处理":"判NG(默认)" 或 "按正则筛选" | 框里只可能有一个码就用默认。标签上叠了两个码、框又画不开时选"按正则筛选" |
| 正则 | 选"按正则筛选"才能填,只保留匹配的码,恰好剩一个才通过 | 例:两个码里只有一个以 2636 开头,填 ^2636。写错了输入框会变红 |
| 解码失败自动扩大搜索区重试(×1.5/×2/×3) | 第一次没解出来时,自动把区域按中心放大 1.5 倍、2 倍、3 倍各试一次 | 默认开着,别关。它专治"框画小了 + 标签漂了"造成的偶发漏读。放大到超过 4096 像素或盖满整图就自动停 |
| 解码方式 | 只读,主解码器 / 备用解码器 | 多数件应走主解码器 |
按正则筛选会连单码一起卡
选了"按正则筛选"以后,哪怕框里只有一个码,这个码也必须匹配正则才算过。这等于多了一道内容校验:能挡住串料,但正则写窄了会误杀。
训练与调试¶
- 改过框的位置就要 Ctrl+T"训练工程"。改解码参数不用训练。
- 右键"运行此检测项",打开"调整参数"看"结果"那一栏:
- 有内容 = 解出来了。
未检测到值= 一张也没解出来。多码NG: ...开头 = 扫到了多个不同的码。正则不匹配(...): ...开头 = 开了正则筛选但码不匹配。
- 右边图片下拉框选"输入图片",看实际送去解码的那块图。码被切掉边、静区不够、整块糊掉,在这里都看得出来。
- 后三种结果串只是说明文字,不是码值。送去 SN、自定义变量和通讯输出的一律是空串,下游不会收到这些提示文字。
调之前先确认码本身没问题
拿手机扫一下实物。手机都扫不出来,就不是软件参数的事,先解决打印质量或打光。
常见误判与处理¶
| 现象 | 原因 | 调哪里 |
|---|---|---|
| 一张都解不出来 | 解码类型选错 | "解码类型"改成码的真实类型 |
| 平时都好,偶尔几件解不出来 | 框画得刚好贴着码,标签漂一点就切到码 | 把框画大盖住整张标签或整个码加静区,这是最有效的办法。同时确认"解码失败自动扩大搜索区重试"开着 |
| 框已经很大还是偶发漏读 | 搜索扩张不够 | 把"横向偏移容忍绝对值"和"纵向偏移容忍绝对值"加大到 200 以上 |
| 小尺寸二维码解不出 | 裁出来的图太小,解码库吃不消 | 软件在二维码模式下会自动把小图放大再解;仍解不出就调"横向拉伸比例"和"纵向拉伸比例",或把相机拉近 |
| 码反光、一半发白 | 打光问题 | 调光源角度或换漫射光罩,软件侧调不出来 |
| 结果里多了或少了字符 | 填了"正则表达式"或开了"裁切结果" | 清空正则;把"长度"设回 0 |
结果是 多码NG |
框里盖到了两个码 | 框画小只盖一个;或用"按正则筛选"加正则 |
| 明明有码却判 NG,结果串是对的 | 开了"无铭文固定字符比对"而内容不等于比对字符 | 关掉它,或把比对字符改对 |
| 解码很慢 | 搜索范围太大,或一直在走扩大重试 | 先把框画准让第一次就能解出来;不要把偏移容忍值设成几千 |
相关页面¶
字符识别:识别固定位置的文字¶
字符识别用来读一块位置固定、内容也固定的文字,再和你填的标准答案逐字比:型号、规格、固定批号、警示语。印错、印少、贴错料,它都能抓出来。
内容每件都变的用可变区域;只想看字印得糊不糊、不关心内容的,用固定区域按图案比更简单。
两个名字
老版本的树里这一栏叫"字符检测",现在统一叫"字符识别",是同一种检测项。
前置条件¶
- 检测方案里已经有标签外框,并且训练过。
- 这块文字在模板图上清晰、横排、正向。
它包含哪些检测框¶
字符识别下面只有一个检测框,里面固定挂四个:
| 检测框 | 干什么 | 默认 |
|---|---|---|
| 搜索参数 | 允许这块文字相对模板漂多大范围 | 开 |
| 定位参数 | 在这个范围里按形状把这块文字精确找出来 | 关 |
| 检测参数 | 认字,并和参考字符串比对 | 开 |
| 缺陷参数 | 逐个字符查笔画有没有缺、糊、多墨(字模 OCV),要先建字体库 | 关 |
定位参数默认关
字符识别的定位模板就是框里的文字本身。内容每件会变的行(序列号、授权码)拿整行做模板,换一件就找不到,定位失败后认字和缺陷参数都不运行,整件 NG。所以新建的字符识别默认停用定位参数,只靠标签外框定位,框固定在模板位置。 内容固定、又需要框跟着文字走时,在树里"定位参数"上右键启用,再训练工程。给它"添加到副模板"时软件会自动打开这一组的定位参数:运行时要靠定位分数决定用哪张模板,关着就永远用第一张。内容会变、旁边又有固定文字的,改用可变区域锚在固定文字上;旁边有条码的,用条码字符对。
也可以在树里选中它右键,用"添加细节检测框""添加屏蔽内容检测框"再加两种框;它还支持"添加到副模板"。
新建与画框¶
- 点工具栏"新建检测项",类型选"字符识别",确定。
- 把绿框拖到那块文字上:
- 上下留一点余量,不要贴着字顶字底切。
- 一个框只框一行。多行文字要么一行建一个字符识别,要么改用多行字符。
- 尽量别把边框线、下划线、图标框进来。
- 打开"检测参数",在"参考字符串"里填上这块文字应该是什么,比如
K22R-02。也可以先跑一次,再点"设为当前识别结果"把认出来的直接填进去(填之前一定要肉眼确认它认对了)。 - Ctrl+T"训练工程",再"单模板运行"。
- 要把认出来的内容送给通讯口、MES 或逻辑检测,在树里选中这个检测项右键"设为自定义变量"。

参数说明¶
搜索参数和定位参数与固定区域完全一样,这里只讲后两个。
检测参数¶
顶部有"设置""混淆字符""替换字符"三页。
预处理参数:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 白底黑字 | 字是深的还是浅的:勾上 = 白底黑字,不勾 = 黑底白字 | 按实际勾,弄反了基本认不出字 |
| 英文模型 | 勾上 = 英文模型,只认数字、英文字母和常见符号;不勾 = 中英文模型,还认汉字 | 内容里没有汉字就勾上"英文模型",它不会把字母认成汉字,更稳更快。有汉字才取消勾选(用中英文模型) |
| 旋转角度 | 认之前先把这块图转 0 / 90 / 180 / 270 度 | 软件只认横排正向的字。竖排、倒排必须在这里转正 |
| X方向缩放 | 认之前横向拉伸或压缩的倍数 | 默认 1。字被压扁时调到 1.5~2 |
| Y方向缩放 | 纵向同上 | 默认 1。字太矮太小时往上调 |
| 最小字符高度 / 最小限定框高度 | 勾上"最小字符高度"后,比"最小限定框高度"矮的笔画先被抹掉再认;不勾时数值框置灰 | 用来去掉框里混进来的细线、下划线、上下行漏进来的半截字。"最小限定框高度"填正常字符高度的一半左右 |
比对参数:
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 中文符号转英文 | 全角的括号、逗号、冒号统一换成半角再用 | 默认开着,别关 |
| 忽略符号(仅比对用) | 比对时只比字母和数字,把符号丢掉。不改输出结果 | 内容里的横杠、点老是认不稳,但你只关心字母数字时开 |
| 过滤符号(结果输出) | 直接把非字母数字从输出结果里删掉 | 结果要发给 MES 而符号是噪声时才开;开了以后下游拿到的也是删过的 |
| 置信度阈值 | 识别结果的可信程度门槛,0~1 | 默认 0.8。印糊了置信度会掉下来,靠它抓印刷质量。误报多降到 0.6~0.7,漏检糊字升到 0.85 |
| 字符串长度限制 | 结果必须正好这么多字符,否则 NG。填 -1 表示不检查 | 内容固定时顺手填上,能多拦一层 |
| 与参考字符串比对 | 是否拿结果和"参考字符串"对一遍;不勾时"比对方式""参考字符串"置灰 | 字符识别默认开着,这是它的主要用途,别关 |
| 比对方式 | 参考字符串在结果字符串中 / 结果字符串在参考字符串中 / 结果字符串等于参考字符串 | 默认"结果字符串等于参考字符串",最严也最常用。只想卡固定前缀就换成"参考字符串在结果字符串中" |
| 参考字符串 | 标准答案 | 手工填,或点它下面的"设为当前识别结果"从这次识别里抓。上线前必须核对一遍 |
识别结果:只读的"结果字符串"和"结果置信度",调参全靠它。
混淆字符页:每一行是一组"互相认错也当对"的字符,比如 1Il、oO0。左列是组名不能改,右列填这一组互相等价的字符。只在比对时生效,不改输出。用"+"加一组,选中行用删除图标删一组。
- 好处:
0和O这种天生难分的字符不会因为认反就误判。 - 坏处:真的印错成另一个同组字符也放过了。要求严格的场合,把对应那一组删掉。
替换字符页:两列,"原字符"和"替换为"。结果里出现左列内容就换成右列。它改的是输出结果本身,用来兜底修一些固定认错。
判定顺序是固定的,照这个顺序排查最快:认不出字 → NG;长度不等于"字符串长度限制" → NG;置信度低于"置信度阈值" → NG;比对不过 → NG。
缺陷参数¶
这一页查的是笔画本身有没有缺角、糊团、多墨,算法是字模 OCV:把每个字和字体库里存的样本比。默认是关的,要用先右键"启用此检测项"。建字体库、调参和看结果见字模 OCV。
只查内容对不对的话,这一页不用开。
训练与调试¶
- 动过框的位置就要 Ctrl+T"训练工程";只改识别参数不用训练。
- 右键"运行此检测项"单跑,看"结果字符串"和"结果置信度"。
- 结果图片下拉框里三张图:
- 输入图片:框实际抠出来的那块。切字、框歪、混进别的行,都在这里看。
- 旋转矫正图:转正并缩放之后送去识别的图,这是模型真正看到的东西。
- 预处理图:勾了"最小字符高度"才有,能看到细线被抹掉后的效果。
- 拿十几张实拍图跑一遍,记下最低的置信度,把"置信度阈值"设在它下面一点点。
常见误判与处理¶
| 现象 | 原因 | 调哪里 |
|---|---|---|
| 完全认不出字 | 底色弄反,或方向不对 | 勾上或取消"白底黑字"(不勾 = 黑底白字);"旋转角度"转正 |
| 只认出一两个字,中间漏了 | 字间距太大或框切到字 | 重画框,四周留余量;试着把"X方向缩放"调到 1.5 |
| 数字被认成汉字 | 没勾"英文模型"(用的是中英文模型) | 内容里没汉字就勾上"英文模型" |
| 结果里混进短横线、下划线 | 框里有边框线或下划线 | 勾"最小字符高度","最小限定框高度"填正常字高的一半左右 |
| 正常品偶尔 NG,结果串看着是对的 | 置信度卡太紧,或参考字符串里有看不见的空格 | 降"置信度阈值";重新点一次"设为当前识别结果"覆盖参考字符串 |
0 和 O、1 和 I 老是判错 |
字形天生难分 | 在"混淆字符"页确认有对应的一组;要求严格时反过来把这一组删掉 |
| 印错成另一个字却判 PASS | 错的那个字和对的那个字在同一组混淆字符里 | 删掉那一组;把"比对方式"改成"结果字符串等于参考字符串" |
| 换了一批料就整批 NG | 参考字符串还是上一批的 | 改参考字符串。经常换型号的产线应该改用可变区域或逻辑检测 |
| 定位失败导致整件 NG | 搜索范围不够或分数阈值太高;或者这行内容每件都变,却开着定位参数 | 见固定区域的搜索参数与定位参数;内容会变的行停用定位参数 |
| 双击检测参数 / 缺陷参数,结果区写"本次定位失败,未运行" | 本次定位参数 NG,认字和比对都没跑,窗口里是当前图模板位置的裁剪 | 同上一条 |
相关页面¶
字模 OCV:逐字查印刷缺陷¶
字模 OCV 的比对算法移植自 HALCON 的 OCV 流程,不需要装 HALCON。
字模 OCV 是字符类检测项"缺陷参数"的算法(也是唯一的算法):先把一行字切成一个个字符,再把每个字和"字体库"里存的该字样本(字模)比,比不像的字判 NG。
它挂在三种检测项下面:字符识别、可变区域的字符框、条码字符对的明文框。树上的节点文字是"缺陷参数(字模OCV)"。
老工程里的老字符缺陷配置
老的字符缺陷算法(TightOcr)已经下线。老工程里用它配过的字体库和参数,升级后打开工程时会被丢弃,并弹框列出是哪几个检测项;请在字模 OCV 里重新选字体库、建样本,关掉提示框再保存工程,下次打开就不再提示。老工程里没启用过缺陷参数(只查内容对不对)的检测项也会列在提示里,不用重配。
前置条件¶
- "检测参数"(认字)已经调好,能稳定认对、比对通过。缺陷比对拿认字结果当"这里应该是哪几个字"。
- 一个框只框一行字。
- 字高不小于 30 像素。字太小切字会不准,误报会多;不够就把相机拉近或换镜头。
字体库¶
字体库存在本机的 C:\Users\<用户名>\.labeldetect\ocv_fonts\ 下,工程文件里只记字体库的名字。同一台电脑上不同工程、换料后的新工程可以直接选用同一个字体库。
- 换电脑时,在老电脑上点"导出"存成
.ocvfont文件,到新电脑上点"导入"。导入时同名库已存在会问是否覆盖;选"否"就再输入一个新名字导入。工程拷到新电脑先打开对话框不会丢字体库名(会提示本机没有这个库),导入同名库即恢复。 - 老版本外挂 OCV 的字体库(
.labeldetect\ocv\下的.ocv文件)会在打开字体库列表时自动转成新格式导入,老文件不动。 - 字体库名只能用字母、数字、下划线、减号和汉字。
- 每个字符最多存 10 个样本。
能比对的字符:大小写字母、数字和 @#$&()+-/:;<>=?![]*。其它字符(如空格、中文)不参与比对。
建库流程¶
- 在树里选中检测项下的"缺陷参数(字模OCV)",右键"启用此检测项",双击打开,在"字体库"一栏点"New",输入字体库名,"确定"。字体库还是空的时,字体库一栏下面会提示下一步怎么做。
- 点本窗口工具栏的运行按钮检测一次(或关掉窗口,在树里选中检测项右键"运行此检测项")。库里还没有样本的字会报"缺模板",左边字符列表里是 ×0;点"当前字符全部加为模板",把这一行切出来的字一次全部存成样本。运行本身不会往字体库里写任何东西。
- 再检测一次,应为 PASS。左边字符列表每格显示"字符 ×样本数",这一行出现的字都应该是 ×1 以上;点某个字,右边会显示它的样本图。
- 首件本身有缺陷、样本学错了:在字符列表选中那个字,用画廊左右翻到错的那张,点"删除模板",再用"手动添加模板"补一张,或换一件好品跑一次后点"当前字符全部加为模板";好的字被误判 NG,点"NG字符全部加为模板"把这次判 NG 的字都补成样本。

模板按钮(画廊下方,两行两列):
| 按钮 | 作用 |
|---|---|
| 当前字符全部加为模板 | 把本次检测切出来的每个字都存成样本,不用先选字。已经在库里的同一张图会跳过;某个字已满 10 个样本时跳过这个字,完成后提示加了几个、跳过几个 |
| NG字符全部加为模板 | 把本次所有判 NG 的字(含"缺模板"的字)按字分别存成样本,不用先选字 |
| 手动添加模板 | 先在字符列表选中要补的字,点按钮,在弹出的"添加模板"窗口里把框拖到这个字上,点"添加" |
| 删除模板 | 删掉画廊当前显示的那张样本 |
两个"全部加为模板"都用本窗口上一次检测的结果;结果来自别的字体库、切分失败时会提示先重新检测或调整分割参数。
字体库只在你点按钮时改变
任何运行(调试端、运行端、命令行)都不会自动往字体库里加样本。可变内容(日期、流水号)要在上线前把可能出现的字都加全——每种字至少让它出现在一次检测里,点"当前字符全部加为模板";没加过的字在生产里会报"缺模板: X"。字符列表里的样本数就是覆盖表,上线前逐个检查。
本窗口的检测按钮用的是检测项上一次运行留下的图和认字结果。检测项还没运行过时会提示"请先运行检测项"。
参数¶
字体库一栏:
| 项 | 填写 | 说明 |
|---|---|---|
| FontLib | 下拉选字体库 | 空着每件都报"请先新建或选择字体" |
| New / Del | 新建 / 删除字体库 | 删除会删掉本机这个字体库的全部样本,其它用它的工程也会受影响;从老外挂自动导入的库删掉后不会再自动导回,要用再手动导入 |
| 导出 / 导入 | .ocvfont 文件 |
换电脑、备份用 |
字符分割参数页:
| 项 | 默认 | 说明 |
|---|---|---|
| 分割符号 | 勾 | 不勾时符号照样参与切字(它们是版面的一部分),只是不比对 |
| 自动设置字符宽高 | 勾 | 按这一行的字自动估字宽字高;勾着时下面四个数置灰不用 |
| 字符最小高度 / 字符最大高度 | 10 / 80 | 像素。自动不准时取消"自动设置字符宽高"再手填 |
| 字符最小宽度 / 字符最大宽度 | 5 / 80 | 像素 |
OCV检测参数页:
| 项 | 默认 | 说明 |
|---|---|---|
| 比对方式 | 逐像素比对(推荐) | 逐像素比对:先用样本在这一行里找准字的位置,再逐点和样本比,能抓缺角、污渍、压在笔画上的灰斑。投影比对(HALCON 同款):老外挂的算法,只看每行、每列的平均灰度,对压在笔画上的灰斑看不见;老用户习惯老行为时选它。注意:逐像素对 2 px 以下的细笔画缺墨看不见(笔画两侧各 1 px 是允许的边缘误差),笔画 ≥ 3 px 的整笔缺失、断笔能报;喷码 / 热敏 / 小字号请提高分辨率让字高 ≥ 30 px、笔画 ≥ 3 px,或改选投影比对 |
| 允许灰度差 | 25 | 1~255。实拍和样本灰度差多少以内算一样;误报多就调大。两种比对方式都用(老外挂默认 20) |
| 分数阈值 | 0.8 | 0.05~0.95。只在投影比对下有效:每个字的相似度低于它判 NG,越大越严;逐像素比对时置灰不用 |
| 适应光照变化 | 勾 | 整体明暗变化不算缺陷;两种比对方式都用 |
| 适应缩放 | 勾 | 只在投影比对下有效:字的大小略有变化不算缺陷;逐像素比对时置灰不用 |
| 图上只标NG框 | 勾 | 结果图上只画判 NG 的字的红框;结果表不受影响,总是列出全部字 |
看结果¶
"结果"页表格从左到右列出这一行的每个字和"位置""分数",判 NG 的行是红字。右侧图像选"LastRun.OutputImage",每个字画一个框:红框是 NG,绿框是通过(勾了"图上只标NG框"时结果图只画红框)。表上方的红字是 NG 原因:
| 结果 | 含义 | 处理 |
|---|---|---|
NG: X |
这些字和样本比不像 | 看图确认真有缺陷;好的字被误判就点"NG字符全部加为模板",或适当调大"允许灰度差"(投影比对还可调小"分数阈值");白纸过曝(灰度顶到 255)也会让好字误报,先把曝光降到纸色不饱和 |
缺模板: X |
字体库里没有这些字的样本 | 点"当前字符全部加为模板",或"手动添加模板" |
分割字符数量与OCR结果字符数量不相等,请检查分割参数和分割结果 |
切出来的字数和认出来的字数对不上,图上会把切出的候选框全画成红色 | 看候选框:字粘在一起或断开,就取消"自动设置字符宽高"手填字宽字高;多切出了符号,检查"分割符号"是否该勾 |
请先新建或选择字体 / 字体库 X 不存在 |
没选字体库,或本机没有这个字体库(换了电脑) | 选一个字体库,或从老电脑导出再导入(导入同名库即恢复,工程里的字体库名不会丢) |
参考串为空 |
认字结果里没有可比对的字符 | 先把"检测参数"调到能认出字 |
开始运行时,如果启用的检测项用的字体库在本机不存在,日志区会提示一条"字模OCV 字体库缺失"。
注意事项¶
- 样本只在点"…加为模板"时写入。首件本身有缺陷就别点"当前字符全部加为模板",先看图,或加完后在字符列表里把错的那张删掉。
- 字体库是本机全局的:在一个工程里删样本、删库,会影响本机所有用这个字体库的工程。
- 同名字体库在不同电脑上内容可能不同,换电脑请用导出 / 导入搬,不要各自重新建库。工程拷到新电脑先打开对话框不会丢字体库名,导入同名库即恢复。
相关页面¶
多行字符:识别多行文字¶
一个框圈住一整块文字,软件把它切成一行一行分别识别,每行可以单独设参考内容和比对松紧。适合地址块、多行规格参数、多行说明这种"内容几行、行数固定"的地方。
如果只有一行字,而且每件产品的内容都一样,用字符识别更省事;一行字但每件都不同,用可变区域。多行字符的特点是一个框管好几行,并且比对用的是整行相似度,不是逐字模板。
前置条件¶
- 检测方案里已经建好标签外框,模板图已经完成旋转拉伸。
- 文字在模板图上清晰可读,人眼能认出来。人都认不出的字,软件也认不出。
它包含哪些检测框¶
新建一个"多行字符"检测项后,树里它下面有两个检测框:
| 检测框 | 管什么 |
|---|---|
| "搜索参数" | 允许这块文字相对模板漂移多少。文字位置每件都稳,就把容忍值调小 |
| "多行字符参数" | 识别与比对的全部设置,是主要调参的地方 |

新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"多行字符",确定。
- 在模板图上把整块文字拖进一个框里。框要把所有要认的行全包住,上下左右各留一点空白,不要贴着字边切。
- 点工具栏"训练工程"。
- 在树里双击"多行字符参数",打开参数窗口,点窗口左上角的运行按钮跑一次,看识别结果。
框不要拖得过大
框里混进旁边的其它文字,会被当成额外的行,把行序冲乱。宁可框得紧凑,也不要顺手把半行别的内容圈进来。
参数说明¶
"多行字符参数"— 上方通用设置¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "提取行数" | 这个框里要识别几行 | 按实际行数填。软件按从上到下的顺序取,取满就停,多余的行不识别 |
| "分数阈值" | 单行识别的置信度门槛,低于它这一行直接丢弃 | 默认 0.8。字印得浅或有底纹时适当降到 0.6~0.7;降太低会把噪点认成字 |
| "旋转补偿" | 把框内图像整体旋转 0 / 90 / 180 / 270 度再识别 | 文字在图上是竖的或倒的才用。识别引擎对正向字最准 |
| "当前识别结果设为参考" | 把这次认出来的每一行,一键填进各行的"参考字符"(按钮在逐行表格正上方) | 模板图认对了再点。认错了点它等于把错的存成标准答案 |
| "是否屏蔽其余检测项ROI" | 把别的检测项的框覆盖掉再识别 | 旁边的框压到这块文字上时打开。周围检测项多的时候不建议开,容易把要认的字也挡掉 |
| "预处理" | 勾上后先做一次二值化增强再识别 | 字浅、背景脏时试着打开 |
| "二值化阈值" | "预处理"打开后生效(不勾时置灰),0~255 | 从 125 起调。调到结果图里字是黑的、底是白的、笔画不断为宜 |
"多行字符参数"— 逐行表格¶
表格一行对应图上的一行文字。左边几列是结果,右边几列是这一行的判定规则。
| 列 | 含义 | 调参建议 |
|---|---|---|
| "识别结果" | 去掉空格 / 冒号等之后的识别内容 | 只读 |
| "分数" | 这一行的识别置信度 | 只读。长期低于 0.8 说明取像或光照要改 |
| "验证结果" | 勾上才拿这一行和"参考字符"比对;不勾只识别不判 | 只要读出来上传、不需要判对错的行,取消勾选 |
| "参考字符" | 这一行的标准答案 | 可直接在格子里输入,也可用"当前识别结果设为参考"批量填 |
| "相似度分数" | 本次结果与参考字符的相似度,0~1 | 只读 |
| "相似度阈值" | 相似度达到它才算 PASS | 默认 1.00,即必须一字不差。个别字容易认混又不影响品质时,可放到 0.9 左右 |
| "忽略符号" | 只保留字母和数字,其余符号全去掉再比 | 参考字符里带括号、斜杠、点号且这些符号常被认错时打开 |
| "忽略空格" | 比对前去掉空格 | 默认打开,建议保持 |
| "忽略冒号" | 比对前去掉中英文冒号 | 默认打开,建议保持 |
| "裁切" | 只取这一行的一段来比对 | 行里只有中间一截是固定内容时用 |
| "裁切起始" / "裁切结束" | 取第几个字符到第几个字符 | 从第 1 个字符开始数 |
| "最终结果" | 这一行经过忽略 / 裁切之后,真正参与比对的内容 | 只读。比对总不通过时先看这一列,常常是符号没去干净 |
点表格里的任意一行,下方"结果详细信息"会展开这一行的"识别结果:""分数:""参考字符:""相似度分数:""最终结果:",方便逐行核对。
"搜索参数"¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "扩张参数" | 勾上才允许框按下面的容忍值向外扩 | 文字位置每件都稳,可以不勾 |
| "横向偏移容忍绝对值" | 允许左右漂多少像素 | 默认 10。按产品实际漂移量给,给大了会把旁边内容吃进来 |
| "纵向偏移容忍绝对值" | 允许上下漂多少像素 | 默认 5 |
| "横向锁定" / "纵向锁定" | 锁住这个方向不扩张 | 只在某一个方向会漂时,把另一个方向锁上 |
训练与调试¶
- 画完框、改完参数,先点"训练工程"。
- 双击"多行字符参数",点运行按钮跑一次。
- 窗口左侧的结果图下拉框里可以逐张看中间产物:"检测掩模""检测区域图""旋转图""第1行""第2行"……"结果图"。哪一行切得不对,看"第N行"那张图最直接。
- 模板图上认对了以后,点"当前识别结果设为参考",再逐行调"相似度阈值"和三个"忽略"开关。
- 用"打开调试图"或"打开调试文件夹"把现场的实拍图过一遍,确认每张都稳定。
- 全部确认后回主界面点"保存工程"。
常见误判与处理¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 识别出来的行数少于设定行数,整项判 NG | 有的行"分数"低于"分数阈值",被丢掉了 | 先看结果图哪行没框出来;降低"分数阈值",或改善这块的照明与对焦 |
| 行序错乱,第 1 行的内容跑到第 2 行 | 框里混进了旁边其它内容,被当成一行 | 把框收紧,只包住要认的文字 |
| 识别结果对,但比对不通过 | "最终结果"里还留着符号 / 空格,和"参考字符"对不上 | 打开"忽略符号""忽略空格""忽略冒号";或直接用"当前识别结果设为参考"重填参考字符 |
| 某个字长期被认成形近字(0 和 O、1 和 I) | 印刷字体本身难分 | 把这一行的"相似度阈值"从 1.00 放到 0.9 左右,或改用"裁切"只比对稳定的那一段 |
| 文字是竖排或倒的,完全认不出 | 引擎只认正向文字 | 用"旋转补偿"转到正向;仍不行就调整相机安装方向 |
| 打开"是否屏蔽其余检测项ROI"后反而认不到 | 相邻检测项的框压住了要认的文字,被一起屏蔽了 | 关掉这个开关,或把相邻检测项的框缩小 |
| 首次运行这一项特别慢 | 识别引擎第一次使用时要加载 | 属正常现象,之后恢复。正式运行前先在调试端跑一次 |
相关页面¶
有无检测:判断东西在不在¶
框住一块位置,回答"这里该有的东西在不在、对不对"。漏贴标签、贴错标签、漏装零件、装反方向、少一颗螺丝,都归它管。
它有两套判法,在参数窗口顶部用两个页签切换:
- "OK/NG检测":注册若干张 OK 图和 NG 图,软件自己学会怎么分。新建时默认就是这一套,大多数场合用它。
- "传统算法":靠亮度、对比度、斑点面积这类数字来判。适合"有东西就明显变亮 / 变暗"这种一眼能用数字说清的场合。
两套只生效一套 —— 当前停在哪个页签,跑的就是哪一套。
前置条件¶
- 检测方案里已经建好标签外框,模板图已完成旋转拉伸。
- 取像稳定:同一个位置,每件产品拍出来的亮度、放大倍率、角度基本一致。取像不稳,这个检测项一定会误报,换算法也没用。
它包含哪些检测框¶
只有一个:"有无检测参数"。双击它打开参数窗口,两套判法都在里面。

新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"有无检测",确定。
- 在模板图上框住要判断的位置。框要刚好包住物料、留一点边:判断有没有贴标签,就框标签所在的那一小块,不要把周围大片背景一起圈进去。 框的大小在注册第一张图之后就定下来了(见下面"框的大小:按类型锁定"),画框时就按最终大小画。
- 点"训练工程"。
- 双击"有无检测参数",开始注册样本或调传统参数。
参数说明¶
"OK/NG检测"页签¶
用之前先建一个类型。类型就是一个样本库,里面装这个位置的 OK 图和 NG 图。不同位置、不同产品各建各的类型,不要共用。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "类型:" | 当前用哪个样本库 | 必须选一个。空着跑会直接判 NG 并提示"未新建或选择检测类别" |
| "新建" | 建一个新类型 | 名字取得能看懂,例如"A面-左侧标签" |
| "删除" | 删掉当前类型 | 连同里面所有注册图一起删,且无法撤销 |
| "导入" / "导出" | 把类型打成压缩包带走 / 装回来 | 换机器、备份、把调好的样本库复制到另一台设备时用。导入后要重新打开这个参数窗口才能看到 |
| "分数:" | 本次的分数,形如 OK: 0.85, NG: 0.60 |
只读。OK 分数要比 NG 分数高出 0.10 以上才判 OK(见下方"怎么判") |
怎么判(5.0 起): 软件把框里的图和这个类型的 OK 组、NG 组分别比像不像,得到"OK 分数"和"NG 分数";OK 要比 NG 像得够多(高出一个固定边距,出厂 0.10)才判 OK,否则判 NG。 不再有"分数阈值"可调:两个分数是相对比较,光照、产品整体偏亮偏暗不会一起把分数推过某条线。判不准时补注册图,而不是调数字。 边距写在模型配置里,调整它不需要重新注册。
框的大小:按类型锁定¶
同一个类型里的注册图必须是同样大小的框裁出来的——框拉大拉小,物料在图里的比例就变了,软件就会把好品看成"不像"。所以:
- 一个类型一有注册图,这个类型下所有有无检测框的大小就锁定为"类型视野"(第一张注册图的大小),框只能移动、旋转,四角不再出现缩放手柄。
- 第一张注册图定视野:新类型画好框再注册,之后同类型的框都一样大。状态行会显示"视野 W×H(已锁定,N 张)";还没注册时显示"视野未定(第一张注册图定)"。
- 把框换到已经有注册图的类型:框自动按这个类型的视野改大小(中心和角度不变),提示框里会写明。
- 要换视野:把这个类型的注册图全部删掉(锁自动解开)→ 改框 → 重新注册。
- 老工程里同一类型的框大小可能不一致:状态行会提示"当前框 w×h 与类别视野 W×H 不符",旁边的"按类别视野重设框"一键把本框改对;"本类别所有框按视野重设"把当前检测方案里同类型的框全部改对(几百个框也是一下)。库里和视野差太多的注册图会提示"N 张尺寸与视野不符,建议删掉重注册",按提示删掉后用改好的框重新注册。
- 这些都只是提示和按钮,不会在打开工程或运行时自动改框。
下面一半是样本库,分"OK组图片"和"NG组图片"两个页签:
| 按钮 | 作用 | 说明 |
|---|---|---|
| "注册当前图片为OK" | 把当前框里的图存进 OK 组 | 每组最多 100 张,超了会提示"注册图片数量限制100" |
| "注册当前图片为NG" | 把当前框里的图存进 NG 组 | 同上 |
| "删除当前注册图" | 删掉当前选中的那张注册图 | 删完要重新跑一次才能看到新结果 |
| "导入图片注册" | 从磁盘选一张图,在弹出的窗口里拖框对准位置,再点"注册为OK"或"注册为NG",完事点"完成" | 用来把历史存图变成样本。已有注册图的类型,导入窗口里的框大小固定为类型视野,只能移动 / 旋转 |
注册按钮下面有一行状态:注册已生效 已注册 OK n / NG m · 视野 W×H(已锁定,N 张) · CPU(两组都有图才会生效);有问题时中间会写"OK 只有 1 张""没有 NG 图""OK 中 2 张废图"之类,没生效时开头会写"注册未生效"和原因。注册、删图、导入后状态行先显示"注册待生效",右边有"立即生效"按钮。
生效后行尾的" · GPU"/" · CPU"表示这台电脑实际用显卡还是 CPU 在算。
两组都必须有图,否则跑不起来:OK 组空会提示"未注册OK图",NG 组空会提示"未注册NG图"。
什么样的图不能当注册图
注册图是这个检测项成败的关键。
- 框没对准的不要。注册时框和实际检测时框必须落在同一个位置。偏个十几像素,分数就会明显掉下来。
- 取像条件和产线不一致的不要。用别的机器、别的光源、别的曝光拍的图,不要混进来。
- 模糊、过曝、欠曝的不要。
- 不确定是 OK 还是 NG 的不要。拿不准就别注册,宁缺毋滥。
- OK 组要覆盖良品的正常波动(位置略偏、色差、批次差异);NG 组要覆盖真实会发生的不良(漏贴、贴反、贴歪、错料),每类不良都给几张。
- 两组的张数不必相等,但太少判定会很不稳。建议:OK 组至少 20 张,要覆盖不同班次的光照、工件摆放的正常偏差;NG 组每一种缺陷至少 5 张。每组上限 100 张,多了没有额外好处。
注册时软件会检查什么¶
每次点"注册当前图片为OK / NG"或在"导入图片注册"窗口里注册时,软件先把这张图和已注册的图比一遍,有问题会拒绝,或者先问一次"仍要注册吗?"(默认"否"):
| 提示 | 什么意思 | 怎么办 |
|---|---|---|
| "这张图已经注册为 NG / OK,同一张图不能既是 OK 又是 NG"(拒绝) | 同一张图已经在另一组里 | 想清楚它到底是好是坏,到另一组把它删掉再注册 |
| "这张图已经注册过了(重复)"(问) | 同一张图在本组已经有了 | 一般点"否",重复注册没有好处 |
| "废图(…近全白 / 近全黑 / 无内容)"(本组已有 3 张正常图时拒绝,否则问一次) | 画面几乎全白、全黑,或一片纯色没有内容,多半是没拍到、过曝或欠曝 | 检查取像和框的位置;只有本组本来就是靠"一片黑 / 一片白"判有无时才注册 |
| "亮度 L=…,与已注册 OK 的中位 L=… 相差 …"(问) | 这张 OK 图比已注册的 OK 图亮或暗了 40 以上,可能取像或光照变了 | 先查光源、曝光有没有被改过;确认是正常波动再注册 |
| "框尺寸 …与已注册的 … 相差 … 倍,框可能没固定"(问) | 框的大小和已注册的图差 1.5 倍以上 | 把框改回原来的大小,不要每次重画(锁框后新注册的图不会再出现这条,只有老工程会) |
| "N 张尺寸与视野 W×H 不符,建议删掉重注册"(状态行) | 老库里有些图的大小和类型视野差 20% 以上 | 删掉这几张,用按视野改好的框重新注册 |
| "当前框 w×h 与类别视野 W×H 不符"(状态行) | 这个框和类型视野差 20% 以上 | 点"按类别视野重设框",或"本类别所有框按视野重设" |
| "和已注册的某张 OK 图几乎一样" / "更像已注册的 NG 图"(问) | 疑似标错:要注册为 NG 的图和某张 OK 几乎一样,或者要注册为 OK 的图更像 NG | 再看一眼这张图到底是好是坏 |
运行中注册也会查:同一张图两边都注册的拒绝,废图先问;待生效区里的图也算。其它项只在提示条里提醒一句,不做疑似标错。
运行中注册¶
正常情况下运行中不能改任何参数。唯一的例外是这里:运行界面正在跑的时候,在调试端树里双击"有无检测参数",打开的是"运行中注册 OK/NG(停止后生效)"窗口。
| 控件 | 说明 |
|---|---|
| 上方文字 | 显示当前类别、检测框名、已注册与待生效的张数、上一件的判定和 AI 分数 |
| 图像区 | 上一件产品的实际框内图,每 0.5 秒刷新一次 |
| "暂停刷新(定住当前这张再注册)" | 勾上后画面不再跳,方便把当前这张定住再决定 |
| "记为 OK" / "记为 NG" | 把画面上这张暂存起来 |
| "关闭" | 关窗 |
暂存的图不会立刻生效:它先存在待生效区,停止运行后才正式入库,下一次点"开始运行"之前软件自动生效一次。所以在产线上看到误判时,可以当场把那张图记下来,等停机换型时自然生效,不用停线。
"传统算法"页签¶
七组判据,每组的标题都是勾选框,勾上才参与判定;所有勾上的项必须全部通过,整项才 PASS。
| 判据 | 含义 | 调参建议 |
|---|---|---|
| "灰度均值判断" | 框内平均亮度落在"范围设定(0~255):"内才算过 | 有东西和没东西整体明暗差别明显时最好用。先跑几件看"当前值:",再把范围卡在实测值上下留一点余量 |
| "对比度" | 框内明暗反差,范围 0~127 | 有东西时画面有花纹、没东西时一片平,用它 |
| "灰度最大值判断" | 框内最亮的那个点 | 抓反光点、亮标记 |
| "灰度最小值判断" | 框内最暗的那个点 | 抓黑色印记、黑色零件 |
| "斑点检测" | 先按"灰度范围设定(0~255):"把目标像素挑出来,再看"斑点面积:"是否落在"面积范围(0~):"内 | 目标颜色和背景差得开时最准。灰度范围拖到结果图里目标被完整涂上颜色为止 |
| "螺丝检测" | 用内置模型找螺丝,分数高于"分数阈值:"算有 | 只认螺丝这一类目标。看"当前分数:"定阈值,默认 0.7 |
| "边缘分析" | 按"边缘对比度范围(0~255):"提边缘,边缘总面积落在"边缘面积范围(0~):"内才算过 | 有东西时轮廓多、没东西时光板一块,用它 |
每组里的"当前值:""当前分数:""当前边缘面积:"在没跑过时显示"请先运行检测项",跑一次就会填上实测值 —— 先跑,再照着实测值定范围,不要凭空填。
跑完后结果图下拉框里会多出"斑点图""边缘图""螺丝定位",可以直接看提取效果对不对。
注册与调试¶
用 OK/NG 检测时:
- 建类型 → 用模板图或调试图注册若干张 OK 和 NG。
- 注册、删图、导入后先标记"待生效",关闭窗口、切换类别或点"立即生效"时一次算完(注册图多、框大时要几秒到几十秒,期间窗口会卡住,不用重复点);算完状态行会显示"注册已生效";两组都要有图才能生效。
- 之后开始运行都是秒加载:生效的结果存在样本库里,只要注册图没变,以后开工程、开始运行都不用重算。
- 点"整体运行"或用"打开调试文件夹"过一批实拍图,看判定对不对;判错的图按"什么样的图不能当注册图"挑合格的补进对应组。
- 点"保存工程"。
用传统算法时:先跑一次拿到实测值,再逐项勾选、定范围,然后过一批图验证。
运行中注册的图什么时候生效?
停止运行后入库,下次开始运行前自动生效,这一步几秒到几十秒,信息区会打印"有无AI预置完成"。正常情况下第一件产品不会被拖慢。
常见误判与处理¶
先记住排查顺序:偏移 → 取像 → 框大小 → 注册图。模型几乎从来不是原因。
| 现象 | 原因 | 处理 |
|---|---|---|
| 良品被判 NG,分数忽高忽低 | 框实际落点和注册时不一致(标签外框定位没跟上,或产品来料位置变了) | 先看结果图上框有没有对准。对不准就回标签外框调定位。框位置靠上游定位,有无框本身大小固定(要换视野见上文) |
| 一整批突然全是 NG | 取像变了:光源衰减 / 换了灯 / 改过曝光增益 / 镜头脏了 | 拿现在的图和注册图并排比亮度。取像恢复原样后再看 |
| 换批次后误报变多 | 新批次的正常外观注册图里没有 | 把新批次的良品补进 OK 组 |
| 坏品被判 OK | NG 组里没有这种不良 | 把这种不良补进 NG 组 |
| 良品被判 NG,状态行提示"当前框与类别视野不符" | 老工程里这个框的大小和类型视野不一样 | 点"按类别视野重设框"(或"本类别所有框按视野重设")后再跑 |
| 提示"未注册OK图"或"未注册NG图" | 对应的组是空的 | 两组各注册至少一张 |
| 提示"未新建或选择检测类别" | "类型:"下拉框是空的 | 新建或选一个类型 |
| 注册不了,提示"注册图片数量限制100" | 该组已满 100 张 | 先删掉旧的、质量差的注册图再注册 |
| 传统算法里"当前值:"一直显示"请先运行检测项" | 这个检测项还没跑过 | 点窗口左上角运行按钮跑一次 |
| 传统算法勾了好几项,总是 NG | 勾上的项必须全过 | 逐项取消勾选,定位到是哪一项卡住,再单独调它的范围 |
显卡版与 CPU 版¶
同一份软件有两种安装包:CPU 版(版本号不带后缀)和 NVIDIA 显卡版(版本号带 _gpu)。判定结果一样,只是快慢不同:
- 显卡版要求电脑装有 NVIDIA 显卡,显卡驱动版本 527.41 或更新(支持 CUDA 12)。没有显卡或驱动太旧时自动改用 CPU(慢,但能跑),日志里会记一条"有无 AI:CUDA 不可用,回落 CPU"。
- CPU 版在任何电脑上都用 CPU 算;有无框很多(几百个)时每件要多花几秒。
- 系统设置 → 通用设置 → "有无 AI 设备":"自动(有 NVIDIA 显卡就用)"或"仅 CPU",重启软件后生效。
- 想确认这台电脑实际用的是哪个、有多快:在安装目录运行
LabelDetect.exe --okng-check(不开窗口、不需要工程),结果写在log\okng_check.txt。 - 运行时每个有无 AI 框的分数记在
log\okng_scores.csv(导出诊断包会带上当前文件和最近一份滚动备份),用于测试后复盘。软件运行时别用 Excel 直接打开这个文件,复制一份再打开,否则日志滚动会失败。
相关页面¶
逻辑检测:把多个检测项的结果组合判断¶
有些判定单看一个框看不出来:两个日期之间差了几天、两个定位点之间隔了多远、批号和型号是不是对得上。逻辑检测专门干这个 —— 它自己不画框、不看图,只把别的检测项已经跑出来的结果拿过来做二次判断。
它提供三种比较,可以单用也可以一起用:
三种里勾了几种,每一种都得通过,整项才 PASS。
前置条件¶
- 要比较的检测项已经建好、能正常出结果。日期比较需要两个可变区域,距离比较需要两个固定区域。
- 用变量比较前,先给要参与运算的检测项设好自定义变量(在树里右键该检测项 →"设为自定义变量")。
- 分工:方案内的逻辑检测只管本方案;要跨相机工位、跨检测方案比结果(比如正面和背面的型号对不对得上),一律用整件逻辑检测。
它包含哪些检测框¶
只有一个:"调整参数"。逻辑检测在树里没有 ROI 子项,因为它不占图上的任何位置。
新建与画框¶
逻辑检测没有框,所以只能从菜单建,不能在图上拖:
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"逻辑检测",确定。
- 在树里双击"调整参数",打开设置窗口。
- 勾上要用的比较方式,选好数据来源。
- 点"训练工程",再点"整体运行"验证。

参数说明¶
"日期比较"¶
把两个可变区域认出来的文字都当日期解析,比它们相差几天。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 分组标题上的勾选框 | 勾上才启用日期比较 | 不用就别勾,省得空绑定报错 |
| "可变区域(源1)" | 第一个日期来自哪个可变区域 | 下拉框里列出本检测方案下所有可变区域;不想绑就选"未绑定" |
| "可变区域(源2)" | 第二个日期来自哪个可变区域 | 同上 |
| 两个"识别结果"框 | 各在对应下拉框的下一行,显示这两个源当前认出来的内容,没跑过时显示"无结果" | 只读。用来确认绑对了没有 |
| "校验规则" | 允许相差几"天" | 填 0 表示两个日期必须是同一天;填 30 表示相差不超过 30 天 |
窗口里那行提示 "注: 日期源检测项结果之间比较, 不与本机系统时间比较" 是重点:它比的是标签上这两个日期彼此的关系,和电脑的系统时间无关。
"距离比较"¶
拿两个固定区域的定位结果(中心点坐标和角度)算距离。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 分组标题上的勾选框 | 勾上才启用距离比较 | |
| "固定区域(源1)" / "固定区域(源2)" | 两个定位来源 | 下拉框列出本检测方案下所有固定区域,可选"未绑定" |
| 两个"定位结果"框 | 各在对应下拉框的下一行,显示各自的定位结果,形如 X: 120.5, Y: 300.2, Ang: 0.3 |
只读。显示空白说明这个固定区域这次没定位成功 |
| "对比类型" | "X"只比横向距离,"Y"只比纵向距离,"XY"比直线距离,"角度"比两者的角度差 | 只关心左右间距选"X",只关心上下选"Y",要真实间距选"XY" |
| "范围"一行里的两个数字框(下限 < 实测值 < 上限) | 结果必须严格落在两者之间才 PASS | 先跑几件看中间那个只读框里的实测值,再按实测值上下留余量。下限必须小于上限,否则关窗时会提示"请确认距离比较的最大值大于最小值" |
| "范围"一行中间的只读框 | 本次算出来的距离 | 只读,没跑过时显示"空" |
跑过一次之后,"输入图片"这张结果图上会画出两个固定区域的定位框和中心坐标,可以直接看两个点取得对不对。
"变量比较"¶
给会写一点表达式的调试人员用,能做前两种做不到的判断。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| 分组标题上的勾选框 | 勾上才启用变量比较 | |
| "变量预处理指令" | 多行,先执行一遍,用来从原始变量里算出中间量 | 例如从一串字符里截出型号段,赋给一个新名字 |
| "变量处理结果" | 只读,显示预处理之后所有变量的值 | 调试时照着它确认变量名和取值对不对 |
| "结果判定指令" | 一行表达式,结果为真判 PASS,为假判 NG | 不能留空,留空会报"结果判定指令不能为空" |
可以用的变量,就是在树里右键设过"设为自定义变量"的那些检测项的输出值。变量名在设定时自己取,可以从调试端菜单"查看自定义变量"里看当前有哪些、各自指向哪个检测项、当前值是多少。能设自定义变量的检测项有:字符识别、码检测、条码字符对、可变区域、卡尺工具。
只能用本方案的变量,且被引用的检测项要启用、排在逻辑检测前面
方案内的逻辑检测只管本方案:指令里用到的自定义变量必须是本方案(同一个检测方案)里的检测项,串口变量、SN 这类运行期变量不限。用了别的工作站或别的方案的变量,调试端一运行就报"方案内逻辑检测只能用本方案的变量",运行页点"运行"时开跑前就拦下,不会起跑;这种判断请删掉这条,改用整件逻辑检测。被禁用的检测项会直接报"已被禁用, 永远不会产出结果";排在逻辑检测之后的会报"在本次运行里没有产出结果"。指令里没用到的自定义变量不影响逻辑检测。
训练与调试¶
- 先确认被引用的检测项自己能跑通:单独右键"运行此检测项",确认有结果。
- 回到逻辑检测的"调整参数",绑定数据来源,窗口里的只读框会显示这些源当前的结果 —— 对不上就是绑错了。
- 点"整体运行"跑整套,看逻辑检测这一项的判定。
- 距离比较要先看实测值再定上下限,不要凭空填。
- 点"保存工程"。
删掉被引用的检测项会自动解绑
如果把一个被逻辑检测绑着的可变区域或固定区域删掉,逻辑检测这一侧的绑定会自动变成"未绑定",不会留下悬空引用。但判定也就失效了,记得重新绑一个。
常见误判与处理¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 提示"未选择参与日期逻辑组合的检测项!" | 日期比较勾上了,但两个源里有"未绑定" | 两个源都选上,或取消勾选日期比较 |
| 提示"未选择参与距离逻辑组合的检测项!" | 距离比较勾上了,但两个源里有"未绑定" | 同上 |
| 提示"日期格式不正确, 请核对!" | 可变区域认出来的内容不是能识别的日期 | 先到那个可变区域里看识别结果,把字认准;或用裁切只取日期那一段 |
| 提示"OCR结果数量不足, 请检查可变区域是否可用" | 绑定的可变区域被禁用或没跑出结果 | 启用它,确认它自己能出结果 |
| 日期比较一直 NG,但两个日期看着没问题 | "校验规则"填小了 | 按实际工艺要求放宽天数 |
| 距离比较一直 NG,中间只读框显示"空" | 有一个固定区域这次没定位成功 | 去那个固定区域调定位参数 |
| 距离结果正好等于上限或下限时判 NG | 判据是严格小于,不含端点 | 上下限各留一点余量 |
| 提示"结果判定指令出错" | 表达式写错,或引用了不存在的变量名 | 对照"变量处理结果"里的变量名逐个核对 |
| 提示"比对变量 … 在本次运行里没有产出结果" | 指令用到的检测项排在逻辑检测之后、属于别的模板图,或没跑 | 调整运行顺序,让逻辑检测排在最后;确认引用项已启用 |
| 提示"方案内逻辑检测只能用本方案的变量"(调试端运行时,或运行页点"运行"时) | 指令用到了别的工作站或别的方案的变量 | 删掉这条逻辑检测或改掉指令;跨方案的判断改用整件逻辑检测 |
| 关窗时提示"请确认距离比较的最大值大于最小值" | 上下限填反了 | 把上限改成大于下限的值 |
相关页面¶
整件逻辑检测:所有相机工位都跑完后再做一次判断¶
一件产品往往要好几个相机工位、好几个检测方案才拍完:正面一个方案、背面一个方案,或者上料位和下料位各一台相机。有些判断要把不同工位的结果放在一起才做得了 —— 正面认出来的型号和背面的是不是同一个、两个工位读到的 SN 是不是一致。
整件逻辑检测就是干这个的:一件产品所有相机工位、所有检测方案都跑完以后,拿全部自定义变量做一次"变量预处理 + 结果判定",判定结果固定计入总结果 —— 它判不通过,这件产品就是不通过,没有开关可以关掉"计入"。
和方案内逻辑检测怎么分工¶
| 逻辑检测(方案内) | 整件逻辑检测 | |
|---|---|---|
| 放在哪 | 某个检测方案里的一个检测项 | 工程级,调试端任务树最底部(排在所有相机工位之后) |
| 能用哪些变量 | 只能用本方案的自定义变量(串口变量、SN 不限) | 工程里全部自定义变量,哪个工位、哪个方案都行 |
| 什么时候跑 | 跟着本方案,按运行顺序 | 所有方案都跑完以后,每件只跑一次 |
| 能做什么比较 | 日期比较、距离比较、变量比较 | 只有变量比较(启用 / 预处理指令 / 判定指令) |
| 结果去哪 | 本方案的判定 | 一票否决总结果 |
规矩很简单:只看本方案的,用方案内逻辑检测;要跨相机工位或跨方案比的,一律用整件逻辑检测。 方案内逻辑检测一旦用了别的方案的变量,运行时会直接报错,不会再等。
前置条件¶
- 要参与判断的检测项已经建好、能正常出结果。
- 先给它们设好自定义变量:在调试端树里右键该检测项 →"设为自定义变量",起一个名字。能设自定义变量的检测项有:字符识别、码检测、条码字符对、可变区域、卡尺工具、圆孔测量。串口收发数据产生的变量、SN 也能直接用。
新建与设置¶
- 用超级管理员登录,进调试端。
- 左侧"标签相机工位集合"的树里,在空白处(或某个相机工位上)右键 →"新建整件逻辑",新的一条追加在树的最底部、所有相机工位之后,按
整件逻辑_1、整件逻辑_2的顺序起名。 - 双击这一条(或右键 →"设置整件逻辑"),打开设置窗口,填好三个参数,点"确定"。
- 点"保存工程"。整件逻辑存在工程文件里,老工程打开时就是一条都没有,不会提示什么。
右键这一条还有"重命名整件逻辑"(名字在工程里不能重复)、"启用整件逻辑"/"禁用整件逻辑"、"删除整件逻辑"(会二次确认)。禁用的会和禁用的相机工位一样置灰。条目背景按上一次结果:红 = 不通过,其余白;鼠标停上去会显示没跑的原因或指令错误。

参数说明¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "启用" | 勾上才参与判断;不勾 = 不跑、不否决 | 临时不用就去掉勾,不必删 |
| "变量预处理指令" | 多行,先执行一遍,用来从原始变量里算出中间量 | 例如 front = str(正面型号).strip(),把正面认出来的型号去掉空格后存成 front |
| "结果判定指令" | 一行表达式,结果为真判通过,为假判不通过 | 不能留空,留空开跑前就会拦下 |
| 变量表(变量 / 来源 / 当前值) | 只读,列出工程里全部自定义变量:来源写成 相机工位->检测方案->检测项,串口变量、SN 写"运行期变量(串口/SN)" |
点"刷新"重新取当前值。来源显示"(已失效)"说明那个检测项已经删了 |
| "变量处理结果" | 只读,上一次跑完后预处理之后所有变量的值 | 调试时照着它确认变量名和取值对不对 |
| "结果" | 上一次的判定:通过 / 不通过 / 未运行,下面跟着原因或错误文案 |
写法和逻辑检测"变量比较"一样:变量名就是设自定义变量时起的名字,能用加减比较、字符串截取、len() 这类常用写法。名字不在自定义变量里的(预处理里自己赋的中间量、内建函数)不会被当成问题。
设置窗口里没有"运行"按钮 —— 整件逻辑只在下面两种情况下跑。
在调试端怎么跑¶
整件逻辑只在调试模式点工具栏"整体运行"时跑:
- "整体运行"在调试模式下就是运行整件:启用的相机工位、启用的检测方案,按任务树的顺序,装了调试图的都跑一遍,全部跑完再跑整件逻辑。
- 有方案没装调试图时,装了图的照跑,整件逻辑不跑,条目上提示"工作站 X 方案 Y 没装调试图, 整件逻辑未运行";跑完后运行时间旁边也会用橙色点名"未运行(没装调试图):工作站 X 方案 Y 没装调试图"(工程里没有整件逻辑时也会提示)。要跑整件逻辑,先给每个启用的方案都装好调试图(点"单次触发"拍一张,或点"打开调试图"选一张)。
- 一个装了图的方案都没有时,和以前一样报"调试模式输入图片为空!"。
- 某个方案跑出错时,后面的方案和整件逻辑都不跑,报那个方案的错;整件逻辑条目清掉上一次的结果,提示"方案 Y 出错, 整件逻辑未运行"。
- 跑完后树里的整件逻辑条目不通过变红,鼠标停上去能看到没跑的原因或指令错误;双击打开设置窗口能看到"变量处理结果"和判定。
只想调一个方案时,在任务树上右键该方案 →"只运行此方案":不是当前方案会先切过去、切换完成后再跑;只跑这一个方案,不跑整件逻辑。"单模板运行"同样不跑整件逻辑。编辑模式下"整体运行"的行为没有变。
运行页的行为¶
- 开始运行前会校验整件逻辑的配置,有问题不起跑,报"整件逻辑检测配置有误, 请先修正: …",问题见下面的提示表。
- 每件产品等所有检测方案都跑完以后跑一次整件逻辑。标了"最终输出"的通讯输出、汇总结果、存图、人工复判、写 MES、结束这些指令都会先等它跑完,所以 PLC 拿到的总结果、存图的 OK/NG 目录、MES 上传的结果、运行页的结果标签,都已经算上了整件逻辑。
- 整件逻辑是一票否决:任一条启用的整件逻辑判不通过,总结果就是不通过;和系统设置里总结果按"与"还是"或"汇总无关。它判通过时总结果不变。
- 不通过时,"不良信息汇总"和 MES 的缺陷描述里会多一段
整件逻辑->名字:加原因(没有原因写"判定为假");汇总结果串在各方案结果之后多一段整件逻辑->名字:通过;/不通过;/未知;(人工复判、写 MES 那两行还是在最后)。 - 中途输出看不到整件逻辑:没勾"最终输出"的通讯输出不等所有方案跑完,整件逻辑这时还没跑。
- 通讯输出里可以引用整件逻辑的结果:变量下拉里会列出
整件逻辑->名字(只列启用的),选上后存成&整件逻辑->名字,值是通过 / 不通过。只能用在"最终输出"或它之后的输出里;用在中途输出会报变量找不到并停机。 - 指令运行时出错(比如预处理里除以零、判定里写错了变量名),这件产品判不通过,运行页按异常停机并报出指令错误。
命令行 run_cli info 会列出整件逻辑(piece_logic)和配置问题(piece_logic_problems,与开跑前校验同一份)。run_cli detect 是一张图跑一个方案,不跑整件逻辑;run_cli run(无头运行)和运行页一样会跑。
常见提示与处理¶
| 提示 | 原因 | 处理 |
|---|---|---|
| "整件逻辑 X 的结果判定指令为空"(开跑前) | 判定指令没填 | 填上判定指令,或禁用这一条 |
| "整件逻辑 X 的指令有语法错误"(开跑前) | 预处理或判定指令写得不合语法 | 对照"变量处理结果"改指令 |
| "整件逻辑 X 用的变量 V 不存在(检测项可能已删除或被禁用过,请重新设为自定义变量)"(开跑前) | 指令用到的变量不在变量表里。在调试端禁用或删除检测项 / 方案 / 相机工位时,软件会把它们的自定义变量一并去掉,重新启用后也不会自动回来 | 启用检测项后重新右键"设为自定义变量"(名字照旧),或改掉指令。预处理里自己赋值的中间量、内建函数(如 len)、SN 和串口收发变量不算 |
| "整件逻辑 X 用的变量 V 所在的 工位->方案->检测项 已禁用"(开跑前) | (变量仍在变量表里时)指令用到的检测项、它的方案或相机工位被禁用了,永远不会有结果 | 启用它,或改掉指令 |
| "整件逻辑 X 用的变量 V 已失效(检测项已删)"(开跑前) | (变量仍在变量表里时)变量指向的检测项已经删了 | 重新给新的检测项设自定义变量,或改掉指令 |
| "通讯输出 O 引用了不存在或已禁用的整件逻辑 X"(开跑前) | 通讯输出里的 &整件逻辑->X 指向的整件逻辑被禁用或删掉了(重命名会自动同步,不会出这条) |
启用它,或去通讯输出里改掉引用 |
| "变量预处理指令错误:…"(运行中停机) | 预处理指令执行出错 | 看错误文案,改预处理指令 |
| "结果判定指令出错:…"(运行中停机) | 判定表达式执行出错,常见是变量名写错 | 对照变量表里的变量名逐个核对 |
| "获取变量值错误:…"(运行中停机) | 某个变量取值时出错 | 检查对应检测项 |
| 条目提示"… 没装调试图, 整件逻辑未运行",运行时间旁橙色"未运行(没装调试图):…"(调试端) | "整体运行"时有方案没装调试图 | 给每个启用的方案都装好调试图再点"整体运行" |
| 条目提示"方案 Y 出错, 整件逻辑未运行"(调试端) | "整体运行"时那个方案跑出错 | 先按弹出的报错修好那个方案 |
通讯输出报变量 整件逻辑->名字 找不到 |
引用它的输出没勾"最终输出"(被禁用的情况开跑前就会拦下) | 改到最终输出里引用 |
相关页面¶
卡尺工具:测量边缘距离与尺寸¶
在图上画一个方向明确的矩形,软件沿着它扫过去,找出两条边缘,量它们之间的距离,再和你给的参考值比。间隙宽度、贴合错位量、零件宽度、标签到边沿的距离,都可以这样量。
它和别的检测项还有一点不同:导入标定文件之后,它能把像素换算成毫米,并且这个毫米值可以设成自定义变量发给 PLC。需要把"实测尺寸"回传给上位机时,用它。
前置条件¶
- 检测方案里已经建好标签外框,模板图已完成旋转拉伸。
- 要量的两条边缘在图上看得出明暗变化。边缘糊成一片、人眼都分不清的地方量不了。
- 想要毫米值,需要先做过标定,得到一个记录像素当量的 JSON 文件。
它包含哪些检测框¶
只有一个:"检测参数"。双击它打开的窗口有五个页签:
| 页签 | 管什么 |
|---|---|
| "设置" | 边缘极性、对比度门槛、参考距离与阈值、标定与补偿。日常调参都在这一页 |
| "区域" | 卡尺矩形的形状与坐标,可以用数字精确摆位 |
| "计分" | 边缘评分曲线与表格,用来看软件为什么挑中了这两条边 |
| "图形" | 一排显示开关,控制结果图上画什么 |
| "结果" | 找到的边缘明细表,底部还有"当前距离(px): " |

新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"卡尺工具",确定。
- 在模板图上拖出卡尺矩形。方向很重要:矩形的长边方向就是扫描方向,要让它垂直穿过你要量的那两条边缘,而不是和边缘平行。
- 矩形宽度(垂直于扫描方向那一边)决定取多宽的一条带来平均。边缘干净就窄一点,有噪声就宽一点,让结果更稳。
- 点"训练工程"。
- 双击"检测参数",点窗口左上角的运行按钮跑一次,看"结果"页里找到了几条边。
必须正好找到两条边
卡尺固定取两条边缘算距离。找到的边不是两条(0 条、1 条、3 条以上)时直接判 NG。所以矩形要尽量只罩住这两条边,别把第三条边也框进去。
参数说明¶
"设置"页 —— 边缘怎么找¶
这一页有几个标签目前还是英文,含义如下。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "双边缘模式" | 整组设置的标题 | |
| "边缘1" / "边缘2" | 分别设定第一条、第二条边缘的极性(明暗过渡方向),下拉三选一(由亮到暗 / 由暗到亮 / 全部) | 沿扫描方向看:从暗变亮选"由暗到亮",从亮变暗选"由亮到暗",不确定就选"全部" |
| "由暗到亮"(Dark to Light) | 暗 → 亮的过渡 | |
| "由亮到暗"(Light to Dark) | 亮 → 暗的过渡 | |
| "全部"(All) | 两种都接受 | 默认值。先用它跑通,再按实际情况收紧,收紧了更不容易挑错边 |
| "对比度阈值"(Contrast Threshold) | 边缘对比度门槛,低于它的过渡不算边缘 | 挑到杂边就往上调;边缘太浅找不到就往下调。配合"计分"页的曲线看最直观 |
| "滤波半宽(像素)"(Filter Half Pixel) | 平滑窗口的半宽,值越大越平滑 | 图像有噪点、边缘毛糙时往上调;调太大会把真实边缘抹平,位置也会变钝 |
| "最大结果数"(Maximum Number of Results) | 最多返回几条边缘 | 这一项固定为 2,不可修改,只读显示 2 |
"设置"页 —— 距离怎么判¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "参考距离(px)" | 标准品上这两条边应该相距多少像素 | 别凭空填。先跑几件良品,看"结果"页底部的"当前距离(px): ",取中间值填进来 |
| "距离阈值(px)" | 允许偏离参考距离多少像素 | 实测距离与参考距离之差在这个范围内判 PASS,超出判 NG。先按良品的波动范围给,再收紧 |
| "参考距离(mm)" | 参考距离换算成毫米 | 只读。没导入标定文件时是空白 |
| "距离阈值(mm)" | 距离阈值换算成毫米 | 只读,同上 |
| "结果补偿(mm)" | 给毫米结果加一个固定偏移 | 用卡尺量出来的值和卡尺实物 / 三坐标量出来的值有系统性差值时,把差值填这里补平 |
| "标定后结果(mm)" | 本次的毫米结果,已经含补偿 | 只读。没跑过时显示"null" |
| "导入标定文件" | 选一个 JSON 标定文件 | 文件里必须有像素当量字段,导入成功会提示换算系数是多少 mm/px |
毫米值怎么算出来的
毫米结果 = 实测像素距离 × 标定系数 + "结果补偿(mm)"。没导入过标定文件时,对外输出的毫米值一律是 0;判 NG 时输出也是 0。所以要把尺寸发给 PLC,必须先导入标定文件、把这一项判到 PASS。
"区域"页¶
形状下拉框只有两个选项:用整幅输入图,或者用一个可旋转矩形。卡尺默认用可旋转矩形,并且在图上拖框就是改它。需要精确摆位时,在这里直接填坐标、边长和旋转角。
"计分"页 / "图形"页 / "结果"页¶
| 页签 | 里面有什么 | 怎么用 |
|---|---|---|
| "计分" | 边缘强度沿扫描方向的曲线,和对应的数值表 | 调"对比度阈值"时看它:曲线上有几个明显的峰,门槛应该卡在真实边缘的峰和杂峰之间 |
| "图形" | 一排显示开关,控制结果图上画不画找到的边、区域、投影曲线、滤波曲线等 | 调试时全打开,看清楚软件到底挑中了哪两条边 |
| "结果" | 找到的每条边的位置、分数等明细,底部是"当前距离(px): " | 定"参考距离(px)"就看这里的当前距离 |
训练与调试¶
- 画好卡尺矩形,让长边垂直穿过两条目标边缘 → 点"训练工程"。
- 双击"检测参数",点运行按钮,到"结果"页确认正好找到两条边,并记下"当前距离(px): "。
- 换几件良品(用"打开调试文件夹"过一批实拍图),记下每件的当前距离,看波动有多大。
- 把中间值填进"参考距离(px)",把波动范围略放宽后填进"距离阈值(px)"。
- 要输出毫米值:点"导入标定文件"选好 JSON,确认"参考距离(mm)"和"标定后结果(mm)"有数了;必要时用"结果补偿(mm)"和实物量具对齐。
- 要把数值发给上位机:在树里右键这个卡尺检测项 →"设为自定义变量",给它取个变量名,再到通讯配置里把这个变量挂出去。
- 点"保存工程"。
常见误判与处理¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 一直判 NG,"结果"页里边缘数不是 2 | 卡尺罩住的边多于或少于两条 | 缩短 / 移动卡尺矩形,只罩住目标那两条边 |
| 找不到边缘 | "对比度阈值"太高,或边缘本身太浅 | 先降门槛;降到很低还找不到,就是取像问题——加对比度、换打光角度 |
| 挑中了旁边的杂边 | 门槛太低,或极性设成了"全部" | 提高"对比度阈值";把"边缘1""边缘2"按实际明暗方向分别设死 |
| 距离值每件跳动很大 | 卡尺矩形太窄,单行噪声直接影响结果;或边缘毛糙 | 把矩形加宽一点;适当加大"滤波半宽(像素)" |
| 距离整体偏了一个固定量 | 卡尺量的是边缘中心位置,和实物量具的基准不一致 | 用"结果补偿(mm)"补平 |
| "标定后结果(mm)"一直是"null" | 这一项还没跑过 | 点运行按钮跑一次 |
| 毫米值一直是 0 | 没导入标定文件,或这一次判了 NG | 导入标定文件;先把判定调到 PASS |
| 提示输入图片不是灰度图 | 卡尺只吃灰度图 | 检查检测方案的取像设置 |
| 卡尺框跟着产品跑偏 | 标签外框定位没跟上 | 回标签外框调定位 |
相关页面¶
圆孔测量:测量圆孔直径¶
在孔边上布一圈径向卡尺找边缘点,用这些点拟合出一个圆,量出孔的直径,再和你给的参考直径比。通孔、沉孔、倒角孔、安装孔的孔径检测,都可以用它。
直径像素值每次都会给出;导入标定文件之后,还能换算成毫米,并且这个毫米值可以设成自定义变量发给 PLC,口径和卡尺工具一样。
前置条件¶
- 检测方案里已经建好标签外框,模板图已完成旋转拉伸。检测框会跟着定位一起走。
- 孔边在图上看得出明暗变化。孔边糊成一片、人眼都看不出圆的地方量不了。
- 想要毫米值,需要先做过标定,得到一个记录像素当量的 JSON 文件(和卡尺工具用的是同一种文件)。
它包含哪些检测框¶
只有一个:"检测参数"。双击它打开的窗口有四个页签:
| 页签 | 管什么 |
|---|---|
| "设置" | 卡尺数量与宽度、边缘极性与选边规则、参考直径与允许误差、标定与补偿。日常调参都在这一页 |
| "区域" | 搜索圆环的圆心、外径、内外比和角度范围;也可以直接在图上拖圆环 |
| "图形" | 五个显示开关,控制结果图上画什么 |
| "结果" | 直径、圆心、残差汇总,以及每把卡尺的明细表 |
新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"圆孔测量",确定。
- 在模板图上拖出矩形检测框,把整个孔套进去,四周留一点边。这个框只决定"在哪块图上找孔",它会跟着标签外框的定位一起移动。
- 点"训练工程"。
- 双击"检测参数",切到"区域"页,在图上拖圆环:
- 外圆放在孔边外侧,内圆放在孔边内侧,内外圆之间那一圈就是搜索带,孔边必须落在带里。
- 圆心大致对准孔心即可,不必很准——默认开着"两次测量",第一次量出的圆心会自动用来再量一次,初始偏差会被纠正过来。
- 需要精确摆位时,可以在"区域"页里直接填圆心、"外环半径"(Outer Radius)、"径向比例"(Radial Scale,内圆半径 ÷ 外圆半径)、"起始角度"(Start Angle)和"角度范围"(Angle Range)。孔只露出一部分时,把角度范围缩到露出的那段弧上。
- 点窗口左上角的运行按钮跑一次,看"结果"页里找到了多少个点、直径是多少。
第一次打开时的圆环
第一次拿到输入图时,圆环会自动铺在检测框中央、整圈 360°、内外比 0.6。孔在框中央且大小合适时,常常不用拖就能直接量。
参数说明¶
"设置"页 —— 圆孔与卡尺¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "卡尺数量" | 沿圆环均匀布多少把径向卡尺,每把卡尺找一个边缘点 | 默认 36。孔大、边缘干净时够用;孔边有缺口、毛刺时加多一些,让剔点后仍有足够的点 |
| "卡尺宽度(px)" | 每把卡尺沿圆周方向取多宽来平均 | 默认 5。噪声大就加宽,孔很小就减窄 |
"设置"页 —— 边缘¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "极性" | 沿半径从孔心向外看边缘的明暗过渡方向,下拉三选一(由明到暗 / 由暗到明 / 任意) | 背光通孔(孔亮、件暗)选"由明到暗";正面光下的暗孔选"由暗到明";不确定先用"任意"跑通再收紧 |
| "对比度阈值" | 边缘对比度门槛,低于它的明暗过渡不算边缘 | 找到的点太少就往下调;挑到杂边就往上调 |
| "滤波半宽(px)" | 平滑窗口的半宽,值越大越平滑 | 孔边毛糙、有噪点时往上调;调太大会把边缘抹钝 |
| "边缘选择" | 一把卡尺里有多条边时挑哪一条:"最接近期望半径" / "对比度最强" / "由内向外第一条" / "由内向外最后一条" | 默认"最接近期望半径"(期望半径 = 内外圆的中间)。倒角、沉孔会出现两圈边缘,用它配合把圆环中线摆在要量的那圈边上 |
| "两次测量" | 用第一次拟合出的圆心和半径,缩窄搜索带再量一次 | 默认打开。圆环摆得不够准时靠它纠偏;一般不要关 |
| "剔除点数上限" | 拟合时最多丢掉多少个偏离最远的点 | 默认 4。孔边有缺口、异物、毛刺时适当加大 |
| "最低有效点比例(%)" | 找到边的卡尺、以及最终参与拟合的点,各自至少要占卡尺总数的多少 | 默认 60。低于它直接判 NG,防止只凭几个点拟合出一个假圆 |
"设置"页 —— 判定¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "参考直径(px)" | 标准品上这个孔的直径应该是多少像素 | 别凭空填。先跑几件良品,看"结果"页的"直径(px)",取中间值填进来 |
| "允许误差(±px)" | 实测直径允许偏离参考直径多少像素 | 差值在范围内判 PASS,超出判 NG。先按良品的波动给,再收紧 |
| "最大 RMS 残差(px,0=不判)" | 拟合残差的均方根上限,超过判 NG | 默认 0 不判。孔变形、椭圆、缺口也要判出来时再设 |
"设置"页 —— 标定¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "像素当量" | 当前的换算系数(mm/px) | 只读。没导入过标定文件时显示"未导入" |
| "导入标定文件…" | 选一个 JSON 标定文件 | 文件里必须有像素当量字段,导入成功会提示换算系数是多少 mm/px |
| "偏差补偿(mm)" | 给毫米结果加一个固定偏移 | 用环规或针规量一次已知直径,把软件结果和量具的差值填这里补平 |
| "参考直径(mm)" | 参考直径换算成毫米 | 只读。没导入标定文件时是空白 |
| "本次结果(mm)" | 本次的毫米直径,已经含补偿 | 只读。没跑过时显示"null";判 NG 或未标定时是 0 |
"图形"页 / "结果"页¶
| 页签 | 里面有什么 | 怎么用 |
|---|---|---|
| "图形" | "显示拟合圆""显示拟合用点""显示剔除点""显示卡尺框""显示圆环区域"五个开关 | 调试时全打开:黄色点是参与拟合的点,红色点是被剔掉的点;卡尺框青色 = 点被采用,红色 = 找到边但被剔掉,黄色 = 没找到边 |
| "结果" | 上方是直径(px)、直径(mm)、圆心、RMS / 最大残差、有效点 / 卡尺数;下方是每把卡尺的角度、找到没有、用没用、残差、对比度 | 定"参考直径(px)"就看这里的直径;某个方向总找不到边,就去表里看是哪几把卡尺 |
结果与判定¶
按下面的顺序判,命中一条就停:
- 找到边的卡尺太少,或剔点后参与拟合的点太少(都按"最低有效点比例(%)"算)→ NG。
- 设了"最大 RMS 残差",而本次残差超过它 → NG。
- 实测直径与"参考直径(px)"之差不超过"允许误差(±px)" → PASS,否则 NG。
毫米换算¶
毫米直径 = 实测直径(px)× 像素当量 + "偏差补偿(mm)"。
- 没导入过标定文件时,对外输出的毫米值一律是 0;判 NG 时输出也是 0。要把直径发给 PLC,必须先导入标定文件、把这一项判到 PASS。
- 发给上位机:在树里右键这个圆孔测量检测项 →"设为自定义变量",给它取个变量名,再到通讯配置里把这个变量挂出去。
训练与调试¶
- 画好矩形检测框、点"训练工程",再在"区域"页拖好圆环。
- 点运行按钮,到"结果"页确认找到的点足够多、直径合理;"图形"页打开全部开关,看拟合圆是否压在孔边上。
- 换几件良品(用"打开调试文件夹"过一批实拍图),记下每件的直径,看波动有多大。
- 把中间值填进"参考直径(px)",把波动范围略放宽后填进"允许误差(±px)"。
- 要输出毫米值:导入标定文件,用环规 / 针规量一个已知直径,把差值填进"偏差补偿(mm)"。
- 点"保存工程"。
常见问题¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 倒角孔、沉孔量出来的直径忽大忽小,或整体偏大一圈 | 孔边有两圈边缘(倒角外缘和孔壁内缘),卡尺在两圈之间乱挑 | "边缘选择"用"最接近期望半径",并把圆环的中线摆在要量的那一圈边上;不要用"对比度最强" |
| 正面打光时量出的孔偏小,或者边缘点分成两圈 | 正面光会照到孔壁,孔壁本身也成了一圈边缘 | 通孔优先用背光,孔边最干净;只能正面光时按上一条选边 |
| 找不到圆,直接判 NG | 孔边不在圆环带里,或"对比度阈值"太高 | 在"区域"页把圆环拖到外圆在孔外、内圆在孔内;再降门槛 |
| 某一段弧上总找不到点 | 那一段被遮挡、有缺口或反光 | 缩小"角度范围"避开那一段,或加大"剔除点数上限" |
| 直径每件跳动很大 | 卡尺太窄,噪声直接影响结果;或孔边毛糙 | 加宽"卡尺宽度(px)";适当加大"滤波半宽(px)";加多"卡尺数量" |
| 毫米值一直是 0 | 没导入标定文件,或这一次判了 NG | 先导入卡尺同款的标定 JSON;再把判定调到 PASS |
| 毫米值整体偏了一个固定量 | 找到的是图像上的明暗边缘,和量具的基准不完全一致 | 用环规 / 针规量一次已知直径,把差值填进"偏差补偿(mm)" |
| 提示输入图片不是灰度图 | 圆孔测量只吃灰度图 | 检查检测方案的取像设置 |
| 检测框跟着产品跑偏 | 标签外框定位没跟上 | 回标签外框调定位 |
相关页面¶
颜色抽取:按颜色占比判断¶
框住一块区域,告诉软件"我要哪几种颜色",它把这些颜色的像素挑出来,再看挑中的部分占这个框多大比例(或者多大面积),落在你给的范围里就 PASS。
适合按颜色下判断的活:色块贴没贴、色标对不对、彩色导线有没有接错位、变色指示片有没有变色、彩色印刷区域缺没缺一块。它只看颜色,不看形状、不认字;要判断形状和内容,用固定区域。
前置条件¶
- 检测方案里已经建好标签外框,模板图已完成旋转拉伸。
- 相机取的是彩色图。灰度图上没有颜色可挑。
- 光源稳定。颜色对光照变化非常敏感,灯衰减或换灯之后必须重新确认。
它包含哪些检测框¶
只有一个:"颜色抽取参数"。双击它打开参数窗口,页签"设置"里是全部内容。

新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"颜色抽取",确定。
- 在模板图上框住要判断颜色的区域。框多大直接影响占比 —— 占比 = 挑中的像素数 ÷ 框内总像素数,所以框大一圈,同一个色块的占比就小一截。框定了之后就别再随便改大小,否则阈值要重定。
- 点"训练工程"。
- 双击"颜色抽取参数",点窗口左上角的运行按钮跑一次,再开始调颜色。
参数说明¶
取色算子:"保留"和"去除"¶
颜色不是一条范围就能说清的,所以软件用"取色算子"来拼:
- "保留:" 列表里的算子,各自挑出一段颜色,结果相加。要挑红色和蓝色两种,就建两个保留算子。
- "去除:" 列表里的算子,从上面的结果里减掉。挑红色时顺带挑到了旁边的橙色底,就建一个去除算子把橙色减掉。
| 控件 | 作用 | 说明 |
|---|---|---|
| "保留:"下的"新增" / "删除" | 增删保留算子 | 列表里的数字就是算子编号,点一下选中它,右边的色轮和亮度条就是在改这一个 |
| "去除:"下的"新增" / "删除" | 增删去除算子 | 不需要就一个都不建 |
至少要留一个
保留和去除加起来至少得有一个算子。删到只剩最后一个时会提示"最低需要一个取色算子, 不可以继续删除"。删除前要先在列表里选中一条,否则会提示"先选中保留列表的取色算子再点击删除"。
选中算子后:颜色与亮度¶
| 区域 | 参数 | 含义 | 调参建议 |
|---|---|---|---|
| "颜色参数" | 色轮 | 圆周方向是色相,半径方向是饱和度。拖动扇形的两条边改色相范围,拖内外圈改饱和度范围 | 在色轮上双击要的那种颜色,软件会自动给一段合适的默认范围,再微调最快 |
| "颜色参数" | "H上限" / "H下限" | 色相范围,0~360 度 | 想精确设值时直接在表格里填。红色跨越 0 度,软件会自动处理绕圈的情况 |
| "颜色参数" | "S上限" / "S下限" | 饱和度范围,0~255 | 鲜艳的颜色饱和度高;白、灰、黑饱和度接近 0。要挑白色或黑色,把饱和度下限压到很低,再靠亮度区分 |
| "颜色参数" | "取反" / "不取反" | 取反后挑的是:亮度在设定范围内,但色相和饱和度落在所选范围之外的像素。亮度范围照常生效,只有色相和饱和度被反过来 | 按下变成"不取反"就表示当前是取反状态。要"除了这个颜色以外的都算"时用它,比如挑出所有不是底色的像素 |
| "亮度参数" | "亮度上限" / "亮度下限" | 亮度范围,0~255 | 同一个色相,亮的和暗的要分开时靠它。白 / 灰 / 黑基本只能靠亮度分 |
调的时候看结果图下拉框里的两张图:
- "抽色二值图":挑中的像素是白的,其余是黑的。判断范围对不对看它最准。
- "抽色结果":挑中的像素在原图上覆一层绿。看位置对不对用它。
目标要被完整涂满、边界干净、周围不带杂点,才算调好。
"范围参数":用什么判¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "使用比例" | 按占比判,和框的大小无关 | 默认,推荐。框稍微改动一点也不至于全盘重调 |
| "使用面积" | 按挑中的像素个数判 | 只有在"这块色块的绝对大小必须达标"时才用 |
| "百分比下限:" / "百分比上限:" | 选"使用比例"时生效,占比落在两者之间判 PASS | 先跑几件良品看"百分比结果:",取实测值上下留余量。判断"有没有"时,下限给得低一点、上限给 100 即可 |
| "面积下限:" / "面积上限:" | 选"使用面积"时生效,挑中的像素数落在两者之间判 PASS | 看"抽色面积:"的实测值定 |
选了哪一种,另一种的输入框会变灰。
"当前结果"¶
| 显示 | 含义 |
|---|---|
| "百分比结果:" | 本次挑中的像素占框内的百分比 |
| "抽色面积:" | 本次挑中的像素个数 |
两个都是只读,跑一次才有值。定阈值之前先跑,照着实测值定,不要凭空填。
训练与调试¶
- 画好框 → 点"训练工程"。
- 双击"颜色抽取参数",点运行按钮跑一次。
- 在色轮上双击目标颜色,拿到一段默认范围;切到"抽色二值图"看效果。
- 目标没被涂满 → 放宽色相 / 饱和度 / 亮度范围;涂到了不该涂的地方 → 收紧范围,或加一个"去除"算子把杂色减掉。
- 颜色不止一种 → 在"保留:"里"新增"第二个算子,重复第 3、4 步。
- 效果满意后,记下"百分比结果:",用"打开调试文件夹"过一批实拍图,把良品和不良品的百分比都记下来。
- 阈值卡在两堆数之间,填进"百分比下限:"和"百分比上限:"。
- 点"保存工程"。
常见误判与处理¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 二值图里目标缺了一块 | 颜色范围太窄,目标上有明暗渐变或反光 | 放宽"亮度上限"/"亮度下限";必要时再加一个保留算子覆盖亮的那部分 |
| 二值图里挑到了一大片背景 | 范围太宽,或背景和目标色相接近 | 收紧饱和度下限(背景多半比目标灰);加一个去除算子减掉背景色 |
| 换了一批料就全 NG | 新批次颜色有正常色差,超出了设定范围 | 拿新批次的图重新确认范围,适当放宽;必要时重定百分比阈值 |
| 换灯 / 灯衰减之后判定全变 | 颜色随照明改变 | 恢复原照明;确实换了光源就重新调一遍颜色范围和阈值 |
| 白色 / 黑色 / 灰色挑不出来 | 这些颜色没有色相,靠色相选不中 | 把饱和度下限压到接近 0,把色相范围放到全圈,主要靠"亮度上限"/"亮度下限"区分 |
| 红色只挑到一半 | 红色在色轮上跨过 0 度 | 直接在色轮上拖出跨 0 度的扇形,或把 "H下限" 设成大值、"H上限" 设成小值,软件会自动按绕圈处理 |
| 换了框的大小后判定全变 | 占比的分母变了 | 框尺寸定稿后再定阈值;确实要改框,改完重新定阈值 |
| "百分比结果:"一直是 0 | 一个像素都没挑中,或还没跑过 | 点运行按钮跑一次;仍是 0 就大幅放宽颜色范围,从"取反"关掉、色相全圈开始试 |
| 提示输入图片为空 | 这个检测项还没随整套跑过 | 先点"整体运行"或"单模板运行"跑一遍 |
相关页面¶
异常检测:只注册良品图找异常¶
前面那些检测项都要你先说清楚"什么算坏":字要和参考比对得上、亮度要落在某个范围、颜色占比要达标。有些地方说不清 —— 表面划伤、印刷糊版、涂层斑驳、异物,形态千奇百怪,列不完。
异常检测换了个思路:只喂良品图,让软件把"正常长什么样"学下来,凡是和正常对不上的地方就标出来。它输出一张热力图和一张缺陷图,并按缺陷面积判 PASS / NG。
这一项不是所有软件包都有
异常检测是可选模块。如果新建检测项时找不到"异常检测",或者提示"当前未开放异常检测功能",说明你这台设备的软件包没开这个模块,请联系供应商。 另外,训练要调用单独的训练程序,这个程序不随安装包发布。软件里点"训练"时提示"训练程序不存在,请联系技术人员",就是它没装,需要时联系我们单独提供。
前置条件¶
- 检测方案里已经建好标签外框,模板图已完成旋转拉伸。
- 至少能拿到 5 张以上这块位置的良品图。少于 5 张点"训练"会提示"注册OK图数量至少5张"。
- 取像必须稳定。异常检测对取像变化比别的检测项更敏感 —— 光一变,整片都会被判成"不正常"。
它包含哪些检测框¶
只有一个:"异常检测参数"。双击它打开参数窗口。

新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"异常检测",确定。
- 在模板图上框住要检查的那块表面。框住的应该是同一种质地、同一种图案的一片,不要横跨好几种材质或把大片空白也圈进去。
- 点"训练工程"。
- 双击"异常检测参数",建类型 → 注册良品图 → 点"训练"。
参数说明¶
类型与训练¶
类型就是一个样本库,一个位置建一个,不要共用。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "类型:" | 当前用哪个样本库 | 必须选一个。没选就跑会提示"请先新建或选择类别" |
| "新建" / "删除" | 建 / 删类型 | 删除会连同注册图和已训练的模型一起删掉 |
| "导入" / "导出" | 把类型打包带走 / 装回来 | 导入后要重新打开这个参数窗口才看得到 |
| "训练图片大小:" | 训练和推理时把图缩放到多大,可选 64 / 128 / 256 / 512 | 细小缺陷要选大的,速度会变慢;大面积缺陷选小的更快 |
| "自动" | 勾上后由软件按注册图的实际尺寸自动挑一个 | 默认勾上,一般不用管。手动改过这一项,训练状态会失效,要重新训练 |
| "训练" | 开始训练 | 注册图有任何增删之后都要重新点一次 |
| "当前状态:" | "已训练"或"未训练" | 显示"未训练"时跑起来一律判 NG,结果里写"未训练" |
改了注册图,旧模型就没了
注册、删除注册图,或改"训练图片大小:",都会把训练状态清掉并删除已经训好的模型。改完必须重新点"训练",否则这一项会一直判 NG。
判定参数¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "阈值:" | 异常分数高过它的像素才算可疑 | 训练完软件会自动给一个初值("训练集阈值:"的两倍)。误报多就往上调,漏检多就往下调,小步调 |
| "忽略缺陷面积:" | 可疑区域小于这个面积就不算缺陷 | 用来滤掉零星噪点。从小往大调,调到正常品不再报点、真缺陷还能报出来为止 |
| "当前图最小值:" / "当前图最大值:" | 本次这张图的异常分数最低 / 最高值 | 只读。定"阈值:"时就看"当前图最大值:":良品的最大值和不良品的最大值之间就是阈值该待的地方 |
| "当前缺陷面积:" | 本次判出来的缺陷面积 | 只读。定"忽略缺陷面积:"时看它 |
| "训练集阈值:" | 训练时算出来的推荐阈值 | 只读,参考用 |
| "训练集最小值:" / "训练集最大值:" | 训练集上的分数范围 | 只读。良品的分数应该落在这个范围附近 |
注册图¶
| 按钮 | 作用 | 说明 |
|---|---|---|
| "OK组图片" / "NG组图片" | 两组注册图的页签 | 训练主要靠 OK 组。NG 组可以不放,放了有助于评估 |
| "注册当前图片为OK" / "注册当前图片为NG" | 把当前框里的图存进对应组 | 每组上限 100 张,超了提示"注册图片数量限制100" |
| "导入图片注册" | 从磁盘选图,在弹出窗口里拖框对准,再点"注册为OK"或"注册为NG",完事点"完成" | 用来把历史存图变成样本 |
| "删除当前注册图" | 删掉选中的那张 | 删完要重新训练 |
OK 组要覆盖良品的正常波动:不同批次、位置略偏、颜色深浅不同的良品都放几张。良品的正常差异没进样本库,上线后就会被当成异常报出来。
"自动注册图片为OK:"¶
勾上以后,运行过程中每来一件新产品,就把这块框里的图自动存进 OK 组。用来快速攒良品样本,省得一张张手工注册。
在树里右键这个检测项,菜单里的"设置自动注册为OK图"是同一个开关。
自动注册期间不要拿判定结果当真
每存进一张新图,已经训好的模型就会失效。所以开着自动注册跑的时候,这一项会一直判 NG。正确用法是:
- 确认这批产品都是良品。
- 打开自动注册,让产线跑上一段,攒够样本(上限 100 张)。
- 关掉自动注册,进参数窗口点"训练"。
- 训练完再定"阈值:"和"忽略缺陷面积:",然后正式生产。
这个开关不随工程保存,重开工程后会自动关闭。
训练与调试¶
- 建类型 → 注册至少 5 张良品图(手工注册或用自动注册攒)。
- 点"训练"。训练要跑一会儿,窗口会显示"训练中...",完成后弹"训练完成!","当前状态:"变成"已训练"。
- 点运行按钮跑一次,看结果图下拉框里的两张图:
- "热力图":越红表示越不像正常。良品上应该基本没有明显的红块。
- "缺陷图":超过阈值且面积够大的区域会被红框圈出来。
- 拿一批良品图过一遍,记下每张的"当前图最大值:";再拿不良品过一遍,同样记下来。阈值卡在两堆数中间。
- 良品上还有零星小红点,就把"忽略缺陷面积:"往上调一点。
- 点"保存工程"。
常见误判与处理¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 一直 NG,结果里写"未训练" | 还没训练,或注册图改过之后没重训 | 进参数窗口点"训练";确认"当前状态:"变成"已训练" |
| 点"训练"提示"注册OK图数量至少5张" | OK 组不够 5 张 | 补注册 |
| 点"训练"提示"训练程序不存在,请联系技术人员" | 这台设备没装训练程序,它不随安装包发布 | 联系我们单独提供并安装 |
| 点"训练"提示"请先新建或选择类别" | "类型:"是空的 | 新建或选一个类型 |
| 良品被大片判异常 | OK 组里没有这种正常样式,或取像变了(换灯 / 灯衰减 / 改过曝光) | 先比对现在的图和注册图的亮度;取像恢复后仍报,就把这种良品补进 OK 组再重训 |
| 到处都是零星小红点 | "阈值:"偏低,或"忽略缺陷面积:"太小 | 先调"忽略缺陷面积:"滤掉噪点;仍然多再抬"阈值:" |
| 真缺陷检不出来 | "阈值:"太高,或"忽略缺陷面积:"太大,或"训练图片大小:"太小看不清细节 | 依次往回调;细小缺陷把"训练图片大小:"提到 256 或 512 |
| 换批次后误报变多 | 新批次的正常外观不在样本库里 | 把新批次良品补进 OK 组,重新训练 |
| 开着自动注册,一直 NG | 每注册一张模型就失效 | 这是正常现象。攒够样本后关掉自动注册,重新训练 |
| 检测明显变慢 | "训练图片大小:"选得大 | 在够用的前提下选小一档 |
| 换了一台电脑,这一项失效 | 训练好的模型跟着类型走,没带过去 | 用"导出"把类型打包,在新机器上"导入" |
相关页面¶
硬件接入
硬件接入¶
这一章讲一套标签检测设备由哪些硬件组成、每样硬件接在哪、以及在软件里去哪个入口配置它。 现场装机、换相机、换光源、接 PLC 之前先看这一页,能少走很多弯路。
一套典型系统有什么¶
| 硬件 | 作用 | 在软件里对应的入口 |
|---|---|---|
| 工控机 | 跑软件、存图、对外通讯 | 无(装机时准备好即可) |
| 工业相机 + 镜头 | 拍标签 | 调试端任务树右键"设置相机工位"选相机,右键"设置相机参数"调曝光/触发 |
| 光源 + 光源控制器 | 把标签打亮、打匀 | 运行端"设备"菜单 →"设备设置"→"光源控制"页配串口;每个检测方案的亮度在相机参数窗口的"光源控制配置"页 |
| 触发信号源(PLC、传感器、IO 控制器) | 告诉软件"产品到位了,拍" | 两条路:相机走外触发线,或者软件走"通讯触发"轮询信号 |
| 三色灯 / 蜂鸣器 / 传送带 | 把结果变成现场看得见听得见的动作 | 运行端"设备设置"→"三色灯和传送带"页 |
| 扫码枪(可选) | 人工扫 SN 码 | 调试端"菜单"→"设置"里的"启用外部扫码枪:" |
| 液态镜头(可选) | 软件调焦,不用手拧镜头 | 相机参数窗口的"液态镜头设置"页 |
相机 / 相机工位 / 检测方案是三样东西
"相机"是硬件本身。"相机工位"是软件里的一路取像通道,绑定一台相机。"相机工位"下面挂若干"检测方案",每个检测方案有自己的模板图,也有自己独立的一套相机参数(曝光、触发、HDR)和光源亮度。所以同一台相机可以为不同的检测方案用不同的曝光。
两种触发方式,先想清楚用哪种¶
产品到位了要让相机拍照,有两条完全不同的路:
- 相机硬触发:传感器或 PLC 的电信号直接接到相机的触发线上,相机自己曝光。时序最准,软件只管去取图。详见PLC 硬触发接线与设置。
- 通讯触发:PLC / IO 控制器把"到位"这件事写成一个寄存器值或一条字符串,软件轮询到了再发软触发让相机拍。接线简单、不用改相机线,但比硬触发慢一点。详见编辑运行顺序:通讯触发与输出。
两种可以混用:常见做法是软件用通讯触发拿到"产品到位",再让整组相机同时软触发。
本章页面¶
- 相机接入与参数设置:支持哪些相机、怎么绑定、曝光/增益/触发模式/HDR 怎么调、拍照异常怎么查。
- 光源控制器:控制器串口怎么配、通道怎么测、每个检测方案的亮度怎么设。
- PLC 硬触发接线与设置:相机触发线怎么接、外触发模式怎么设、触发早/晚/反拍怎么办。
- 三色灯、传送带与扫码枪:报警灯和蜂鸣器的指令怎么填、外接扫码枪怎么用。
- 传感器经串口 IO 控制器触发拍照:不用 PLC,用一个传感器加串口 IO 控制器就能触发拍照的完整实例。
相关页面¶
相机接入与参数设置¶
这一页讲怎么把一台工业相机接进软件、怎么调曝光和触发、以及拍出来的图不对劲时先查什么。 装新机、换相机、现场图偏暗偏亮、拍照时机不对,都从这里入手。
前置条件¶
- 相机的厂家驱动已经装好(海康相机要装 MVS,迈德威视要装对应 SDK,度申要装度申驱动),相机的网线或 USB 线已插好、供电正常。
- 已经用超级管理员身份进入调试端。
- 工程已经打开。
支持哪些相机¶
| 品牌 | 软件里显示的品牌名 | 说明 |
|---|---|---|
| 海康机器人 | hikrobot |
需要在工控机上装海康 MVS。软件也用海康的枚举接口去发现别家相机 |
| 迈德威视 | mindvision |
随软件自带驱动 |
| Basler | basler |
需要装 Basler 的驱动;GigE 与 USB3 机型都能被发现 |
| 度申 | do3think |
需要装度申驱动包(DS_DRIVERS)里的 64 位运行库"DVP2 x64",以及相机接口对应的驱动(USB3 / GigE)。USB 与网口机型都能被发现。网口机型的 IP 必须和工控机相机网口在同一网段:不在时软件开工程/选相机会直接报 "camera IP … is not in any local NIC subnet"(不再干等十几秒),按提示用度申工具把相机改到网口所在网段;IP 是 169.254 开头 = 相机没拿到地址,要设静态 IP。 |
| 虚拟相机 | virtual |
没有真相机时用一个图片文件夹冒充相机,用来演示和排查软件问题,不能上产线 |
列表里没有你的相机
先用相机厂家自带的取图软件确认能出图。厂家软件能出图、我们的软件枚举不到,多半是驱动装的位数不对(要 64 位)或者驱动没装在工控机本机上。度申相机还要确认度申自带的 BasedCam 已经关掉,它开着会占住相机。
第一步:把相机绑到相机工位上¶
- 在调试端左侧任务树里点"新建相机工位"。已有工位则在工位名上点右键,选"设置相机工位"。
- 弹出的窗口里填"相机工位名称:",名字里不能有英文括号。
- 下方列表会列出当前枚举到的相机,五列分别是"序号""序列号""品牌""信息""自定义名称"。在要用的那一行第一列打勾。已经被别的工位占用的相机是灰的,不能重复绑。
- "设置相机读图超时(s):"填一个正数,表示等一张图最多等几秒,超过就报"读取图片超时"停机。填
-1表示无限等(等不到图会一直卡住,不建议产线用)。 - 点"确认"。
要换相机时,打开同一个窗口点"断开相机绑定",再重新勾选。

第二步:打开相机参数窗口¶
在任务树里选中检测方案(不是相机工位),点右键选"设置相机参数",打开标题为"相机参数配置界面"的窗口。
相机参数是跟着检测方案走的
同一台相机下的每个检测方案都有自己独立的一套曝光、增益、触发、HDR 和光源亮度。改了 A 方案不会影响 B 方案。想让两个方案一样,得分别设两遍。
窗口左上角有四个按钮:开始预览、停止预览、"设置为模板图"(把当前这张图直接当模板图)、"打开光源"。右边是实时图像。左边是参数页签。任何改动都必须点"保存配置"才生效。

曝光(Exposure)页¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 曝光模式 | 三选一:"手动曝光"、"自动曝光"、"多曝光(HDR)" | 产线一律选"手动曝光";标签反光、一次曝光顾头不顾尾时才选"多曝光(HDR)"。自动曝光会随环境光变来变去,模板图和实拍对不上 |
| 自动测光… | 圈个区域,软件扫一遍曝光给出几张候选图(单曝光 / 多曝光 2~4 档)点选 | 新上一种产品先用它,再微调 |
| 亮度目标 | 自动曝光时的目标亮度,0~255 | 只在选了"自动曝光"时可填 |
| 曝光时间 | 曝光时间,单位微秒。这一项的标签里会带上这台相机允许的范围,例如"曝光时间( 46-2000000 微秒) :",范围是从相机读出来的,不同型号不一样 | 越大越亮。先把光源调好再调曝光。数值改完要按回车或点别处才会下发到相机 |
| 模拟增益 | 模拟增益,括号里会显示这台相机允许的范围,例如"模拟增益(倍数0-23) :" | 尽量用小值。增益大了图像噪点多,会把噪点当缺陷检出来 |
| 添加曝光值到HDR | 把当前这个曝光时间加进下面的 HDR 曝光列表 | 见下面的 HDR 一节 |
| HDR | 多曝光要用的曝光值列表。只有曝光模式选了"多曝光(HDR)"才能编辑;相机按这些曝光值一次触发连拍,软件合成一张 | 放 2~4 个值(最多 4 个);相机不支持多曝光时整组置灰 |
| 删除 / 全部删除 | 删掉 HDR 曝光列表里选中的一条 / 全部 |
自动曝光和多曝光不能同时开
曝光模式是三选一,选"多曝光(HDR)"就等于关掉自动曝光。老工程里自动曝光和 HDR 两项都勾着的,打开时按多曝光处理、自动曝光自动关掉(两者同时开时 HDR 的曝光值会被自动曝光吞掉,本来就拍不出来)。曝光模式选中就生效;HDR 曝光值列表改完要点"保存配置"才写入。
什么时候用 HDR¶
标签上有镜面反光的烫金、镀铝层,或者光打不匀导致"调亮了反光处过曝、调暗了暗处看不清"时,开 HDR:相机收到一次触发,按列表里的 2~4 个曝光值连拍(一次触发出 4 帧),软件把这几帧合成一张明暗都能看清的图,拿合成图去检测。触发那一刻拍到的就在这几帧里,不会事后补拍。列表只有 3 个值时,相机仍连拍 4 帧,其中一个曝光值会拍两次,不影响合成效果。
哪些相机能用:
- 海康:型号要带"HDR 轮询"功能(软件开机时会自动查)。不支持的型号,"多曝光(HDR)"这一项是灰的,鼠标停在上面会写明原因。
- 迈德威视:不支持(厂家面阵相机的 SDK 没有这个接口),此项置灰。
- Basler:暂不支持(待真机验证),此项置灰。
- 度申:不支持(度申相机还没接分档曝光接口,待有相机再验证),此项置灰。
不想手填就点「自动测光…」(见下)。用法:曝光模式选"多曝光(HDR)",在"手动曝光"分组里调到一个偏暗的值,点"添加曝光值到HDR";再调到一个偏亮的值,再点一次;最后点"保存配置"。列表里放 2~4 个值,最多 4 个,满了再点"添加"只会提示不再加入。选了多曝光但列表是空的或只有 1 个值,点开始运行时会提示"取像设置错误"拦下来;相机不支持多曝光的,开跑时会提示"相机不支持多曝光"。迈德 / Basler / 度申上原来开了多曝光的方案、以及序列只有 1 个或多于 4 个值的方案,升级后开跑会提示,改成手动曝光或把序列改成 2~4 个。
HDR 的三条限制
- 触发模式必须是软触发或外触发。连续采集模式下保存会提示"连续采集模式下不能使用 HDR"。
- 检测方案的触发方式(在"设置检测方案"里选)是"模板触发"时,多曝光不生效:运行时会提示"模板触发模式不支持HDR合成, 按单张曝光取图"。
- 开了 HDR 的相机不参与"组内同时预拍"(见 PLC 硬触发接线与设置),因为它一次触发出 4 帧。
自动测光:圈个区域,软件给候选图¶
曝光值不用自己一个个试。曝光页"曝光模式"那一行最右边有个「自动测光…」按钮,任何曝光模式下都能点:
- 点「自动测光…」,弹出"自动测光"窗口,左边是相机当前拍的一张图(预览会先停下)。
- 在左图上按住鼠标拖一个框,圈住要看清的区域(例如烫金字 + 旁边的暗色印刷);不圈就按整幅图算。在图上点一下可以清掉框。
- 产品放好别动、灯光稳定,点「开始测光」。软件把相机临时切成软触发,从相机最短曝光开始每次翻一倍,一直拍到"最长曝光",每档拍一张,只看圈住的区域。进度条走完大约 3~5 秒。
- 软件按圈住区域里"最暗处要多长曝光才看得见""最亮处多长曝光就过曝"算出两者差多少,差得不多就说明一档曝光就够,差得多就需要多曝光、要几档。
- 窗口下方列出候选图:单曝光 1 张,加上多曝光 2 / 3 / 4 档各 1 张(都是刚才扫描拍到的图直接合成,不再补拍);标着"★推荐"的那张已经默认选中。
- 点一张候选,左边大图会换成它,看清楚了点「应用」:选单曝光的,写进"手动曝光"的曝光时间;选多曝光的,曝光模式切到"多曝光(HDR)",曝光值写进 HDR 列表。最后照旧点"保存配置"。
每张候选卡片上三行字:
- 第一行:单曝光写"单曝光 X ms";多曝光写"多曝光 N 档"和各档曝光值(毫秒),推荐的那张后面带"★推荐"。
- 第二行"暗部丢失 / 亮部丢失":圈住的区域里有百分之多少的像素黑成一片 / 白成一片,看不出东西。两个都越小越好。
- 第三行:单曝光是"一次触发 1 帧 曝光 X ms";多曝光是"一次触发 4 帧 曝光合计 X ms",即每件产品相机要曝光的总时间,产线节拍紧时要看这个数。
测光前后要注意
- 测光时产品要静止、灯光要稳定(扫描约 3~5 秒),否则各档拍到的不是同一个画面,候选图会糊或推荐不准。
- "最长曝光"默认 100 ms(100000 微秒),扫描最多拍到这么长;产线速度快、曝光不能太长时,先把它改小再点「开始测光」。
- 相机不支持 HDR 轮询的(见上面"哪些相机能用"),只给单曝光候选,相当于按圈住的区域自动定一次曝光。
触发(Trigger)页¶
这一页决定相机"什么时候曝光"。
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 连续模式 | 连续采集。相机自己不停地拍,软件来取就给最近一张 | 只在调试看画面时用。产线别用,拍到的不一定是产品到位那一刻 |
| 软触发模式 | 软触发。软件发一条指令,相机拍一张 | 配合"通讯触发"用,是现在最常用的方式 |
| 外部触发模式 | 外触发(硬触发)。相机等外部电信号才曝光 | 传感器/PLC 的信号直接接到相机触发线上时选这个,时序最准 |
| 软触发(按钮) | 手动发一次软触发,用来试拍 | 调试用 |
| 触发延时(微秒) | 触发延时,单位微秒。收到触发后等这么久才曝光 | 传感器装得比相机靠前、产品还没走到画面中间时,用它补上这段时间。1 秒 = 1000000 |
| 外部触发信号 | 外触发的信号类型:"上升沿触发"、"下降沿触发"、"高电平触发" | 按传感器/PLC 输出的是常开还是常闭来选,现场试一下哪种每来一个产品只拍一张 |
| 去抖时间(us) | 信号抖动过滤时间,单位微秒 | 传感器在产品边缘反复跳变导致一个产品拍好几张时,把这个值调大。常用 10000(=10 毫秒) |
低电平触发和双边沿触发被去掉了
下拉框里不会出现"低电平触发"和"双边触发"。低电平触发会让相机在没有产品时也一直拍,双边沿会一个产品拍两张,都不适合这套软件的流程。
保存后软件会按当前触发模式自动把用不上的参数灰掉。闪光灯(Strobe)和外触发快门类型这两组参数在界面上是隐藏的,不需要也不能在这里配。
这里的触发模式只管调参预览
"连续 / 软触发 / 外部触发模式"只决定在这个窗口里预览、试拍时相机怎么出图。点"开始运行"后软件统一把相机设成外部触发(外部触发下软件发的软触发也照样响应),调试端"单次触发"也一样;这个检测方案运行时到底是主动触发、被动触发还是模板触发,在任务树里检测方案右键"设置检测方案 → 基础参数设置 → 触发方式"里选,详见 PLC 硬触发接线与设置。这里选的触发模式会原样保存,不会再被运行改掉。
图像设置(Image Setting)页¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 图像增强(整组开关) | 勾上才启用下面三项 | 一般不开。相机端做增强会改变像素分布,可能让模板图和实拍对不上 |
| 对比度 | 对比度 | |
| 伽马变换 | 伽马 | |
| 锐度 | 锐化强度 | 锐化会把噪点也放大,慎用 |
| 反色 | 黑白反转 | 白底黑字的标签一般不用 |
| 垂直镜像 / 水平镜像 | 图像翻转 | 相机装反了(画面上下颠倒/左右反)时用它摆正,比拆装相机快。改完必须重新拍模板图。迈德威视、海康、度申、Basler 都由相机自己翻(海康 / Basler 走标准的 ReverseX / ReverseY 节点);不能翻的品牌这两项是灰的。相机型号没有镜像节点时,运行不受影响(日志告警一次),相机设置窗保存会提示 |
颜色调整(Color Setting)页¶
只有彩色相机才有这一页(页签名叫"颜色调整")。可设"自动白平衡"、"红通道增益 / 绿通道增益 / 蓝通道增益"和"饱和度"。 产线建议关掉自动白平衡、手动固定三个增益,否则不同批次产品的颜色会漂。
液态镜头设置页¶
用的是普通镜头就不用管这一页,把"使用液态镜头"保持不勾即可。
用液态镜头时:勾上"使用液态镜头",在端口下拉框选镜头对应的串口,镜头类型选"虹瞳"或"道显",点"保存配置";然后在"手动变焦"里拖"焦距挡位"滑块(1~1023),看着右边实时图像最清楚时停下,再点一次"保存配置"。
没有自动变焦
这一页只有"手动变焦"。老版本里那个"自动变焦"分组(起始档位/终止档位/步长/对焦区域)功能从来没做完,已经整组移除。
光源控制配置页¶
只有在运行端启用了光源控制器、软件也确实连上了控制器时,才会出现这一页。在这里给当前这个检测方案设各通道的亮度值。详见光源控制器。
常见问题¶
打开相机参数窗口,画面一片空白、或提示"相机取图失败"。 先点左上角的开始预览按钮。仍然没有画面:触发模式如果是"外部触发模式",相机在等外部信号,画面本来就不会动,点"软触发"按钮试拍一张。都不行就查相机线、查厂家软件能不能出图。
运行时报"读取图片超时"停机。 按顺序查:①相机线松没松、②触发模式和实际接法是不是对得上(设了外触发但线没接、或设了软触发但运行顺序里没有触发指令)、③相机工位的"设置相机读图超时(s)"是不是设得太短。
图上有一条黑色横条,或者一条错位的细横线。 这是两个不同的毛病:
- 整条黑横条:早期版本在触发模式下会打开相机频闪输出但配不全脉冲宽度,导致一部分像素行没被照到。现在频闪默认关闭,升级到当前版本即可。装好后还有黑条,说明问题出在现场的光上(频闪光源或日光灯的工频闪烁),换直流光源或加长曝光时间。
- 错位的细横线:网口(GigE)相机丢包。丢掉的那几行显示的是上一帧的内容。软件会在日志里写明"取图丢包",并自动重拍最多 2 次换一张好帧,但根治要靠网络设置,见下一条。
网口相机丢包、画面偶尔花、条码读不出。 按下面顺序做:
- 相机独占一个千兆网口,不要和公司网、PLC 网共用,中间不要经交换机。
- 在网卡属性里把"巨帧 / Jumbo Frame"开到最大(9014 字节或网卡支持的最大值),相机端的包长也要设成一样。
- 把网卡的"接收缓冲区 / Receive Buffers"调到最大值。
- 多台相机同时拍时,检测占满所有 CPU 核会挤掉收流线程。在运行端"设置 → 打开系统设置 → 通用设置"里把"有无 AI 线程数(0 = 全部核)"调小(例如
2),点"确认"后重启软件再看。
改曝光时弹框说"相机拒绝了该曝光值"。 界面上显示的曝光范围是固定的,相机实际能接受的最小曝光会随帧率和增益变化。软件已经自动退回上一个有效值,不会留下半套配置。换一个大一点的曝光值再试。
相机列表里一台都枚举不到。 海康 MVS 没装、或者装的是 32 位版本;也可能软件启动时没找到 MVS 的运行库目录。装好 64 位 MVS 后重启软件。
相关页面¶
光源控制器¶
光源控制器是一个串口小盒子,光源接在它的通道上,软件通过串口告诉它每个通道要多亮。 用了控制器,亮度就跟着检测方案走:同一台相机拍正面用一套灯,拍侧面用另一套灯,不用人去拧旋钮。
前置条件¶
- 光源已经接到控制器的通道上(通道号记清楚,例如 CH1 接顶光、CH2 接侧光)。
- 控制器的串口线(通常是 USB 转串口)已插到工控机上,在"设备管理器 → 端口(COM 和 LPT)"里能看到 COM 号。
- 用超级管理员身份登录运行端,且软件处于停止状态。
第一步:配控制器串口(运行端)¶
在运行端点"设备"菜单 →"设备设置",切到"光源控制"页,先勾上"启用光源控制器"这个分组框,再逐项填:
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 端口: | 控制器占用的 COM 口 | 下拉里列的是当前识别到的串口。拔插 USB 线后 COM 号可能变,变了要回来改 |
| 波特率: | 与控制器出厂设置一致 | 多数控制器是 9600 或 19200,以控制器说明书为准 |
| 校验位: | 一般 N |
|
| 数据位: | 一般 8 |
|
| 停止位: | 一般 1 |
|
| 超时时间: | 一次串口读写最多等几秒 | 默认值够用,不用改 |
| 控制器品牌: | KCS / OPT / HG / Zowee 四选一 |
必须选对,选错会连不上或亮度写不进去。不在这四个里的控制器暂不支持 |
| 通道数: | 4 / 6 / 8 / 12 / 16 |
按控制器实际通道数选。选小了多出来的通道调不了,选大了会写到不存在的通道 |
| 等待延迟: | 下发亮度之后等多少毫秒再拍照,单位毫秒 | 光源从收到指令到真正稳定需要时间。默认值不够(拍出来忽明忽暗)就往上加,一般 10~50 毫秒 |
| 运行时常亮: | 勾上 = 运行期间灯一直亮;不勾 = 每检测完一件就全部熄灭 | 用模板触发(靠画面变化判断产品到位)必须勾上,否则灯灭了就看不到产品。普通触发不勾更省灯管寿命 |

一个 COM 口只能给一个设备用
光源控制器、通讯设备、串口收发数据、三色灯和传送带这四样如果填了同一个 COM 口,点"确认"时会报"光源控制器串口与其他设备冲突"之类的提示,并且整个设备设置一项都不会保存。改掉冲突的那个再保存。
第二步:就地测一下通道通不通¶
还在"光源控制"页上,下面有一小块测试区:
- "测试通道选择:"选一个通道号(下拉里的条数跟着上面的"通道数"变)。
- "对应亮度值:"填 0~255 的数,255 最亮。
- 点"测试打开",对应的灯应该亮起来;点"测试关闭",灯灭。
灯不亮就看弹出的提示:
- 提示"光源测试失败:"后面跟一串英文,多半是 COM 口被别的程序占着(控制器厂家的调试软件没关)、或者 COM 口号填错。
- 提示"光源控制器品牌未支持",说明"控制器品牌:"选了个软件不认的值。
测通了点"确认"保存。保存后软件会立刻按新参数重新连控制器,不用重启。
第三步:给每个检测方案设亮度¶
控制器连上以后,运行端界面下方会出现一条绿色的"光源 已就绪";如果是红色的"光源 未就绪",说明串口没开成功,先回去查第一步。
亮度是每个检测方案各设一套的:
- 回到调试端,在任务树里选中要设的检测方案,右键"设置相机参数"。
- 切到"光源控制配置"页(只有控制器连上了才会出现这一页)。
- 表格里每一行是一个通道和它的亮度值(0~255)。改完点"指定通道打开"看效果,点"指定通道关闭"关掉。"全通道全开"和"全通道全闭"用来快速确认所有灯都接好了。
- 调到画面明暗合适,点"保存配置"。
运行时软件会在每次拍照前,把当前检测方案这套亮度一次性下发给控制器,等够"等待延迟"设的毫秒数,再让相机曝光。

接线要点¶
- 控制器和光源的电源要和工控机共地,否则亮度会不稳。
- 通道号要和实物对上:先只接一路灯,用"测试打开"确认是哪一路,再接下一路。靠猜很容易把顶光和侧光调反。
- 控制器面板上通常也有 CH 按键和加减键可以手动调亮度。调试阶段可以用它找感觉,但产线上必须把值填回软件里,否则换了工程、重启了控制器,亮度就丢了。
- 控制器厂家的调试软件和本软件不能同时开,串口只能被一个程序占用。
常见问题¶
运行端一直显示"光源 未就绪"。 串口没开成功。依次查:控制器电源、COM 口号、厂家调试软件是不是还开着、波特率是否和控制器一致。软件启动时如果勾了启用却没填端口,会弹提示告诉你去"设备设置"的"光源控制"页配串口。
灯亮了,但拍出来忽明忽暗。 "等待延迟"太短,灯还没稳定相机就曝光了。往上加 10~20 毫秒再试。
换了检测方案,灯没跟着变。 亮度是保存在检测方案里的,确认改完之后点过相机参数窗口的"保存配置",并且整个工程也保存过。
每检测完一件灯就灭一下,很闪。 勾上"设备设置 → 光源控制 → 运行时常亮:"。
相关页面¶
PLC 硬触发接线与设置¶
产品到位了要让相机拍照,有两种做法:把 PLC 的信号线直接接到相机上(硬触发),或者让软件去问 PLC "到位了没"(通讯触发)。 这一页讲两者怎么选、硬触发怎么接怎么设,以及拍早了、拍晚了、正反拍反了怎么办。
先选一种触发方式¶
| 硬触发(外触发) | 通讯触发 | |
|---|---|---|
| 怎么走线 | PLC 输出直接接相机的触发线 | 不接相机,PLC 把"到位"写进寄存器或发一条字符串,软件轮询 |
| 时序精度 | 最准。信号到相机就曝光 | 差一点。轮询间隔加上一来一回的通讯时间,通常几十毫秒 |
| 相机里怎么设 | "触发"页选"外部触发模式" | "触发"页选"软触发模式" |
| 运行顺序里 | 不用插触发指令 | 要插一行"通讯触发" |
| 适合 | 节拍快、要求曝光时刻精确 | 现场不方便改相机线、或一个信号要带动多台相机 |
两种也可以配合用:用通讯触发接收"产品到位",再让整组相机同时软触发(见下面的"勾上'主动触发'")。
不用 PLC 也能做触发
只有一个传感器、没有 PLC 的场合,可以用一个串口 IO 控制器把传感器信号变成 Modbus 寄存器,软件用通讯触发去读。完整实例见传感器经串口 IO 控制器触发拍照。
硬触发接线的通用要点¶
具体引脚定义各家相机不一样,必须以你手上这台相机的说明书和线缆图为准。下面是不分品牌都适用的几条:
- 先确认信号方向。相机的触发输入通常是一对线(触发正、触发负)。PLC 的输出模块是源型(PNP,输出高电平)还是漏型(NPN,输出拉低),决定了这两根线分别接 PLC 的输出点还是公共端。接反了相机收不到信号,一般不会烧,但要按手册确认电压范围。
- 电压要对得上。相机触发输入多为 12V 或 24V 兼容,PLC 输出常见 24V。超出相机允许范围要加限流电阻或继电器隔离,不能直接怼。
- 共地。相机、PLC、光源控制器的地要接到一起,否则信号电平浮动,会出现"有时触发有时不触发"。
- 用双绞屏蔽线,屏蔽层单端接地。触发线和电机动力线、变频器线分开走线槽,这是现场误触发最常见的来源。
- 一个信号带多台相机时,不要把一路 PLC 输出并联到多台相机上(驱动能力不够),用继电器或 PLC 的多个输出点分别带。
- 传感器直接接相机也可以(不经 PLC),但传感器必须是有源输出(NPN/PNP 三线制),干接点式的要串一个电源。
软件里设成外触发¶
- 调试端任务树里选中检测方案,右键"设置相机参数"。
- 切到"触发"页,选"外部触发模式"。
- "外部触发信号"选信号类型:"上升沿触发"(信号从无到有的瞬间拍)、"下降沿触发"(信号消失的瞬间拍)、"高电平触发"(高电平期间拍)。现场一般选上升沿。
去抖时间(us)填一个抖动过滤时间,单位微秒。一个产品被拍好几张时把它调大,常用10000(10 毫秒)。- "触发延时(微秒)"填触发延时,单位微秒。传感器装在相机前面、产品还要再走一段才到画面中间时用它补上,1 秒 =
1000000。 - 点"保存配置"。

外触发模式下不要指望预览一直有画面
设成外触发后,没有外部信号相机就不曝光,预览是静止的。想试拍一张,点"软触发"按钮。
勾上"主动触发":让一组相机同时曝光¶
在调试端点"编辑运行顺序",在阶段树里找到拍照行(形如 (相机工位名->检测方案名)),勾上该行的"主动触发";去掉勾就撤销。
这个勾的作用是:通讯触发一到,软件立刻把同一阶段里所有勾了"主动触发"的相机挨个设好参数并发软触发,全组在零点几秒内全部曝光完;之后轮到每台相机检测时,只是把已经拍好的那张图读出来。
这个勾和检测方案右键"设置检测方案 → 基础参数设置 → 触发方式"是同一个设置的两个入口:勾上 = 触发方式"主动触发(软触发)",去掉 = "被动触发(等硬件线)",在哪边改另一边都跟着变。触发方式选了"模板触发"的方案,拍照行上不显示这个勾,显示"模板触发"。
不打这个标记(被动触发)时,是拍一张、检测一张、再拍下一张,一组四台相机的曝光时刻可能散布在触发后 0.1 秒到 3 秒之间——PLC 留的时间窗一旦卡不住,就会出现"提前拍到空工位""晚拍拍到下一件""正反面颠倒"。
怎么用:
- 在要同时曝光的那个阶段的阶段行上右键,选"添加通讯触发"。
- 确认这一组相机的拍照行都在这个阶段里;不在的,在拍照行上右键"移到阶段"挪过来。
- 这个阶段里的拍照行逐个勾上"主动触发"。
- 点"保存"。
下面这些情况会自动退回逐台拍照
- 该组只有一台相机(本来就没有并行的收益)。
- 启用了光源控制器(每台相机要换灯序,同时曝光会串灯)。
- 该检测方案开了 HDR(要连拍多档曝光)。
- 该检测方案用的是模板触发。
- 同一台相机在一组里出现两次(相机缓存放不下两张)。
- 同一个通讯触发在运行顺序里被引用了多次(软件分不清现在是哪一组;编辑窗口下方会有灰字提示)。
退回不是故障,只是时序回到老样子,检测结果不受影响。
常见问题¶
PLC 报"拍照超时",或者软件停在"等待通讯触发"。 先分清是哪一头在等:
- 软件日志停在"等待通讯触发",说明 PLC 的信号软件没读到,查通讯参数和地址,见 Modbus RTU / TCP 触发与输出。
- 软件已经过了触发、卡在拍照上并最终报"读取图片超时",说明相机没收到外触发信号,或者相机设的是软触发但没人发软触发。查触发线和相机的"触发"页。
一个产品拍了好几张,或者计数比实际多。 传感器信号抖动。把"去抖时间(us)"调大;如果是外触发信号类型选成了"高电平触发",产品停在传感器前不动时会一直拍,改成"上升沿触发"。
拍到的图总是上一件产品的(串帧)。 相机缓存里积了多余的帧。常见原因是外部多发了触发,或者检测比出料慢。升级到当前版本(每拍之后会自动排空相机缓存),并检查 PLC 是不是一个产品发了两次信号。
正反两面拍反了、或者拍的时刻忽早忽晚。 按上面的"勾上'主动触发'"把整组相机改成同时预拍。做完仍不稳,再查 PLC 侧发信号的时机是不是用定时器而不是到位信号。
网口相机在多相机同时曝光时画面出现错位细横线。 这是网络丢包,不是触发问题,见相机接入与参数设置的常见问题。
相关页面¶
三色灯、传送带与扫码枪¶
这一页讲三样"让现场看得见、动得起来"的外设:报警用的三色灯和蜂鸣器、由软件开停的传送带,以及人工扫 SN 用的外接扫码枪。
三色灯、蜂鸣器与传送带¶
软件不直接接灯和电机,而是接一块串口继电器板(IO 板),软件往串口发一串指令,板子上对应的继电器吸合,灯亮或者传送带转。所以配置的核心是把每个动作对应的那串指令填对。
配置入口¶
用超级管理员登录运行端,停止运行,点"设备"菜单 →"设备设置",切到"三色灯和传送带"页,勾上"三色灯和传送带启用"。
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 端口: | IO 板占用的 COM 口 | 不能和光源控制器、通讯设备、串口收发数据用同一个口 |
| 波特率: / 校验位: / 数据位: / 停止位: | 与 IO 板出厂参数一致 | 以板子说明书为准,常见 9600,8,N,1 |
| 超时时间: | 一次串口读写最多等几秒 | 默认够用 |
| 发送模式: | ASCII 或 HEX |
板子的协议是十六进制报文就选 HEX(下面的指令按十六进制字符串填,如 A0 01 01 A2);是可打印的文本命令就选 ASCII |
| 开启绿灯指令: / 关闭绿灯指令: | 绿灯开、关的指令 | |
| 开启黄灯指令: / 关闭黄灯指令: | 黄灯开、关的指令 | |
| 开启红灯指令: / 关闭红灯指令: | 红灯开、关的指令 | |
| 开启蜂鸣器指令: / 关闭蜂鸣器指令: | 蜂鸣器开、关的指令 | |
| 开传送带指令: / 停传送带指令: | 传送带开、停的指令 | 不接传送带就把这两条留空 |
| OK时蜂鸣器响时间(s): | 检测通过时蜂鸣器响几秒 | 填 0 不等于不响:软件仍会发一次开、紧接着发一次关,听上去是"嗒"一下。OK 件不想有任何声音只能从硬件上断开蜂鸣回路 |
| NG时蜂鸣器响时间(s): | 检测不通过时蜂鸣器响几秒 | 太短现场听不见,常用 1~2 秒 |
每一行指令右边都有"开"和"关"两个按钮,填完立刻点一下,灯该亮就是填对了。测试失败会弹"三色灯/传送带测试失败:"加上具体原因,最常见是 COM 口被占或者波特率不对。
全部填好点"确认"。保存成功后,运行端下方会出现一条绿色的"报警灯/传送带 已连接";红色的"已断开"说明串口没开成功。

填错指令不会报错,只是灯不亮
软件只负责把你填的字符串按 ASCII 或 HEX 发出去,它不知道板子认不认。所以每条都要用旁边的"开""关"按钮实测一遍。HEX 模式下字符串必须是合法的十六进制(字符个数为偶数),否则发送时会报编码错误并停机。
软件什么时候点哪盏灯¶
| 时机 | 灯 | 蜂鸣器 | 传送带 |
|---|---|---|---|
| 软件启动 / 刚保存完设备设置 | 黄 | — | 开 |
| 点"运行" | 绿 | — | 开 |
| 每检测完一件,结果通过 | 不变 | 响"OK时蜂鸣器响时间" | 不变 |
| 每检测完一件,结果不通过 | 不变 | 响"NG时蜂鸣器响时间" | 不变 |
| 检出不良、进入人工复判 | 红 | 响 | 停 |
| 人工复判做完 | 绿 | — | 开 |
| 正常停止 | 黄 | — | 不停 |
| 异常停机 | 红 | 响 | 不停 |
| 关闭软件 | 全灭 | 停 | 停 |
停止运行不会停传送带
这是有意的:产线上突然停带会让上游堆料。要停带请用现场的急停或 PLC。
接线要点¶
- IO 板、灯和传送带的控制回路要单独供电,不要从工控机的 USB 取电。
- 继电器触点只是开关,灯和电机的电源走自己的回路,继电器串在中间。接大功率负载要加中间继电器或接触器,不能直接带。
- 三色灯的公共端(通常是 COM 或 N)接好,三个颜色各占一路继电器输出。
- 蜂鸣器是有源的还是无源的要看清:无源蜂鸣器接通只会"嗒"一声,要用有源的。
外接扫码枪¶
标签上的条码印得太小、太糊,相机认不出,但又必须记录 SN 时,可以让操作员用手持扫码枪扫一下。扫码枪按"键盘"方式接(USB HID),不用装驱动。
打开这个功能¶
- 进调试端,点"菜单"→"工程设置"(运行端"设置"菜单里也有同一项)。
- 把"启用外部扫码枪:"改成
enable。 - 确定并保存工程。
用起来是什么样¶
启用之后,运行时每检测一件之前软件会弹出一个标题为"扫码"的小窗口,提示"请使用扫码枪扫码:"。把扫码枪对准产品上的条码扣一下,内容会自动填进输入框(多数扫码枪扫完自带回车,直接就确认了)。确认之后才开始拍照检测,扫到的内容就作为这一件的 SN,会写进统计、存图文件名和对外上报的数据里。
点了取消会停止运行
这个弹窗是流程的一部分。点"取消"或者不填内容就确认,软件会提示"扫码枪取消扫码,停止运行"并停机。
启用外接扫码枪后,软件不再从检测项里取 SN——也就是说"设置为SN码"那一套不再生效,SN 完全以扫码枪扫到的为准。
常见问题¶
"报警灯/传送带 已断开",但线都接着。 串口没打开成功。查 COM 口号、波特率,以及有没有别的程序(IO 板厂家的调试软件)占着这个口。软件启动时如果勾了启用却没填端口,会弹提示告诉你去"设备设置"的"三色灯和传送带"页配串口。
灯能用"开""关"按钮点亮,运行时却不动。 确认"三色灯和传送带启用"这个勾选框是勾上的并且点过"确认"。设备设置里只要有任何一项校验不过(比如串口冲突),整页设置都不会保存。
蜂鸣器一直响不停。 "NG时蜂鸣器响时间(s)"填得太大,或者"关闭蜂鸣器指令:"填错了。用"关"按钮实测一下关闭指令。
扫码枪扫了没反应。 扫码枪没设成"键盘模式",或者焦点不在弹出的输入框里。先在记事本里扫一下验证扫码枪本身正常。
相关页面¶
传感器经串口 IO 控制器触发拍照¶
适用范围:科星 CX-51xxS 系列串口 IO 控制器(2~8 路,RS485,Modbus RTU)+ NPN 三线制传感器 + labeldetect 软件(现场在用的各版本均适用)。 整理日期:2026-09-11
目标:产品经过传感器时,控制器把信号变成 Modbus 寄存器的值,labeldetect 轮询到该值后立即拍照检测。全程不需要 PLC,不需要改软件。
1. 需要准备的东西¶
| 物料 | 说明 |
|---|---|
| 串口 IO 控制器 | 科星 CX-5104S-485 / CX-5108S 等,必须带"开关量输入"(DI)端子 |
| NPN 三线制传感器 | 光电或接近开关均可。三根线:棕=电源正、蓝=电源负、黑=信号 |
| RS485 转换端子 | 转RS232,通过串口线连接电脑 |
| 直流电源 | 12V 或 24V,控制器壳上标注 7~36V 都能用 |
| 厂家调试软件 | "串口继电器调试软件 V1.1.0",只用来验证接线,生产时不运行 |
2.1 传感器接控制器¶
控制器下排"开关量输入"端子从左到右是:VCC、GND、COM+、IN1、IN2、IN3、IN4、COM-。
| 传感器线 | 接控制器端子 |
|---|---|
| 棕(电源正) | COM+ |
| 黑(信号) | IN1 |
| 蓝(电源负) | COM- |
说明:
- 这是厂家官方的 NPN 接法,传感器由控制器供电,不用另接电源。
- 线色以传感器自带说明书为准。三线制传感器的行业惯例是棕正、蓝负、黑信号,下图里的颜色只是示意,不要照图上的颜色接。
- 如果你的控制器型号端子上没有 COM+ / COM-,只有 VCC / GND / IN,那就棕接 VCC、蓝接 GND、黑接 IN1。
- 多个传感器时,第二个接 IN2,第三个接 IN3,以此类推。

(原图见 科星开关量接线图)
2.2 控制器供电¶
VCC 接电源正,GND 接电源负。上电后 POWER 灯常亮。
2.3 控制器接电脑¶
232 转 485 的 1 接控制器 485 端子的 A(或 A+),2 接 B(或 B-)。接反不会烧,但通不了,读不到就先对调 A、B 试一次。
插上电脑后,打开"设备管理器 → 端口(COM 和 LPT)",记下这根线的 COM 口号,例如 COM5。如果分不清就多尝试一下确认是 COM 几。
3. 用厂家软件验证接线(必做,约 5 分钟)¶
- 打开"串口继电器调试软件 V1.1.0",串口选刚才记下的 COM 口,波特率选 9600,点"打开串口"。
- 软件会自动读出设备地址,出厂是 1。读不出来,先检查 A、B 有没有接反。
- 切到"开关量状态读取(03 功能码)"页,点"读取开关量状态"。此时 DI1 应显示灰色"无信号"。
- 用手挡住传感器(或把工件放到传感器前),再点一次"读取开关量状态",DI1 应变成黄色"有信号"。变了说明传感器和控制器都通了。
- 看软件左下角的"接收数据"一行,记下第一路返回的寄存器值。正常是 0001。这个数后面填软件要用。
- 到"基础联动+主动上传"页确认"开关量主动上传"没有开启(出厂是被动)。开了会往串口乱发数据,干扰软件轮询。
- 验证完关闭厂家软件。串口只能被一个程序占用,厂家软件不关,labeldetect 打不开串口。
4. labeldetect 软件设置¶
4.1 通讯设备(运行端 → 菜单"设备设置")¶
| 项 | 填写 |
|---|---|
| device type | MODBUSRTU |
| 端口 | 第 2.3 步记下的 COM 口,例如 COM5 |
| 波特率 | 9600 |
| 数据位 | 8 |
| 校验 | N |
| 停止位 | 1 |
| 超时 | 1.0 |
点确定关闭对话框后,软件会立刻按新参数打开串口,不用重启。如果此时弹出"打开串口失败"的提示,先确认厂家调试软件已经关闭、COM 口号没填错。
4.2 相机触发模式¶
在相机设置里把触发模式设为软触发。
4.3 在运行顺序里添加"通讯触发"(调试端 → "编辑运行顺序")¶
- 打开"编辑运行顺序"窗口,在"阶段 1"那一行点右键,选"添加通讯触发",阶段下面会多出一行 (trigger#1)。
- 选中 (trigger#1) 这一行,右侧参数按下表填写:
| 项 | 填写 | 说明 |
|---|---|---|
| 从站ID | 1 | 控制器地址,第 3 步第 2 点读到的那个数 |
| 寄存器类型 | READ_HOLDING_REGISTERS | 下拉第 3 项。不要选其它三项 |
| 地址 | 12288 | 对应控制器第 1 路开关量(厂家文档里的 0x3000)。IN2 填 12289,IN3 填 12290,以此类推 |
| 触发条件值 | 1 | 第 3 步第 5 点记下的返回值,通常是 1 |
| 读取间隔 | 0.05 | 单位秒。默认 0.2 太慢,容易漏掉短信号 |
| 触发延时 | 0 | 单位秒。传感器到相机之间有距离、需要等工件到位再拍时,这里加延时 |
注意:
- 寄存器类型只能选 READ_HOLDING_REGISTERS。READ_DISCRETE_INPUTS 在部分版本里不可用,选了会一直等不到触发。
- 地址填 12288,不要填 0,也不要按 PLC 组态手册"加 1"。
-
有几台相机要用同一个传感器触发,只加一个 (trigger#1) 即可,同一阶段的相机会一起拍。
-
不用排顺序:通讯触发自动排在本阶段的拍照行前面。顺序是:先等触发,再拍照,再检测,再输出。
- 勾上拍照那一行的"主动触发"。这样信号一到相机立刻曝光,时序最准。
- 点"保存"。
5. 试运行验证¶
- 点运行。运行日志应出现"等待通讯触发(trigger#1)",软件停在这里等信号。
- 用手挡一下传感器。日志应依次出现"通讯触发(trigger#1)完成"→ 相机名"开始拍照并合成"→ 检测结果。
- 松开传感器,日志回到"等待通讯触发",等下一件。
到这一步就可以上线了。
6. 注意事项与常见问题¶
触发方式是"看到信号就拍",不是"信号变化才拍"。 工件必须是"经过"传感器。如果工件停在传感器前面不走,软件拍完一轮回来发现信号还在,会再拍一次,一直重复。安装传感器时要保证工件通过后信号消失。
信号太短会漏拍。 软件每 0.05 秒读一次,加上串口一来一回的时间,传感器被遮挡的时间至少要 0.1 秒。工件很小、速度很快时,把传感器装在工件较长的一侧,或用带"延时断开"功能的传感器。
一直停在"等待通讯触发"。 按顺序检查:
- 厂家调试软件是不是还开着占了串口。
- 设备设置里的 COM 口号对不对(拔插 USB 线后 COM 号可能变)。
- 485 的 A、B 是否接反,对调试一次。
- 波特率是否 9600、从站 ID 是否 1(在厂家软件里能读出来就没问题)。
- 挡住传感器时,厂家软件里 DI1 是否变黄。不变黄是传感器接线问题。
- 厂家软件里返回值是不是 1。不是 1 就把"触发条件值"改成实际返回的数。
软件报"Modbus RTU failed to open serial port"。 串口被别的程序占用,或者 USB 转 485 线没插好、驱动没装。
只想换传感器,不想动软件。 只要还是 NPN 三线制,直接换,软件不用改。换成 PNP 传感器接线不同,先联系我们。
7. 备用方案(第 4 步读不到值时才用)¶
在厂家软件"基础联动+主动上传"页,把第 1 路输入设为"联动开关量 带锁",这样传感器一挡,继电器 DO1 跟着吸合、松开就断开。然后 labeldetect 里通讯触发改成:
| 项 | 填写 |
|---|---|
| 寄存器类型 | READ_COILS |
| 地址 | 0 |
| 触发条件值 | 1 |
缺点:每拍一次继电器响一次,机械继电器有寿命,产量大的产线不建议长期用。
附:控制器 Modbus 指令速查(来自厂家文档)¶
| 功能 | 功能码 | 起始地址 | 说明 |
|---|---|---|---|
| 读开关量输入(单路) | 03 | 0x3000(十进制 12288) | 每路一个寄存器,第 1 路 0x3000。本方案用这条 |
| 读开关量输入(按位) | 02 | 0x0000 | 一个字节 8 路,bit0 为第 1 路。labeldetect 部分版本不支持 |
| 读继电器状态 | 01 | 0x0000 | 一个字节 8 路 |
| 读继电器状态(单路) | 03 | 0x1000(十进制 4096) | 每路一个寄存器 |
| 控制继电器 | 05 | 0x0000 | FF00 吸合,0000 断开 |
出厂串口参数:9600,8,N,1;设备地址 1。CRC 为标准 Modbus CRC16。
通讯
通讯总览¶
软件不是孤立跑的:它要知道产品什么时候到位,也要把 OK / NG 的结论交给 PLC、机械手或上位机。 这一章讲三条对外的线各是干什么的、参数在哪配、以及联调时怎么一步步验证。
三条互不相干的线¶
| 线 | 干什么 | 配在哪 |
|---|---|---|
| 通讯设备 | 主线。接收"产品到位"的触发信号,检测完把结果发出去 | 运行端"设备"菜单 →"设备设置"→"通讯设备"页;时机和内容在调试端"编辑运行顺序" |
| MES | 把每件产品的结果上报给工厂 MES 系统 | 不在本软件里配,由一个独立的 MES 上传程序负责,见 MES 对接 |
| 串口收发数据 | 从另一个串口设备读一段文本(例如仪表读数、外部条码),或者往它发一条固定指令 | 运行端"设备设置"→"串口收发数据"页;时机在"编辑运行顺序"里插一行 |
三条线用的是各自独立的端口,互不影响。通讯设备和串口收发数据如果都用串口,不能是同一个 COM 口。
通讯设备六选一¶
在"设备设置 →通讯设备"页的"设备类型:"下拉里选一种。选什么,取决于对面那台设备是什么、由谁主动发起连接。
| 设备类型 | 是什么 | 什么场景选它 |
|---|---|---|
NODEVICE |
不接任何通讯设备 | 单机试机、只看界面结果、不对外发信号时 |
TCPSERVER |
软件当网络服务端,在本机某个端口上等别人连进来 | 上位机 / MES 中间件 / 机器人主动来连检测软件 |
TCPCLIENT |
软件当网络客户端,主动去连对方的 IP 和端口 | PLC 或上位机已经开好了一个 TCP 服务端,让检测软件去连 |
SERIALCOM |
普通串口收发字符串 | 对方是串口设备,协议是自定义的文本命令(例如收到 TRG 就拍照,发 PASS / FAIL 回去) |
MODBUSRTU |
串口上的 Modbus 协议 | PLC、串口 IO 控制器、串口扩展模块,读写的是线圈和寄存器 |
MODBUSTCP |
网口上的 Modbus 协议 | 带网口的 PLC(汇川、台达、西门子经网关等),读写线圈和寄存器 |
选完之后:
- 选了
SERIALCOM/TCPSERVER/TCPCLIENT的,触发和输出用字符串约定,见字符串协议(TCP / 串口)。 - 选了
MODBUSRTU/MODBUSTCP的,触发和输出用寄存器 / 线圈约定,见Modbus RTU / TCP 触发与输出。软件会自动把运行顺序编辑器里用不上的那一半参数灰掉。
换了设备类型,运行顺序里的参数要重填
字符串那套(查询指令、触发指令、PASS/FAIL 指令)和 Modbus 那套(从站 ID、寄存器类型、地址、触发条件值)是两套独立的参数,存在同一条指令里。从字符串切到 Modbus,要重新进"编辑运行顺序"把 Modbus 那半边填上。
配置顺序¶
- 先通链路:在运行端"设备设置"里选设备类型、填 IP / 端口 / 串口参数,点"确认"。运行界面下方出现绿色的"通讯(设备类型) 已就绪"才算这一步过了。见设备设置:选通讯设备。
- 再编排时机:回调试端点"编辑运行顺序",决定先等触发、再拍哪几台相机、最后什么时候输出结果。见编辑运行顺序:通讯触发与输出。
- 最后定内容:在阶段里添加了通讯触发 / 输出之后,选中这一行填具体的指令字符串或寄存器地址。见字符串协议或 Modbus。
- 联调:先用串口 / 网络调试助手冒充 PLC 打通,再换真 PLC。
联调时要看的两处¶
- 运行过程日志区(运行端右侧):会逐条打出"等待通讯触发(trigger#1)""通讯触发(trigger#1)完成""通讯输出(output#1)完成"。卡在哪一条,问题就在哪一步。
- "打开通讯服务端界面"(运行端"设置"菜单里,内控 / 外控都有):一个手动发指令的测试工具,能看到"支持指令集"、往里"发送指令"、并在"发送指令 / 接收指令"两栏看到往来的报文。内控模式下指令直接投给检测引擎,窗口里没有主机 / 端口输入框和"连接""清空连接"按钮,只显示"总线就绪(进程内)";外控模式下它在本机起一个假服务端供调试,窗口里的主机 / 端口只是这个假服务端的。它配合"调试运行"模式用,现场通讯设备的 IP / 端口等参数全部在"设备设置"里。
本章页面¶
相关页面¶
设备设置:选通讯设备¶
"设备设置"是软件所有外部硬件参数的总入口:光源控制器、通讯设备、串口收发数据、三色灯和传送带各占一页。 这一页只讲其中的"通讯设备"页——也就是软件和 PLC / 上位机之间那条主线怎么连上。
前置条件¶
- 用超级管理员身份登录运行端。权限不够时"设备设置"是灰的。
- 软件处于停止状态。运行中不能改设备设置。
- 已经知道对面是什么设备、用哪个 IP 和端口,或者哪个 COM 口和波特率。
打开方式¶
运行端点"设备"菜单 →"设备设置",打开"设备设置窗口",切到"通讯设备"页。

最上面是"设备类型:"下拉框,六选一;下面的参数区会跟着你选的类型整块换掉。各类型的适用场景见通讯总览。
各类型的参数¶
NODEVICE¶
没有参数。选它表示不接通讯设备,运行顺序里也不要放通讯触发和通讯输出(放了会报"通讯输出指令(output#1)不存在"之类的错)。
TCPSERVER(软件当服务端)¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| ip: | 本机要监听的网卡地址 | 填这台工控机上对方能访问到的那个 IP。不确定就填 0.0.0.0,表示所有网卡都听 |
| 端口: | 监听端口号 | 和对方约好,常用 5000 以上。不要用被别的程序占了的端口 |
| 超时时间: | 一次收发最多等几秒 | 默认够用。调大了断线时会卡更久才发现 |
| 发送模式: | ASCII 或 HEX |
发文本命令选 ASCII;对方要收十六进制报文选 HEX |
| 接收模式: | ASCII 或 HEX |
同上,按对方发什么来选 |
只接一个客户端
软件当服务端时同时只接受一个连接。第二个客户端连进来要等第一个断开。
TCPCLIENT(软件主动去连)¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| ip: | 对方服务端的 IP | 先在命令行 ping 通再填 |
| 端口: | 对方服务端的端口号 | |
| 超时时间: | 一次收发最多等几秒 | |
| 发送模式: / 接收模式: | ASCII 或 HEX |
同上 |
发送时如果连接已经断了,软件会自动重连一次并把这条数据重发;重发再失败会报错。
SERIALCOM(普通串口)¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 端口: | COM 口号,例如 COM5 |
在"设备管理器 → 端口(COM 和 LPT)"里查。拔插 USB 转串口线后号可能变 |
| 波特率: | 与对方一致 | 常见 9600 / 19200 / 115200 |
| 校验位: | 与对方一致 | 常见 N |
| 数据位: | 与对方一致 | 常见 8 |
| 停止位: | 与对方一致 | 常见 1 |
| 超时时间: | 一次读最多等几秒 | 默认够用 |
| 发送模式: / 接收模式: | ASCII 或 HEX |
MODBUSRTU(串口 Modbus)¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 端口: | COM 口号 | 同上 |
| 波特率: / 校验位: / 数据位: / 停止位: | 与 PLC 或 IO 控制器的串口设置完全一致 | 有一项不一样就一个字节都读不到 |
| 超时时间: | 一次读写最多等几秒 | 1.0 够用。太小会在 PLC 忙的时候误判读不到 |
这一页没有发送 / 接收模式——Modbus 是二进制协议,收发格式由协议本身定死。从站 ID、寄存器地址这些不在这里填,在"编辑运行顺序"里每条触发 / 输出各自填,见 Modbus RTU / TCP 触发与输出。
MODBUSTCP(网口 Modbus)¶
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 主机地址: | PLC 或网关的 IP | 先 ping 通 |
| 端口: | Modbus TCP 端口 | 标准是 502,除非对方改过 |
| 超时时间: | 一次读写最多等几秒 | 1.0 够用 |
保存之后会发生什么¶
点窗口底部的"确认":
- 软件立刻按新参数重新打开串口 / 重建网络连接,不需要重启软件。
- 参数写进本机的系统配置文件,下次开机还在。
如果校验没过,会弹一个红色的错误框、窗口不会关,并且整页设置一项都不会保存。常见的几条:
| 提示 | 原因 |
|---|---|
| 光源控制器串口为空 / 三色灯和传送带设备串口为空 / 串口为空 | 勾了启用却没选端口 |
| 通讯设备串口与其他设备冲突 | 通讯设备和光源控制器 / 串口收发数据 / 三色灯用了同一个 COM 口 |
| 光源控制器品牌未支持 | "控制器品牌:"选了软件不认的值 |
| 保存设备设置失败,设置未生效。请检查串口/网络参数后重试 | 填了非法值(端口号不是数字之类) |
报错后软件会自动切到出问题的那一页并把光标放到出错的那个框上,照着改就行。
"已就绪 / 未就绪"指示¶
运行界面下方常驻一排状态标签,绿底表示正常,红底表示有问题。只有你确实启用了的设备才会显示。
| 标签 | 含义 |
|---|---|
光源 已就绪 / 光源 未就绪 |
光源控制器串口有没有打开成功 |
通讯(MODBUSRTU) 已就绪 / 通讯(MODBUSRTU) 未就绪 |
通讯设备有没有初始化成功,括号里是当前的设备类型 |
数据串口 已连接 / 数据串口 已断开 |
"串口收发数据"那个串口的实时状态 |
报警灯/传送带 已连接 / 报警灯/传送带 已断开 |
三色灯 IO 板串口的实时状态 |
\"已就绪\"不等于\"对面还活着\"
光源和通讯设备这两项写的是"已就绪",指的是软件这一侧打开成功了。运行中网线被拔、PLC 断电,这两个标签不会立刻变红,要等真的收发失败才会报错停机。"已连接 / 已断开"那两项才是实时的连接状态。
相机没有列进这排标签,因为跨品牌拿不到可靠的在线状态,宁可不显示也不显示假的。
常见问题¶
"设备设置"菜单是灰的点不动。 ①没有用超级管理员登录;②软件正在运行,先点停止。
保存后一直是"通讯(TCPCLIENT) 未就绪"。 软件连不上对方。查:对方服务端起来没有、IP 和端口对不对、防火墙有没有放行、两台机器是不是在同一网段。软件会在后台每秒重试一次,通了会自己变绿。
Modbus RTU 报"failed to open serial port"。 COM 口被别的程序占着(最常见是 PLC 厂家或 IO 板厂家的调试软件没关),或者 COM 口号填错、USB 转串口线的驱动没装。
参数改完关掉窗口,发现没生效。 必须点底部的"确认"。直接点右上角关闭窗口不保存。
相关页面¶
编辑运行顺序:通讯触发与输出¶
"运行顺序"是软件检测一件产品的流水账:先等谁的信号、再让哪几台相机拍、中途要不要给 PLC 回个信、最后什么时候把总结果发出去。 这一页讲这个窗口怎么读、怎么排、每种行是什么意思。
前置条件¶
- 相机工位和检测方案都已经建好、并且是启用状态。
- 通讯设备已经在运行端"设备设置"里配好(选了
NODEVICE就只用排阶段,用不上触发和输出)。 - 软件处于停止状态。运行中打不开这个窗口,会提示"正在运行中, 请先关闭运行界面的运行状态"。
打开方式¶
在调试端左侧任务面板的最上方,点"编辑运行顺序"按钮,打开"运行顺序编辑窗口"。

窗口分三块:
- 左边是阶段树:整件产品按顺序分成几个阶段,每个阶段下面列出它要做的事。树下方有一块提示区。
- 右边是选中行的参数:选中通讯触发、通讯输出、串口收发行时才有内容,选别的行右边是空的。
- 底部是"上移""下移""保存"。
什么是"阶段"¶
一个阶段就是"一组在同一时机拍照的相机"。阶段和阶段之间靠下面几样东西分开:
- 翻面:前一阶段拍完,等产品翻过来再拍下一阶段;
- 通讯触发:等 PLC 再发一次信号;
- 通讯输出:前一阶段拍完先给 PLC 回个信,再进下一阶段。
大部分产线只有一个阶段:等一次触发、所有相机一起拍、发一次结果。只有要翻面、分两次到位、或者中途要回信号时才需要第二个阶段。
阶段树怎么读¶
树有三列:"步骤"、"说明"、"主动触发"。
| 行的样子 | 是什么 | 从哪来 |
|---|---|---|
阶段 1 |
一个阶段。说明列是一句话摘要,如"等 (trigger#1) · 拍 2 台 · 输出 (output#1)" | 右键"在此阶段后新建阶段" |
(Flip) |
翻面:清空所有相机缓存,停下来等产品翻面 | 阶段行右键"翻面开关"。授权里带翻转功能才有这一项 |
(trigger#1) |
通讯触发:停在这里等 PLC 的信号 | 阶段行右键"添加通讯触发",每个阶段最多一个 |
(serial_data1) |
串口收发:从数据串口读一段文本,或者往它发一条指令。说明列写着"开拍前"或"拍完后" | 阶段行右键"添加串口收发(开拍前)/(拍完后)" |
(相机工位名->检测方案名) |
让这台相机按这个检测方案拍一张并检测 | 自动生成,不能手动增删或拖动 |
(output#1) |
通讯输出:把结果发给 PLC。勾了"是否为最终输出"的说明列显示"通讯输出(最终输出)" | 阶段行右键"添加通讯输出" |
| 最后一行灰字 | 软件自动做的收尾,见下文 | 固定,不能选 |
一个阶段里各行的先后是固定的:翻面 → 通讯触发 → 开拍前的串口收发 → 拍照 → 拍完后的输出 / 串口收发。
拍照行是自动的¶
- 每个启用的检测方案自动占一行,新建的检测方案默认进阶段 1;
- 删掉检测方案、停用相机工位,对应的行自动消失;
- 相机工位或检测方案改名,行里的名字自动跟着变,不用重排;
- 同一个阶段里的拍照行按调试端任务树的顺序排列。同一阶段的相机是一起拍的,先后不影响结果。
想让某台相机换到别的阶段,在它的拍照行上右键"移到阶段"。
"主动触发"勾选框¶
只有拍照行有这个勾选框。
- 勾上(主动触发):通讯触发一到,软件立刻让这台相机曝光。曝光时刻由触发点钉死,同一阶段勾了的相机一起曝光。
- 不勾(被动触发):软件不发拍照命令,等相机自己的硬件触发线来信号。
接了 PLC 硬触发线的相机不勾,靠软件触发的相机勾上。详见 PLC 硬触发接线与设置。
这个勾和检测方案的"设置检测方案 → 基础参数设置 → 触发方式"是同一个设置。触发方式选了"模板触发"的检测方案,这一列显示"模板触发"文字、没有勾选框:模板触发自己反复软触发、靠模板检测判断产品到位,没有主动 / 被动之分。要改就去"设置检测方案"里改触发方式。
右键菜单¶
不同的行右键出来的菜单不一样:
| 在哪行上右键 | 菜单项 | 作用 |
|---|---|---|
| 阶段行 | 在此阶段后新建阶段 | 在下面插一个空阶段 |
| 阶段行 | 删除此阶段 | 只有阶段里没有拍照行、而且不止一个阶段时才能点。阶段里的触发、输出、串口收发一起删掉 |
| 阶段行 | 翻面开关 | 给这个阶段开头加上 / 去掉翻面。授权里没有翻转功能时不显示 |
| 阶段行 | 添加通讯触发 | 阶段还没有触发时才出现,编号自动往后排 |
| 阶段行 | 添加通讯输出 | 加在这个阶段拍完之后 |
| 阶段行 | 添加串口收发(开拍前)/(拍完后) | 加在拍照之前 / 之后 |
| 通讯触发行 | 删除通讯触发 | |
| 输出行、串口收发行 | 删除该步骤 / 上移 / 下移 | 上移下移只在同一段里挪 |
| 拍照行 | 移到阶段 → 阶段 N / 新建阶段并移入 | 把这台相机挪到别的阶段;"新建阶段并移入"在最后新开一个阶段 |
| 拍照行 | 切换主动/被动 | 等于点一下"主动触发"勾选框。模板触发的拍照行上是灰的 |
| 翻面行 | 删除翻面 |
底部的"上移""下移":选中阶段行时整个阶段和前 / 后一个阶段对调(阶段里的相机跟着走);选中输出或串口收发行时在本段里挪一位。选中别的行就点,会提示"请先选中一个阶段或输出/串口行"。
改完一定要点"保存",直接关窗口不生效。
下方提示区¶
阶段树下面会实时显示检查结果:
- 红字 = 错误。保存时会问"运行顺序有错误,修好之前无法运行……仍要保存吗?";就算保存了,点"开始运行"时也会被拦下来。
- 灰字 = 提示。不影响运行,只是提醒你看一眼;最多显示 3 条,多了显示"…共 N 条"。
| 文字 | 颜色 | 意思和处理 |
|---|---|---|
| 阶段N: 通讯触发 (trigger#1) 不存在 | 红 | 阶段引用的触发参数丢了(手工改过工程或跨版本迁移)。删掉这个触发再重新添加 |
| 阶段N: 开拍前步骤 … 不存在或不是串口收发 | 红 | 同上,删掉重新添加 |
| 阶段N: 拍完后步骤 … 不存在 / 类型不合法 | 红 | 同上 |
| 阶段N 的最终输出 (output#1) 之后还有阶段M 要拍照…… | 红 | 勾了"是否为最终输出"的输出后面还有阶段要拍照,运行会一直等一个永远出不来的结果。把最终输出挪到最后一个阶段,或者把前面那条的"是否为最终输出"取消 |
| 阶段N 为空 | 灰 | 这个阶段什么都没有。不用就删掉 |
| (output#1) 被引用 2 次 | 灰 | 同一个触发 / 输出 / 串口收发出现在多个地方(一般是老工程迁移来的)。能运行,但没法用组内预拍提速 |
| (trigger#2) 未被任何阶段使用 | 灰 | 参数还在,但没有阶段用它。不用可以不管 |
| …的阶段号 N 超出阶段数,按最后一个阶段处理 | 灰 | 某个检测方案记录的阶段已经被删了,自动归到最后一个阶段。用"移到阶段"放回想要的位置即可 |
三种行的参数¶
选中一行,右边会出现对应的参数区。
通讯触发 (trigger#n)¶
软件停在这里,反复去问对面"产品到位了没",直到条件满足才往下走。
用什么协议由运行端设的设备类型决定:SERIALCOM / TCPSERVER / TCPCLIENT 用上半部分的字符串参数,MODBUSRTU / MODBUSTCP 用下半部分的 Modbus 参数,用不上的那一半是灰的。
- 字符串那套参数见字符串协议(TCP / 串口)。
- Modbus 那套参数见 Modbus RTU / TCP 触发与输出。
通讯输出 (output#n)¶
把检测结果发出去。
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 延时输出: | 执行到这一行之后先等几秒再发,单位秒 | PLC 那边还没准备好收时用它错开,一般填 0 |
| 是否为最终输出 | 勾上 = 发之前先等所有检测方案都跑完,拿到总结果再发 | 一件产品的最后一条输出必须勾上 |
| 其余 | 字符串模式或 Modbus 模式的参数 | 见字符串协议、Modbus |
\"是否为最终输出\"决定要不要等
勾上:软件会一直等到所有启用的检测方案都出结果,才取总结果发出去。总结果对了才发,但会多等一会儿。
不勾:立刻拿当前已有的结果发出去,不等还没跑完的检测方案。好处是可以在流程中段提前给 PLC 一个分拣信号;代价是这时候引用某个还没跑完的检测方案,读到的是上一件的旧结果。所以中途输出只应该发和当前进度有关的东西(比如"第一面已拍完"),不要发总结果。
一件产品可以有多条输出,但只应该有最后那一条勾"是否为最终输出",而且它要放在最后一个阶段。
串口收发数据 (serial_dataN)¶
用"串口收发数据"那个独立串口收一段文本或者发一条指令。要先在运行端"设备设置 → 串口收发数据"页启用并配好串口,否则运行到这一行会报"未设置串口数据收发设备,但配置了数据收发指令。请在设备中配置,或删除指令。"。
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 接收数据 / 发送数据 | 选这一行是收还是发 | |
| 自定义变量名称: | 收到的内容存进这个变量名,以后在输出里用 &变量名 引用 |
由软件自动填成这一行的名字(如 serial_data1),不能改 |
| 读取间隔(s) | 收模式下,多久去读一次,单位秒 | 默认 0.2。信号短就调小到 0.05 |
| 发送指令: | 发模式下要发出去的那串文本 | |
| 添加回车换行符 | 发模式下在末尾补上回车换行 | 对方按行读取(例如仪表、扫码模块)就勾上 |
| 延时(s): | 收到之后 / 发送之前额外等几秒 | 一般填 0 |
接收模式会一直等到收到非空数据为止,收不到就卡在这一行。所以只在确定对方会主动发数据的场合用它。
推荐的排法¶
最常见的一条产线,四台相机、一条 PLC 触发,一个阶段就够:
阶段 1
(trigger#1) ← 等 PLC 说"产品到位"
(相机工位1->正面) ☑ 主动触发
(相机工位2->背面) ☑ 主动触发
(相机工位3->左侧) ☑ 主动触发
(相机工位4->右侧) ☑ 主动触发
(output#1) ← 勾"是否为最终输出",发 PASS/FAIL
要翻面的产线,两个阶段:
阶段 1
(trigger#1)
(相机工位1->正面) ☑ 主动触发
(output#1) ← 不勾"是否为最终输出",告诉 PLC 正面拍完了
阶段 2
(Flip) ← 等产品翻面
(trigger#2)
(相机工位1->背面) ☑ 主动触发
(output#2) ← 勾"是否为最终输出"
要点:
- 每个阶段先加通讯触发。软件在触发到达之前什么都不做,曝光时刻才对得准。
- 同一时机拍的相机放在同一个阶段,靠软件触发的都勾上"主动触发",它们会在触发到达的瞬间一起曝光。
- 最终输出放在最后一个阶段,并勾上"是否为最终输出"。放错了提示区会红字提醒。
- 要在中途给 PLC 回信号,在前一个阶段加一条不勾"是否为最终输出"的输出。
- 产品要翻面时,在第二个阶段上右键"翻面开关"。
树后面还有软件自动做的事¶
阶段树最后那行灰字就是:所有阶段跑完之后,软件会自动依次做保存图片 → 人工复判(工程里启用了才有)→ 写 MES → 写良率统计 → 汇总结果 → 结束本件。这些步骤不能调整顺序。
常见问题¶
运行时报"通讯触发指令(trigger#1)不存在"或"通讯输出指令(output#1)不存在"。 现在打开"编辑运行顺序"时,下方提示区会用红字指出是哪个阶段的哪一条,运行前也会被拦下。把这一条删掉重新添加,重填参数,保存。
一直停在"等待通讯触发(trigger#1)"。 软件没读到 PLC 的信号。按 Modbus 或字符串协议里的排查表逐条查。
最终输出那一步报某个检测方案"运行尚未结束"。 这是勾了"是否为最终输出"却还有检测方案没跑完的安全网。正常不会出现;出现了说明某个检测方案卡住了,看运行日志里最后一条是哪个方案。
改了顺序,运行起来还是老样子。 没点"保存",或者改完没保存工程。改完顺序记得在调试端保存工程。
老工程打开后的运行顺序。 老版本的手排指令表在打开时自动换算成阶段。老工程打开后拍照顺序与原来一致;编辑器下方灰字会列出迁移时的调整,保存一次运行顺序后不再显示。换算完打开这个窗口看一眼,确认阶段划分和主动触发都对,再保存工程。
相关页面¶
字符串协议(TCP / 串口)¶
通讯设备选了 SERIALCOM、TCPSERVER 或 TCPCLIENT 时,软件和对方之间来回发的是一串文本:
对方发一句约定好的话表示"产品到位了",软件检测完再回一句 PASS 或 FAIL。
这一页讲这两句话各在哪里填、能带什么内容、怎么和 PLC 对上。
前置条件¶
- 运行端"设备设置 →通讯设备"页已经选好
SERIALCOM/TCPSERVER/TCPCLIENT并连通,状态条显示"通讯(…) 已就绪"。 - 调试端"编辑运行顺序"里已经在阶段里添加了通讯触发和通讯输出。
触发:等对方说"到位了"¶
在"编辑运行顺序"里选中 (trigger#n) 那一行,右边上半部分就是字符串触发的参数。
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 查询命令启用 | 勾上 = 软件每隔一段时间主动发一句"问话",等对方回复;不勾 = 软件只管听,不发任何东西 | 对方(PLC)会主动推信号就不勾;对方是"你问我才答"的就勾上 |
| 查询指令: | 勾了上面才有用。软件每轮发出去的那句问话 | 和 PLC 程序约好,例如 QUERY |
| 查询间隔: | 两轮之间隔多久,单位秒 | 默认 1 太慢,产线一般调到 0.05~0.2。小于 0.01 会按 0.01 算 |
| 触发指令: | 收到完全等于这串文本时才算触发 | 例如 TRG。大小写和空格都要对得上 |
| 触发延时: | 触发到手之后再等几秒才往下走,单位秒 | 传感器装得比相机靠前时用它补上。一般填 0 |
工作方式:软件不停地循环——(勾了查询就先发一次查询指令)→ 读一次 → 读到的内容和"触发指令:"逐字比对 → 不相等就等"查询间隔"再来一轮;相等就等"触发延时"然后往下执行。
对方带不带回车都能认
软件收到数据后会先把首尾的空格和回车换行去掉再比对。所以 PLC 或调试助手发 TRG、TRG\r\n 都能命中 TRG。
这是\"看到就走\",不是\"变化才走\"
只要读到的内容等于触发指令就往下跑。如果对方把触发字符串一直挂在那儿不撤,软件跑完一轮回来一看还在,就会再拍一次。让 PLC 发完就清,或者改用产品经过式的信号。
输出:把结果发出去¶
选中 (output#n) 行,右边是输出参数。"输出模式:"三选一,决定发出去的内容长什么样。
固定指令¶
最简单也最常用:总结果通过就发"通过时指令:"里那串字,不通过就发"失败时指令:"里那串。
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 通过时指令: | 总结果 OK 时发这串,默认 PASS |
PLC 那边按什么解析就填什么 |
| 失败时指令: | 总结果 NG 时发这串,默认 FAIL |
固定指令模式必须能拿到总结果,所以这条输出行要勾上"是否为最终输出"。
表达式¶
把若干段内容按顺序首尾相接拼成一串发出去,每一段可以是固定文字,也可以是某个检测结果。
用法:
- "输出模式:"选"表达式"。
- 点"编辑输出信息",弹出一个"输出信息定制"的小窗口。
- 点窗口里的
...按钮加一行。每行是一个可以直接打字、也可以下拉选的输入框。 - 要引用检测结果,就从下拉里选一个变量名(见下面的变量表),这时行首的小锁图标会变成"已锁定",保存时软件会自动给它加上
&前缀。要发固定文字,就直接把字打进去,小锁保持"未锁定"。 - 点垃圾桶图标删掉某一行。关掉这个小窗口就算保存。
拼接规则:
- 固定文字段:原样拼上去。
- 变量段:结果是"通过 / 不通过"这种是非值时,拼上"通过时指令:"或"失败时指令:"里那串字;结果是文字或数值(条码内容、卡尺读数、SN)时,原样拼上去。
举例:依次放 SN:、变量 SN、,、变量 总结果,发出去就是 SN:AB1234,PASS。
字典¶
发一段 JSON 文本,适合上位机按字段解析。
用法和表达式一样,只是每行多了一个左边的输入框用来填键名,右边填值(固定文字或选一个变量)。发出去的样子是 {"键1": "值1", "键2": "值2"}。
规则:
- 值里引用变量的,替换成该变量的结果;是非值同样换成"通过时指令:"/"失败时指令:"里的字。
- 只支持一层,值不能再是一个列表或字典。
- 中文键名会原样发出去,不会被转成
\uXXXX转义。
能引用哪些变量¶
下拉框里列出来的就是当前工程能用的全部变量:
| 变量 | 是什么 | 值的样子 |
|---|---|---|
相机工位名->检测方案名 |
每个启用的检测方案一条。这个方案本轮通没通过 | 是非值 |
总结果 |
这一件产品的最终结论 | 是非值 |
检测时间 |
取结果那一刻的时间 | 例如 2026-09-14 10:23:41 |
SN |
这一件的 SN 码 | 文本。工程里没开 SN 检查时是空串 |
| 自定义变量 | 你自己挂上去的检测项输出 | 文本或数值 |
整件逻辑->名字 |
每条启用的整件逻辑检测一条,存成 &整件逻辑->名字。只在所有方案跑完以后才有,只能用在勾了"最终输出"的输出里 |
是非值 |
自定义变量怎么来的:
- 在调试端的检测项上点右键 →"设为自定义变量",给它起个名字。能这么挂的检测项类型有:字符识别、码检测、条码字符对、可变区域、卡尺。挂上之后,这个检测项识别出来的内容(条码内容、识别出的字符)或量出来的数值(卡尺毫米数)就能在输出里引用。
- 在"编辑运行顺序"里插的每一行"串口收发数据"(接收模式)会自动产生一个同名变量,存的是这一行收到的那段文本。
- 想看现在有哪些变量、当前值是多少,在调试端"菜单"→"查看自定义变量"里看。
变量名不能叫 SN、总结果、检测时间
这三个是软件保留的名字,新建自定义变量时用它们会提示"变量名已存在或非法"。
另外,引用了一个后来被删掉的变量,运行到这条输出时会报错停机,报错里会列出当前所有可用的变量名。
编码、换行和 HEX 模式¶
- 编码是 GBK。文本发出去和收进来都按 GBK 编解码,所以中文能正常往返。纯英文数字的指令不受影响。
- 串口模式下软件会自动补回车换行:
SERIALCOM且发送模式是ASCII时,发出去的每条数据末尾如果没有换行符,软件会补上\r\n。TCP 的两种模式不会自动补,需要换行就自己在指令末尾加。 - 收数据一律去首尾空白,所以对方带不带
\r\n都能匹配上。 - HEX 模式:发送模式选
HEX时,你填的指令要写成合法的十六进制字符串(字符个数必须是偶数,可以带空格),软件按十六进制转成字节发出去。接收模式选HEX时,收到的字节会显示成小写十六进制、每字节之间一个空格,例如01 03 00 01——这时"触发指令:"也要按这个格式填。
联调:用调试助手冒充 PLC¶
真 PLC 程序还没写好、或者怀疑是软件这边的问题时,用一个串口 / 网络调试助手先把链路跑通。
串口(SERIALCOM):
- 用一根 USB 转串口线和一个串口对串口的交叉线(或者一对虚拟串口软件)把两个 COM 口连起来。
- 软件这边"设备设置"填其中一个 COM 口,调试助手打开另一个,波特率等参数两边一致。
- 点运行。软件停在"等待通讯触发(trigger#1)"。
- 在调试助手里发出"触发指令:"里填的那串字(例如
TRG),软件应该立刻往下走。 - 检测完成后,调试助手应该收到
PASS或FAIL。
网络(TCPSERVER):软件当服务端,调试助手建一个 TCP 客户端连到软件填的 IP 和端口;剩下步骤同上。
网络(TCPCLIENT):反过来,调试助手先建一个 TCP 服务端监听,再在软件里填这个 IP 和端口。
常见问题¶
一直停在"等待通讯触发(trigger#1)"。 按顺序查:
- 状态条上"通讯(…) 已就绪"是不是绿的。红的说明串口/网络根本没通,回设备设置。
- 调试助手里发的那串字和"触发指令:"是不是一模一样(注意大小写、有没有多打空格)。
- 发送模式 / 接收模式的
ASCII和HEX两边对不对得上。对方发ASCII而软件按HEX收,收到的是一串十六进制数字,永远匹配不上。 - 串口是不是被别的程序占着。
PLC 收到的中文是乱码。 对方按 UTF-8 解析了。软件这边固定用 GBK,请对方改成 GBK(在很多 PLC 和上位机里叫 GB2312 / ANSI)。
PLC 收不到结果,或者收到一半。
串口模式下软件会自动补 \r\n,TCP 模式下不会。对方如果是"按行读"的,TCP 模式要在"通过时指令:""失败时指令:"末尾自己想办法加分隔符(用表达式模式在末尾拼一段固定文字)。
输出里引用的某个检测方案,值总是上一件的。 这条输出行没勾"是否为最终输出"。不勾就不等检测跑完,拿到的可能是旧值。见编辑运行顺序。
报错说某个变量找不到。 引用的变量被删了(检测方案被删 / 禁用,或者自定义变量被删)。打开"编辑输出信息"重新选一个。
相关页面¶
Modbus RTU / TCP 触发与输出¶
通讯设备选了 MODBUSRTU(串口)或 MODBUSTCP(网口)时,软件和 PLC 之间不是发字符串,而是读写寄存器和线圈:
软件盯着 PLC 的某个地址,值一变成约定的数就拍照;检测完再往另一个地址写 1 或 0 告诉 PLC 结果。
这一页讲这两头的地址和值怎么填。
前置条件¶
- 运行端"设备设置 →通讯设备"页已经选好
MODBUSRTU或MODBUSTCP并填好串口 / IP 参数,状态条显示"通讯(MODBUSRTU) 已就绪"。 - 手里有 PLC 侧的地址表:哪个地址代表"产品到位",结果要写到哪个地址。
- 调试端"编辑运行顺序"里已经在阶段里添加了通讯触发和通讯输出。
只有选了 Modbus,这些参数才点得动
"编辑运行顺序"窗口里 Modbus 的参数和字符串的参数是并排放的。设备类型不是 Modbus 时,Modbus 那一半全是灰的,反之亦然。
触发参数¶
在"编辑运行顺序"里选中 (trigger#n) 行,填右边下半部分:
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 从站ID: | 对方设备的 Modbus 站号 | 串口的 IO 控制器出厂多半是 1;PLC 看它自己的设置。Modbus TCP 有些网关也要求填对站号 |
| 寄存器类型: | 四选一,决定用哪个功能码去读 | 见下表 |
| 地址: | 要读的那个线圈 / 寄存器的地址 | 填协议地址,不要加 1,也不要写成 40001 这种。详见下面的"地址怎么填" |
| 触发条件值: | 读到的值等于这个数时就算触发 | 常用 1。PLC 那边写什么就填什么 |
| 读取间隔: | 两次读之间隔多久,单位秒 | 默认 0.2 偏慢,信号短容易漏。产线常用 0.05。小于 0.01 会按 0.01 算 |
| 触发延时: | 触发到手之后再等几秒才往下走,单位秒 | 传感器装在相机前面时用它补上。一般填 0 |
寄存器类型和功能码的对应¶
| 下拉里的名字 | 功能码 | 读的是什么 |
|---|---|---|
READ_COILS |
01 | 线圈(可读可写的位) |
READ_INPUT_REGISTERS |
04 | 输入寄存器(只读的 16 位字) |
READ_HOLDING_REGISTERS |
03 | 保持寄存器(可读可写的 16 位字) |
READ_DISCRETE_INPUTS |
02 | 离散输入(只读的位) |
线圈和离散输入读回来的是 0 或 1,寄存器读回来的是 0~65535 的整数。所以读线圈时"触发条件值:"只能填 0 或 1。
老版本里 READ_DISCRETE_INPUTS 不能用
早期版本虽然下拉里有这一项,但选了它实际发出去的是功能码 03(读保持寄存器),读的是完全不同的地址空间。当前版本已经改成真正的功能码 02。
两条实用建议:
- 现场机器还没升级时,不要选
READ_DISCRETE_INPUTS,改用READ_HOLDING_REGISTERS并填对应的寄存器地址。 - 老工程里选了
READ_DISCRETE_INPUTS而且"恰好能用"的,升级之后读到的值会变,必须现场复核一遍。
地址怎么填¶
Modbus 有两套地址写法,很容易混:
- 协议地址:从 0 开始,就是报文里真正发出去的那个数。
- PLC 组态手册上的地址:常写成
00001、40001、4x0001这种,是协议地址加 1、再加上区域前缀。
软件里一律填协议地址。对照关系:
| 手册上写 | 软件里填 |
|---|---|
线圈 00001 |
0 |
保持寄存器 40001 |
0 |
保持寄存器 40011 |
10 |
厂家文档写 0x3000 |
12288(十六进制转十进制) |
拿不准就先用 PLC 厂家或 IO 板厂家的调试软件读一次,能读到值的那个地址号,减 1 之后填进来。
这是电平触发,不是边沿触发
软件只是反复读那个地址、看值等不等于"触发条件值:"。值一直挂在那里不撤,软件跑完一轮回来看还在,就会再拍一次,一直重复。所以 PLC 那边必须在触发之后把这个值清掉,或者用产品经过式的瞬时信号。
输出参数¶
选中 (output#n) 行,填右边:
| 项 | 填写/含义 | 调参建议 |
|---|---|---|
| 从站ID: | 要写的那台设备的站号 | 通常和触发用同一个 |
| 寄存器类型: | WRITE_COIL(写线圈)或 WRITE_HOLDING_REGISTER(写保持寄存器) |
结果只有通过/不通过两种用线圈就够;要发数值(卡尺读数)必须用保持寄存器 |
| 地址: | 要写的地址,同样是协议地址 | |
| 写入值: | 要写什么。可以从下拉里选一个变量,也可以直接打一个整数 | 见下面 |
| PASS/NG: | 两个数字框,中间一个斜杠。选的变量是"通过/不通过"这种是非值时,通过写左边那个数、不通过写右边那个数 | 默认是 1 / 0。PLC 约定反过来就填 0 / 1,也可以填 2 / 3 之类 |
| 延时输出: | 执行到这一行先等几秒再写,单位秒 | 一般填 0 |
| 是否为最终输出 | 勾上 = 写之前先等所有检测方案跑完 | 发总结果的那一条必须勾上 |
"写入值:"填什么¶
这是一个可以下拉选、也可以直接打字的框:
- 从下拉里选一个变量:下拉里列的是当前工程能引用的全部变量(
相机工位名->检测方案名、总结果、检测时间、SN,你自己挂的自定义变量,以及启用的整件逻辑检测整件逻辑->名字——它只在所有方案跑完后才有,只能用在勾了"是否为最终输出"的那条里)。选了之后软件会自动带上&前缀存起来。 - 直接打一个整数:例如固定写
1。只能是整数,打别的会提示"输出值必须是整数"。
变量的值最后怎么变成写进寄存器的数:
| 变量的值 | 写进去的数 |
|---|---|
通过 / 不通过(是非值,如 总结果、各检测方案结果) |
通过写"PASS/NG:"左边那个数,不通过写右边那个数 |
| 整数(如某些自定义变量) | 原样写 |
| 小数(如卡尺量出来的毫米数) | 见下面的浮点数规则 |
文字(如 SN、检测时间、条码内容) |
不支持,运行到这里会报错停机 |
SN 和条码内容发不进 Modbus
Modbus 寄存器只能放数字。要把 SN 发给 PLC,只能改用字符串协议,或者让 PLC 从别的渠道拿。
浮点数占两个寄存器¶
"写入值:"选的变量如果是小数(最典型的是卡尺量出来的毫米数),软件会把这个 32 位浮点数拆成两个 16 位寄存器,一次写到"地址:"和它的下一个地址。
这有三个后果:
- 无论"寄存器类型:"选的是线圈还是保持寄存器,浮点数一律写保持寄存器(线圈放不下 32 位)。
- 下一个地址会被占掉,排 PLC 地址表时要给它留出两个字的位置。
- 字节序默认是小端。PLC 那边读出来的数不对(数量级离谱或者正负颠倒),多半是两个字的顺序或字内字节序不一致,在 PLC 侧调换一下即可。
关于功能码的两条注意¶
- 写用的是"写多个"功能码:写线圈用功能码 15(写多个线圈)、写寄存器用功能码 16(写多个寄存器),即使只写一个点也是如此。现场确实有只认 15 / 16 不认 05 / 06 的 PLC,这是有意为之。反过来,如果你的 PLC 只开放了 05 / 06,需要在 PLC 侧或网关侧放开 15 / 16。
- 读一次只读一个点:软件每次只读一个线圈或一个寄存器,不做批量读。地址表里把触发位单独放一个地址即可。
失败时会怎样¶
- 读失败(串口没接好、PLC 没响应、地址不存在):软件不报错、不停机,当作"这一轮没读到",按"读取间隔:"继续下一轮。表现就是一直停在"等待通讯触发"。
- 写失败(对方返回异常、连接断了):会停机,弹出
Modbus RTU write data error或Modbus TCP write data error加上具体原因。 - 连接断了:软件后台每秒自动重连一次,通了自己恢复,状态条会变回绿的。
联调步骤¶
- 先用 PLC 厂家或 IO 板厂家自带的调试软件,确认那个触发地址在产品到位时确实会变成你要的值。记下读回来的那个数,它就是"触发条件值:"要填的。
- 关掉厂家的调试软件(串口只能被一个程序占用,不关就轮到 labeldetect 打不开串口)。
- 在运行端"设备设置"里填好串口 / IP 参数,确认状态条变绿。
- 在"编辑运行顺序"里按上面的表填触发参数,点"保存",保存工程。
- 点运行。日志应该停在"等待通讯触发(trigger#1)"。
- 让产品过一次(或在 PLC 里手动置位),日志应该依次出现"通讯触发(trigger#1)完成"→ 各相机拍照 → 检测结果 →"通讯输出(output#1)完成"。
- 在 PLC 里确认结果地址收到了预期的数。
常见问题¶
一直停在"等待通讯触发"。
- 状态条是不是绿的"通讯(MODBUSRTU) 已就绪"。红的先查串口 / 网络。
- 串口:波特率、数据位、校验位、停止位四项和对方完全一致吗?RS485 的 A、B 两根线有没有接反(对调一次试)。
- 从站 ID 对不对。
- 地址是不是多加了 1,或者填成了
40001这种手册写法。 - 寄存器类型选错了(选成
READ_DISCRETE_INPUTS而设备只支持 03)。 - 厂家调试软件是不是还开着占了串口。
- "触发条件值:"和实际读回来的数一样吗。
软件报 Modbus RTU failed to open serial port。
串口被别的程序占着,或者 COM 口号填错、USB 转 485 的驱动没装。
软件报 Modbus TCP failed to connect。
IP 或端口不通。先 ping 一下,再确认 Modbus TCP 端口(标准是 502)和防火墙。
PLC 那边看到软件周期性断开重连。 这是底层通讯库的已知行为:累计几次超时之后客户端会主动断链,下次读写时自动重连。只要业务上没丢数据就不用管;频繁出现说明线路质量差或 PLC 响应慢。
写结果报错停机。 看错误里的地址和从站 ID 是不是 PLC 允许写的。也可能是 PLC 只认功能码 05 / 06,见上面"关于功能码的两条注意"。
同一个产品拍了好多次。 触发是电平判断,PLC 没把触发值清掉。见上面的"这是电平触发,不是边沿触发"。
一个完整的现场实例¶
不用 PLC、只用一个传感器加串口 IO 控制器的完整接线和参数,见传感器经串口 IO 控制器触发拍照。那一页从接线、用厂家软件验证、到软件里填哪几个格子都写全了,照着做就能跑通。
相关页面¶
MES 对接¶
工厂里的 MES 系统要知道每一件产品检测的结果。这一页讲检测软件怎么把结果交出去、 断网或 MES 不回话时软件会怎么表现、以及每件产品的 SN 码从哪来。
先搞清分工¶
检测软件不直接连 MES 服务器。它只负责把每一件的结果整理成一个数据包,交给同一台工控机上另一个独立的程序——我们称它"MES 上传程序"。那个程序才知道 MES 的地址、账号和规程编号,由它去登录、去写库。
所以:
- MES 的地址、账号、密码、规程 ID 不在检测软件里配,在 MES 上传程序那边配。检测软件的菜单里没有"MES 设置"这一项。
- 两个程序之间走本机回环网络,不占外部网口。MES 上传程序开着并且能正常响应,检测软件才认为"MES 在线"。
- 每个客户的 MES 接口字段不一样,是在打包时按项目定制的,现场改不了。要改字段请联系售后。
老版本里有、现在没有的
2.0 时代的这几样已经取消:软件目录下的 MES 配置文件、菜单里的"MES 设置"、界面上手动切换"在线 / 离线"、以及"检测前先问 MES 这件能不能做"的卡控询问。现在只有"检测完上报结果"这一个方向,过站与否由 MES 通过上报的回复来决定(见下面的 QC)。
界面上和 MES 有关的东西¶
| 位置 | 是什么 |
|---|---|
| 运行端顶部的在线 / 离线图标 | 检测软件和 MES 上传程序之间通不通。每 1.5 秒刷新一次 |
| 运行端的 MES 信息标签 | 显示 MES 每次回过来的那句话。底色灰 = 成功,红 = 失败 |
| 运行端的大结果标签 | MES 上报失败时会显示"MES上传失败"并播 NG 提示音 |
| 运行端的 MES 未上传告警条 | 一条大号红底白字的横幅,出现在大结果标签正上方。只有真的发生过上传失败才会出现,平时不占版面 |

三个能调的开关¶
NG 是否上传 MES(运行端)¶
运行端"设置"菜单 →"打开系统设置",找到"NG是否上传MES"。
- 不勾(默认):检测不通过的件不往 MES 报,MES 信息标签会显示"设置了NG时不上传MES"。
- 勾上:不管 OK 还是 NG 都报。
按客户的 MES 规则来定。多数产线只报 OK 件,NG 件走返修流程另行处理。
启用 MES 上传(运行端 设置 → 系统设置 → 通用设置)¶
运行端"设置"菜单 →"打开系统设置"→"通用设置"页,找到"启用 MES 上传"。默认勾上,老现场行为不变。
- 勾上:按上面的流程往 MES 报结果;下面的"NG是否上传MES"这时才可用。
- 不勾:不写 MES、不留痕、不记错误、不弹告警条;信息区每件只打一行"MES 未启用(系统设置), 不写入Mes系统"。就算 MES 上传程序还连着,汇总结果里也不会出现"写入Mes结果"那一行。
不接 MES 的现场用这个开关,不要只去藏告警条。
MES 未上传告警条 显示 / 隐藏(调试端)¶
顶部"设置"→"工程设置"(在运行页、调试页都能开),找到"MES 未上传告警条",选"显示"或"隐藏"。这是跟着工程走的设置。
不用 MES 的现场去系统设置把"启用 MES 上传"勾掉;"隐藏"只管红条:隐藏的只是那条横幅,本地留痕和计数照常做。
上报失败时软件怎么表现¶
分三档,行为完全不同,现场要能区分:
| 情况 | 软件的表现 | 要做什么 |
|---|---|---|
| 连不上 MES 上传程序,或者数据没送出去 | 红色告警条亮起,写明累计多少件没上传和留痕文件路径;信息区打红字;检测继续跑,不停机 | 恢复连接后把留痕文件里的数据补传给 MES |
| MES 收到了,判为 NG 或 RE(重复过站) | 大结果标签显示"MES上传失败",播 NG 音;这一件不计入直通率 | 按 MES 的结论处理这件产品 |
| MES 收到了,判为 QC(品质管控) | 停机,弹出 MES 返回的原因;同时良率统计被锁定 | 品质人员处理完之后,由超级管理员在运行端点"清空良率检测结果"解锁 |
断线不会停线
这是刻意设计的:MES 那一侧出任何问题都不能把产线停下来。所以"MES 断了"这件事只会以告警条的形式提示,产品照常检测、照常出结果。这意味着漏报是有可能发生的,现场必须留人看那条告警条。
没上传的数据留在哪¶
每一件没能上传的产品,软件都会把完整数据追加写到本机的一个文件里:
~/.labeldetect/mes_pending/mes_pending_年月日.jsonl
(~ 是当前 Windows 用户的主目录,例如 C:\Users\Administrator。)
按天分文件,每行一件,内容是这件产品的 SN、结果、缺陷描述、时间等。
软件不会自动补传
这个文件只保证数据不丢。补传要人工做,或者用售后提供的补传工具。连接恢复时软件会在信息区再提醒一次累计多少件需要补传。
告警条在两种情况下消失:MES 恢复连接时,或者下一轮运行开始时(已经落盘的留痕文件不会被动)。
SN 码从哪来¶
上报给 MES 的每一件都要有 SN。SN 有三个来源,取哪个由设置决定:
| 设置 | SN 来自 |
|---|---|
| 检测 SN 开着 + 没用外接扫码枪 | 工程里被设成"SN"的那个检测项识别出来的内容 |
| 检测 SN 开着 + 用了外接扫码枪 | 操作员用扫码枪扫到的内容 |
| 检测 SN 关掉 | 一个时间戳,格式 20260914_102341 |
开关在哪¶
顶部"设置"→"工程设置"(在运行页、调试页都能开),把"检测SN:"设成 enable 或 disable。
怎么指定哪个检测项出 SN¶
- 进调试端,进入编辑模式,选中要用的码检测或条码字符对检测项。
- 点右键,选"设置为SN码"。
- 保存工程。
一个工程里只能有一个 SN 检测项,设了新的旧的自动取消。运行中不能改,会提示"正在运行中, 请先关闭运行界面的运行状态"。
开了 SN 检查却没指定检测项,会出问题
保存工程时会提示"未设置SN检测项!";真跑起来会直接报错停机。另外,开了 SN 检查时,SN 读不出来(空)这一件就直接判 NG,即使其它检测项全部通过。条码印得糊、框画得太紧导致读不出来,表现就是"明明没缺陷却一直 NG",这时先看信息区有没有"当前SN条码为空"。
自定义比对:把某个识别结果也带上去¶
除了 SN,还可以把别的检测项的识别结果一起报给 MES:
- 在调试端编辑模式下选中检测项,点右键选"设为自定义变量",给它起个名字。
- 能这么挂的检测项有:字符识别、码检测、条码字符对、可变区域、卡尺。
- 起名时不能用
SN、总结果、检测时间这三个保留名。
挂上之后,这些变量会随每一件的数据一起上报给 MES(在数据包里单独成一组),也可以在通讯输出里引用,见字符串协议(TCP / 串口)。
想看当前有哪些自定义变量、值是多少,在顶部"菜单"→"查看自定义变量"里看(要先登录)。
常见问题¶
一直显示离线。 MES 上传程序没启动,或者它崩了。先确认那个程序在任务栏 / 任务管理器里还在。它和检测软件必须跑在同一台工控机上。
告警条一直亮着,数字越涨越大。 这些件的数据都没进 MES。先恢复连接(见上一条),再把留痕文件交给负责补传的人。数字会在下一轮运行开始时清零,但数字清零不代表数据补上了。
一上报就停机,提示一串 MES 返回的话。 MES 判了 QC。这是 MES 主动要求停线,按 MES 提示的原因处理;处理完让超级管理员点"清空良率检测结果"解锁。
结果标签一直显示"MES上传失败",但产品看着没问题。 MES 那边把这件判成了 NG 或 RE(重复过站)。RE 常见于同一件产品被重复检测。这类件不计入直通率。
NG 的件没上报。 运行端系统设置里"NG是否上传MES"没勾。
相关页面¶
获取远程支持¶
遇到现场问题时,可以让厂家工程师直接连到这台检测电脑上看日志、查工程、调参数。连接只在你点了"发起支持"之后才可能发生,点"结束支持"或关掉窗口就断开,到点也会自动断开。
需要准备什么¶
- 远程支持助手:厂家单独提供的
supportagent.exe,一个文件,放在任意目录即可。不用安装、不用管理员权限、不装驱动、不改电脑网络。 - 远程支持账号和密码:装机时厂家给的。第一次连上后会记在本机,以后不用再输。
- 这台电脑能上网(能打开网页就行)。
怎么发起¶
- 双击
supportagent.exe,弹出"远程支持"小窗口。 - 填账号、密码(已记住的话会自动填好),点 发起支持(或在密码框按回车)。
- "本机在线"一行会依次显示"正在检查网络… / 正在申请授权… / 正在连接…",几秒后变成绿字 是,会话编号 xxx xxx。
- 把 会话编号 告诉厂家工程师。工程师连入时,"远程已连入"会变成绿字 是,1 个连接;工程师断开后回到"否"。

窗口最下面一行会写明最晚几点自动结束(默认 4 小时);支持期间不要关这个窗口。
怎么结束¶
三种都可以:
- 点窗口里的 结束支持。
- 直接关窗口,它会问"是否结束",点"是"。
- 不管它,到点自动结束(结束前 10 分钟会提示一次)。
结束后这台电脑立刻从支持网络里消失,工程师再也连不上,下次需要时重新发起。
发起不了怎么办¶
发起失败时窗口最下面一行会显示红字原因:

| 红字 | 意思 | 怎么办 |
|---|---|---|
| 解析不到支持服务器的域名,请检查这台电脑能否上网 | 电脑不能上网 | 先确认能打开网页 |
| 连不上支持服务器 / 连不上中继服务器,请检查网络或防火墙 | 能上网,但工厂防火墙拦了对应端口 | 请 IT 放行到 derp.gothrough.cn 的 TCP 8443、8444 端口 |
| 连不上 Tailscale 控制服务器,请检查网络或防火墙 | 出境网络受限 | 换个网络试一次,仍不行联系厂家 |
| 账号或密码错误 / 账号已停用 | 账号问题 | 联系厂家核对或重置 |
| 密码连续错误次数过多,账号已暂时锁定 | 连错 5 次 | 15 分钟后再试 |
| 厂家已暂停远程支持服务 | 厂家侧暂停了 | 联系厂家 |
| 已有一个远程支持窗口在运行 | 上一次没关干净 | 任务管理器里结束 supportagent.exe 再双击 |
安全说明¶
- 每次发起都是一把一次性钥匙,结束即作废;只有厂家指定的工程师账号能连入。
- 工程师在这台电脑上做的操作都有记录,存在
C:\Users\<用户名>\AppData\Local\supportagent\sessions\,可随时查看。 - 助手不会自己发起连接,也不会常驻后台;不开窗口、不点"发起支持",就没有任何连接。
常见问题¶
这一章收录现场最常遇到的故障和它们的排查顺序。每条都按同一个格式写:现象是你在软件里看到的东西(尽量照抄了软件的原话),先查是按可能性从高到低排的检查清单,解决是具体怎么做。
报修之前先做三件事
- 把弹窗或运行信息区的报错原文截图,不要只说"报错了"。
- 记下出问题的时间点(几点几分),日志按时间排,有时间点我们能直接定位。
- 运行端右下角点"导出诊断包",把导出的 zip 一起发过来(里面有日志、崩溃与挂死记录、节拍库、系统设置和当前工程,不含图片)。
相机与取像¶
相机连不上,列表里没有相机¶
现象
新建或设置相机工位时,相机列表一片空白;或者弹出一个警告框,末尾用红字写着"当前仅可使用离线模式"。
先查
- 相机电源灯亮不亮、网线/USB 线是否插紧。
- 网口相机的 IP 和电脑网卡是不是同一个网段(相机厂家的工具里能看到相机 IP)。
- 相机厂家的自带软件(如 MVS)是不是开着——同一台相机只能被一个程序占用,厂家软件开着,本软件就枚举不到。
- 相机驱动/SDK 有没有装。弹出"当前仅可使用离线模式"基本就是这一条:相机驱动没装,或装的位数不对。
- 电脑上是否装了多张网卡,相机接在了没配 IP 的那张上。
解决
- 关掉相机厂家的软件,回到本软件重新打开相机工位设置窗口。
- 网段不符:把电脑网卡改成和相机同网段(例如相机
192.168.1.10,网卡设192.168.1.100,掩码255.255.255.0),或用厂家工具把相机 IP 改到网卡所在网段。 - 驱动没装:装上相机厂家的驱动包后重启电脑,再开软件。
- 相机能在厂家软件里出图、却在本软件里看不到,把这个情况连同相机型号一起告诉我们。

取不到图,提示"读取图片超时"¶
现象
运行时停住,弹出或在信息区打印 相机工位名 读取图片超时;或者相机工位设置窗口里点取图,提示"相机取图失败:"。
先查
- 触发方式设错是最常见的:工程按软触发做的,相机却被设成了外部触发,于是相机一直在等一个永远不来的硬件信号。打开相机设置窗口的 触发 页,看选的是"连续模式"、"软触发模式"还是"外部触发模式"。
- 用外部触发的,查触发线接没接、传感器/PLC 有没有真的发信号、触发边沿(上升沿/下降沿)选得对不对。
- 曝光时间是不是设得过长(例如设成几百毫秒),一张图本身就要那么久。
- 相机工位上设的"设置相机读图超时(s)"是不是太短。
- 相机中途掉线:信息区里前面有没有
相机设备是否在线: False这类记录。
解决
- 没接触发线的场合,把相机设成"软触发模式",由软件发软触发。
- 接了触发线的场合,保持"外部触发模式",先用厂家软件确认能被硬件触发出图,再回本软件。
- 曝光过长就调小曝光、把光源调亮补回来。
- 读图超时时间按实际节拍放宽(一般留到单件节拍的两倍)。
照片上有黑色横条¶
现象
图上出现一条或几条明显的黑色横带,位置不固定,有时几张才出现一次。
先查
- 光源是不是被灯控器设成了闪烁(频闪/脉冲)模式。软件本身不驱动相机的频闪输出,光源按常亮使用;出现黑条基本都是光源在闪、而闪的节奏和相机曝光对不上。
- 环境里有没有其他频闪光源照进视野(日光灯、其他工位的爆闪灯)。
- 曝光时间是不是比光源的一个闪烁周期还短。
解决
- 把灯控器改成常亮输出,这是最直接的办法。
- 必须用频闪的,让灯的亮起时间完整覆盖相机曝光时间(灯先亮、后曝光、灯后灭)。
- 加遮光罩挡掉环境杂光。
- 适当加长曝光时间,让它跨过整个闪烁周期。
偶发花屏、半张图、全黑图¶
现象
大部分时候正常,偶尔来一张错位的细横线图、半张图或全黑图;跟着就出现莫名其妙的 NG、条码读不出、SN 为空、计数对不上。
先查
这是网口(GigE)相机丢包的典型表现。按下面顺序查网卡设置:
- 网卡的巨帧(Jumbo Frame / 巨型帧)有没有开到最大(一般 9014 字节)。
- 网卡的接收缓冲区(Receive Buffers)是不是还停在默认的小值,应调到最大。
- 是不是多台相机共用一个网口或一个交换机口——带宽被分掉了。
- 网线质量与长度(超五类以上、尽量短、别和动力线捆在一起)。
- 电脑 CPU 是不是被别的程序占满(相机收图线程抢不到 CPU 也会丢包)。
解决
- 在"设备管理器 → 网络适配器 → 该网卡 → 属性 → 高级"里,把巨帧调到最大、接收缓冲区调到最大,然后重启电脑。
- 每台相机接独立网口;做不到就换千兆以上的交换机并确认上行带宽够。
- 软件已经带了一层兜底:检测到丢包的坏帧会自动重新拍一次(最多两次)。这只是补救,根子还在网卡设置上,不要靠它长期跑。
拍早了、拍晚了、前后两张颠倒¶
现象
拍到的画面比产品实际位置早一点或晚一点;多相机时偶尔出现两张图对调、拍到上一件产品。
先查
- 这一组相机的拍照行有没有勾上"主动触发"。
- 触发信号到软件之后,中间是不是还夹了别的耗时指令。
- 通讯触发里的"触发延时"设了多少。
解决
- 打开调试端的"编辑运行顺序"窗口。
- 找到拍照那一行(形如
(相机工位名->检测方案名)),勾上它的"主动触发"。 - 同一组要同时曝光的相机放在同一个阶段里(不在的右键"移到阶段"),每一行都勾上。勾过之后,通讯触发信号一到,整组相机立刻同时曝光,后面的步骤只是来取已经拍好的图,不会再被前面的耗时步骤拖偏。
- 还需要微调时间的,用通讯触发参数里的"触发延时"来对。

换了相机或线以后检测框对不上模板¶
现象
图能拍到,但画面上的检测框整体偏离了标签,原本对准字符的框压到了空白处,结果大面积 NG。
先查
- 这个检测方案的标签外框里,"是否进行矫正"有没有勾上。矫正关着的时候,检测框是按模板图上的绝对位置贴的,相机一动就全偏。
- 相机的安装位置、镜头焦距、工作距离是不是和拍模板图时一致。
- 视野方向有没有变(相机装反、镜像翻转)。
- 同一个工程里,有的相机工位开了定位、有的没开。
解决
- 相机位置只是轻微变动:打开标签外框的设置,勾上"是否进行矫正",必要时再勾"透视矫正",然后点"训练"。
- 相机位置、镜头或工作距离有实质变化:重拍模板图最省事——重新取图、设为主模板图,再逐个检测项确认框的位置,最后"训练工程"。
- 整体只偏了固定的一段距离:用调试端的"ROI移动"一次性把所有框平移过去,不用一个个拖。
触发与通讯¶
一直停在"等待通讯触发"¶
现象
运行界面的信息区反复打印 等待通讯触发(trigger#1),再没有下文,产品过来了也不拍。
先查
- 串口是不是被别的程序占着(厂家调试软件、串口助手、另一个本软件实例)。
- COM 口号有没有变。USB 转串口的线换个插口,Windows 就可能重新分配 COM 号。
- RS485 的 A、B 两根线是不是接反了。
- "从站ID"、"波特率"、"校验位"、"数据位"、"停止位"和对方设备是否一致。
- "地址"和"寄存器类型"选得对不对。读线圈选
READ_COILS,读离散量选READ_DISCRETE_INPUTS,读保持寄存器选READ_HOLDING_REGISTERS,读输入寄存器选READ_INPUT_REGISTERS——选错类型读的是完全不同的一片地址。 - "触发条件值"和 PLC 实际写进去的值是否相等。
解决
- 关掉所有会占串口的软件,只留本软件。
- 在"设备管理器 → 端口(COM 和 LPT)"里确认当前 COM 号,回到"设备设置"页改成实际的那个。
- A、B 接反不会烧,直接对调再试一次。
- 从站、地址、类型、值这四项逐项和 PLC 工程师对一遍。软件在调试日志里会记
等待触发收到: 值 (地址N),拿这一行去和 PLC 侧核对最快。
提示 Modbus RTU failed to open serial port¶
现象
开始运行或做通讯测试时报:
Modbus RTU failed to open serial port COM3
先查
- 这个 COM 口是不是不存在了(线拔了、驱动掉了)。
- 是不是被别的程序占用。
- 是不是和软件里其他功能选了同一个口。软件会拦下这种冲突,提示"通讯设备串口与其他设备冲突"、"光源控制器串口与其他设备冲突"、"串口与其他设备冲突"、"三色灯和传送带设备串口与其他设备冲突"。
解决
- 打开"设备设置",给通讯设备、光源控制器、串口收发数据、三色灯/传送带各自分配不同的 COM 口。
- 口不存在就重插 USB 转串口线,确认设备管理器里能看到,再回来改端口号。
- 改完点"确认"。如果提示"保存设备设置失败,设置未生效。请检查串口/网络参数后重试,或联系售后人员",说明参数还有问题,先别关窗口,逐项复查。
PLC 收不到结果¶
现象
检测跑完了,界面上有结果,PLC 那边的地址一直没变化。
先查
- 通讯输出指令里的"地址"是不是 PLC 实际在读的那个地址。
- "类型"选的是
WRITE_COIL还是WRITE_HOLDING_REGISTER,和 PLC 侧一致吗。软件写线圈用的是"写多个线圈"(功能码 15),写寄存器用的是"写多个寄存器"(功能码 16);少数老 PLC 只认单点写的 05/06,遇到这种要让 PLC 侧改成接收 15/16。 - "是否为最终输出"该勾的有没有勾。只有勾了这一项的输出指令才会等所有检测方案跑完再发总结果;没勾的会在流程中途就发出去。
- 输出值引用的变量名对不对。引用变量必须以
&开头,例如&相机工位1-检测方案1。名字写错时软件会报variable ... not found in result dict,后面跟着当前可用的变量名列表。 - 相机工位或检测方案改过名字吗?改名后旧的
&变量引用就失效了。
解决
- 对照报错里列出的可用变量名,把输出值改成正确的
&变量名。 - 改过相机工位/检测方案名字的,回到"编辑运行顺序"窗口,把受影响的输出里引用的
&变量名重设一遍(拍照行本身会自动跟着改名,不用动)。 - 地址、类型、值三项和 PLC 工程师当面对一遍,别靠猜。
机械手不动作¶
现象
检测结果是 OK,但机械手没有接到信号,不抓取/不放行。
先查
打开导出的日志,找通讯输出那一行,它记录了完整的写入流水:
通讯输出值: 1 (slave=1 地址=200 类型=WRITE_HOLDING_REGISTER 引用=&相机工位1-检测方案1)
拿这四项去对:
- 值:软件实际写出去的数。OK/NG 各写什么值,在输出指令里由"写入值"和输出后处理决定。
- 从站:和机械手/PLC 的站号一致吗。
- 地址:和对方读的地址一致吗。
- 类型:线圈还是寄存器,和对方一致吗。
解决
- 四项里只要有一项对不上,改软件侧或改对方侧都行,对齐即可。
- 日志里根本没有这一行,说明这条输出指令没被执行到——回"编辑运行顺序"检查它在不在指令表里、在不在正确的位置。
- 日志里有这一行、对方仍读不到,问题在物理链路(接线、站号冲突、终端电阻),按串口那一节排查。
MES 告警条亮红¶
现象
运行界面结果标签上方出现一条醒目的红色横幅,内容形如:
MES 未上传 3 件! <原因>
检测继续运行 — 记录已本地留痕待补传
或者结果区显示"MES上传失败"、"MES状态异常"、"品质未审核, 停止检测过站"。
先查
- 网络通不通:能不能 ping 通 MES 服务器。
- MES 参数(地址、账号、密码、规程 ID)有没有改动过。软件启动时如果连不上,会提示"初始化web客户端发生错误, 请检查mes地址...点击确认后进入离线模式"或"登录mes系统发生错误, 请检查mes信息..."。
- 这一件是不是重复过站——同一个 SN 已经上传过了。
- 是不是 MES 侧判了品质未审核,把过站卡住了。
解决
- 检测不会因为 MES 上传失败而停,红条只是提醒:这些件的数据已经在本地留痕,等 MES 恢复后要人工补传。把鼠标停在红条上能看到留痕文件的路径。
- MES 恢复连接后红条自动消失,信息区会打印本轮累计多少件未上传。
- 红条写着"本地留痕写入失败, 请立即人工记录"时,说明连本地留痕都没写成(多半是磁盘满或没权限),必须马上人工记下这些件,同时处理磁盘问题。
- 现场压根不接 MES 的,在运行端"设置 → 打开系统设置 → 通用设置"里把"启用 MES 上传"的勾去掉:不再留痕、不再计数、不再弹红条。只想藏掉红条但保留留痕的,用调试端工程设置里的"MES 未上传告警条"开关。
- 品质未审核导致停线的,由有权限的人在 MES 侧完成审核后再继续。

检测结果¶
全部 NG,或误报很多¶
现象
一开机就连续 NG,或者良率突然从九成掉到五成,不良信息汇总里几乎每项都报。
先查
- 定位有没有过。定位(标签外框的矫正)失败时后面所有检测框都是错位的,一错全错。先看结果图上标签外框有没有框住标签。
- 模板图和现场取像是不是不一致了:换过料、换过版、光源老化变暗、镜头脏了、相机被碰过。
- 光照变了:白班夜班的环境光差异、灯罩积灰、灯控器亮度被人改过。
- 阈值定得过严:缺陷面积阈值/二值化阈值调得太小,正常的印刷波动都被算成缺陷。
- 是不是刚改过参数没点"训练工程"。
解决
- 先用调试端打开一张真实的 NG 图(工具栏上的"打开调试图"),做"整体运行",看是哪一步先挂。
- 定位挂了:调标签外框的"模板特征点数"、"最小匹配个数"、"金字塔层数",或者重拍主模板图后重新训练。
- 光照变了:把光源亮度调回原值;确实回不去就重拍模板图。
- 阈值过严:把缺陷二值化阈值、缺陷面积阈值往上调一点,边调边用调试图回放确认真缺陷还抓得住。
- 改完任何影响模板的参数,一定要点"训练工程"再保存。
扫码漏读¶
现象
码明明是好的,码检测却报未检出;换个角度/位置就又能读。
先查
- 检测框画得太紧,标签一漂移就把码切掉一点边——这是漏读最常见的原因。
- 码在图里太小(二维码边长只有几十个像素)。
- 码本身印得浅、反光、有划伤。
- 镜头脏或没对好焦。
解决
- 把检测框画大,直接盖住整张标签。码检测只要框里有码就能扫,框大一点没有坏处,反倒能吃下标签的位置漂移。
- 在码检测的设置里勾上"解码失败自动扩大搜索区重试(×1.5/×2/×3)"。开了之后,第一次没扫出来时软件会以检测框中心为基准逐级放大搜索区重扫。
- 码太小的,提高相机分辨率或缩短工作距离,让码在图里至少有一百多个像素宽。
- 印刷质量差的,加强光照对比、换角度补光。
双码或多码标签判 NG¶
现象
标签上有两个码(比如上下叠放的两个一维码),检测框一盖住两个就报 NG,结果串里写着 多码NG: 码A | 码B。
先查
- 框里是不是真的有两个不同的码。同一个码被重复检出不会判 NG,软件会先去重。
- 你要的是哪一个码,它的开头/格式有没有固定规律。
解决
- 能用框区分开的,把检测框缩到只盖住目标码。
- 两个码挨得太近分不开的,在码检测设置的"多码处理"里:
- "扫到多个不同的码:"选"按正则筛选"。
- "正则:"里填只能匹配目标码的表达式,例如目标码都以
2636开头就填^2636。
- 规则是:多码时只保留匹配的码,恰好剩一个才通过;只有一个码时也必须匹配,否则判 NG。判 NG 时结果串会把扫到的码都列出来,方便你回头改正则。
有无检测误报¶
现象
有无检测把有的判成没有,或者把没有判成有,"分数:"里 OK 和 NG 两个分数很接近、来回跳。
先查
误报基本不是模型的问题,按这个顺序查:
- 位置偏移:检测框和实际物体差了十几二十个像素,喂给判断的就是一块错位的图。先看结果图上框的位置准不准,不准就回去查定位。
- 取像变了:亮度、角度、焦距和注册那批图不一致。
- 注册图不干净:OK 组里混进了 NG 图,或 NG 组里混进了 OK 图;注册时框的位置和现在不一样。
- 框的大小和类型视野不一致(老工程常见):状态行会提示"当前框与类别视野不符"。
解决
- 先修定位和取像,让现在的图和注册图长得一样。
- 打开有无检测的设置窗口,逐张翻"OK组图片"和"NG组图片",把混进去的、画面明显不对的删掉(选中后点"删除当前注册图")。
- 用现在的真实画面重新注册:结果不对的那一张,直接点"注册当前图片为OK"或"注册当前图片为NG"。每个类别最少注册 5 张 OK 图,单类上限 100 张。
- 状态行提示"当前框与类别视野不符"的,点"按类别视野重设框"(或"本类别所有框按视野重设")再跑;提示"N 张尺寸与视野不符"的,删掉那几张用改好的框重新注册。5.0 起没有"分数阈值"可调,OK 要比 NG 像得够多才判 OK。
- 提示"未注册OK图"或"注册OK图数量至少5张"的,就是注册图不够,补齐再跑。

字符识别错字¶
现象
字符识别把 0 读成 O、1 读成 I,或者干脆读出乱码、少字。
先查
- 字在图里够不够大。字高太小,再好的算法也认不准。
- 对比度够不够:浅色字印在浅色底上、反光、背景有花纹。
- 字是不是没摆正(竖排、倒着、斜着)。
- 底色和字色的关系设对了吗:"白底黑字"勾没勾(不勾 = 黑底白字)。
- 用的模型对不对:纯英文数字勾上"英文模型",有中文的不勾(= 中英文模型)。
解决
- 字太小:提高相机分辨率或缩短工作距离;应急可以把"X方向缩放"和"Y方向缩放"调大,把字拉大再识别。
- 字不正:在"旋转角度"里选
90/180/270,把字转成水平方向再识别。软件只认水平方向的文字。 - 对比度不足:改光源角度(侧光打凸印、同轴光打反光面),或勾"最小字符高度"、调"最小限定框高度"过滤掉噪点。
- 固定的几个字老是认错:用"混淆字符"页把"易混字符"映射到"正确字符";要统一替换某些符号的用"替换字符"页。
- 识别结果本身对、只是比对不过的,检查"比对方式"选的是"结果字符串等于参考字符串"、"参考字符串在结果字符串中"还是"结果字符串在参考字符串中",以及"置信度阈值"是不是定高了。
检测变慢,跟不上节拍¶
现象
单件耗时从几秒涨到十几二十秒;或者只有开工的头几件特别慢,后面就正常了。
先查
- 只有开始运行后的头一两件慢:这是有无检测的 AI 模型第一次加载。软件已经改成在"开始运行"之前就把模型预置好,信息区会打印
有无AI预置完成(N 项)。如果注册图刚改过,这一次预置会把新注册图重新生效一遍,耗时正常。 - 一直都慢:看信息区的
各算子耗时(本件)和总运行耗时(不含通讯、拍照),哪个检测项吃时间就查哪个。 - 调试端还开着:登录后进过调试端,它就一直留在后台,实时预览会持续抢 CPU 和相机带宽。
- 存图拖慢:磁盘慢、存图路径在网络盘、存的是 png 大图。
- 多相机串行拍照:一台拍完才轮到下一台。
解决
- 生产时登出,登出会把调试端关掉,只留运行页。
- 存图:在系统设置的"存图设置"里勾"只存NG图片",或把"存图格式"的 PASS 图改成
jpg,并把"存图路径:"指到本机的固态硬盘,不要指网络盘。 - 多相机:在"编辑运行顺序"里把同组相机的拍照行都设成"主动触发",让它们同时曝光。
- 改过有无检测注册图之后头一件慢属正常,跑起来就恢复。
- 还是不够快的,把信息区里
各算子耗时(本件)那一行发给我们,我们按耗时最高的那个算子给优化方案。
软件与工程¶
软件闪退了,要把什么发给我们¶
现象
软件窗口直接消失,没有报错框。
先查
- 记下闪退的时间点和闪退前做的最后一个操作(比如"删相机工位""改旋转角""点了训练")。
- 闪退是不是能重现——同样的操作再做一遍还闪不闪。
解决
按下面收集材料,一起打包发给我们:
-
重新打开软件,运行端右下角点"导出诊断包",选一个路径导出 zip。诊断包里已经带上了软件安装目录下
log文件夹里的全部文件(单个超过 128 MB 的日志只带最后 32 MB)——除了运行日志,还有闪退时自动落下的崩溃现场文件:system.log——运行日志faulthandler.txt——崩溃时的调用栈crash_<数字>_<时间>.dmp——崩溃转储,定位闪退全靠它minidump_status_<数字>.txt、startup_trace.txt——启动与转储状态
另外还带了节拍库、系统设置和当前打开的工程(不含图片)。 2. 软件起不来、导不出诊断包时,改为手动到软件安装目录下的
log文件夹,把里面的全部文件拷走。 3. 不要手工打包用户目录下的.labeldetect文件夹(里面有明文密码)。系统设置已经以遮盖版带在诊断包里了;软件起不来、导不出诊断包时,只把.labeldetect里的sys_config.yaml拷出来,用记事本把含password的那几行的值删掉再发。 4. 附上前面记下的时间点和操作步骤。
别急着重装
重装或清理会把崩溃文件冲掉,拿不到现场就只能靠猜。先把上面的材料拷出来再做别的。
打开工程失败¶
现象
打开工程时弹出"打开工程发生错误"、"工程文件已损坏,请确认所选工程是否正确!"、"工程内容为空,请确认所选工程是否正确!",或者"所选文件夹不是有效工程(缺 manifest.yaml),请选择后缀为 .lproj 的工程文件夹。当前所选: ..."。
先查
- 选的是不是
.lproj文件夹本身。工程是一个目录,不是单个文件,要在"打开工程(选择 .lproj 目录)"里选中那个带.lproj后缀的文件夹。 - 这个工程是不是老版本的
.pro文件。老格式的工程本软件不能直接打开。 - 工程目录是不是被拷贝时拷漏了(只拷了一部分文件)。
- 是不是提示"此工程已经被打开"——那说明软件里已经开着同一个工程。
解决
.lproj工程:重新选择那个文件夹;拷贝工程时务必整个文件夹一起拷,不要只挑几个文件。- 老的
.pro工程:联系我们做转换,不要自己改后缀名,改了也打不开。 - 工程确实损坏的:找最近一次的备份;没有备份就把损坏的工程目录整个打包发给我们,我们看还能不能救回来。
- 提示"最近工程文件已损坏"的,用"打开工程"重新选一次,并用"清除最近工程"清掉坏记录。
提示授权过期或与本机不匹配¶
现象
启动时弹出错误框,内容是下面之一:
软件尚未注册许可证, 请先获取许可证
许可证签名校验失败(非法或损坏的许可证)
许可证与本机不匹配
授权已过期(到期日 2026-01-01)
系统时间异常(检测到时间回拨), 启动失败
先查
- 这台机器是新换的、重装过系统、换过主板或硬盘吗?换了硬件,机器指纹就会变,原来的授权文件对不上。
- 电脑的系统时间是不是被人往回调了。软件有防回拨保护,时间被调早会直接拒绝启动。
- 授权文件是不是放错了地方或者改过名。
解决
- 打开软件,在运行端菜单点"更新授权"。窗口里显示的就是本机的机器指纹。
- 点"导出UUID"存成 txt,把这个文件发给我们。
- 我们按这个指纹签一份新的授权文件(
.lic)发回来。 - 回到同一个窗口点"导入授权码",选中收到的
.lic文件,再点确认。看到"授权码校验成功!"就好了。
几个细节
- 授权文件的文件名里带着机器指纹,导入时软件会核对,不要改文件名。
- 授权文件放在用户目录的
.labeldetect文件夹下,不要手工删。 - 提示"本机硬件唯一标识为占位符,授权可能与同型机冲突,建议刷 BIOS/换机"时,授权仍可用,但请告诉我们,这类机器有和同型号机撞车的风险。
- 时间回拨导致启动失败的,把系统时间改回正确的当前时间再开。
界面卡顿¶
现象
点什么都要等一下才有反应,画面一顿一顿,严重时窗口变白。
先查
- 调试端是不是还开着(进过调试页又没登出)。调试端的实时预览很吃 CPU,生产时不该常开。
- 存图磁盘是不是快满了。信息区会打印
存图空间不足<预警值>G,请及时清理。 - 杀毒软件是不是在扫存图目录。每存一张图就被扫一遍,会把磁盘和 CPU 拖死。
- 这台电脑是不是同时跑着别的软件(相机厂家工具、远程桌面、浏览器)。
解决
- 生产时停在「运行」页;调试完不再用调试端就登出,登出会把调试端关掉。
- 清理存图目录或换一个空间充足的盘,见下一条。
- 在杀毒软件里把存图目录和软件安装目录加进排除列表。
- 关掉不相关的程序。
存图空间满了¶
现象
信息区出现黄色或红色提示:
存图空间不足<预警值>G,请及时清理
存图空间不足0.5G,已停止存图,请及时清理
或者保存工程时报"存图空间耗尽, 请清理图片后保存工程"。
剩余空间不足 0.5 G 时软件会停止存图并报错停机
黄色那条提醒里的数字来自系统设置里的"磁盘空间预警:"(出厂是 5 G),看到它就该动手,别等到红色的那条。
先查
- 存图盘还剩多少空间。
- "存图路径:"指到哪个盘。
- "是否循环存图"开着没有,"保存周期(天):"设的是多少天。
解决
按见效快慢排:
- 立刻腾空间:停机后到存图目录里删掉旧日期的图。目录按
存图路径 / 工程名_SN_时间戳 / PASS 或 NG / 相机工位名_检测方案名 /这样分层,按日期整块删最快。 - 换盘:系统设置 →"存图设置"→"存图路径:"改到空间大的盘。
- 少存点:勾上"只存NG图片";把"PASS图格式:"改成
jpg(比 png 小很多)。 - 让它自己清:打开"是否循环存图",把"保存周期(天):"设成现场要求的留存天数,过期的图会被自动清掉。
- 提前预警:把"磁盘空间预警:"调大一点(比如 20 G),早点收到提醒。
忘记密码¶
现象
登录框里输密码,提示"账号或密码错误, 请重新输入"。
先查
- 选的角色对不对。登录框的下拉框里有"管理员"和"超级管理员"两种角色,它们的密码是分开的。
- 这台机器的密码有没有被人改过。如果从没改过,用出厂默认密码(装机时我们会告知,手册里不公开)。
解决
- 先用出厂默认密码试一次。
- 密码改过又想不起来的,联系我们;请一并说明是哪个角色的密码,以及这台机器的机器指纹(见上面"提示授权过期"一条里的取法)。
- 拿回权限之后,在运行端菜单点"打开账号设置",在"账号管理窗口"里把"管理员:"和"超级管理员:"的密码重设一遍,并记录到设备台账上。
别用默认密码跑产线
默认密码人人都知道。装机验收时就该改掉,并把新密码交给设备管理员保管。
点了"运行"起不来¶
现象
按"运行"没进入检测状态,反而弹窗。常见的几条:
当前工程为空, 请先新建/打开工程
当前工程未被确认
1.请打开调参界面勾选模板确认按钮
2.请切换到离线模式继续运行
<检测方案名>:未设置模板图
<检测方案名>:未添加标签外框
启用了PLC通信串口但未初始化串口设备!
已启用光源控制器但未设置串口!
先查
按弹窗内容对号入座:哪一项没配齐,它就写哪一项。
解决
- "当前工程为空":先"打开工程"或"新建工程"。
- "当前工程未被确认":到调试端勾上"工程确认",或按提示切到离线模式。
- "未设置模板图" / "未添加标签外框":到调试端给这个检测方案补上主模板图和标签外框;这个方案现在用不上的,右键把它"禁用检测方案"。
- 串口类提示:到"设备设置"里把对应的串口配好,或者把用不到的设备(光源控制器、串口收发数据、三色灯/传送带)的启用勾去掉。
相关页面¶
名词解释¶
手册和软件界面里会反复出现一批固定说法。这一页把它们集中解释一遍,每条两三句话,看完就知道在界面上指的是哪个东西。按主题分组,用右上角搜索框可以直接搜词。
名称改过的地方
这一版把几个长期容易混的名字统一改了:"工作站"改叫相机工位,"检测器"改叫检测方案,"分类器"改叫检测项,检测项下面的"XX检测器"改叫 XX检测框,"区域分析"改叫有无检测。旧文档、旧培训材料里的老说法按这个对照看。
工程结构¶
相机工位¶
一路取像通道,绑定一台相机,下面挂若干个检测方案。新建时默认叫"相机工位1""相机工位2",可以改名。产线上有几台相机,通常就建几个相机工位。旧称:工作站。
"相机"这个词只指硬件本身——相机设置、相机参数、相机品牌说的都是那台设备。
检测方案¶
相机工位下面的一级。一个检测方案持有一组模板图(一张主模板图,可以再加若干张副模板图),并且带自己独立的相机参数、HDR 参数和光源参数。同一台相机要拍不同产品、不同面、不同工位的,就在这台相机的相机工位下面建多个检测方案。旧称:检测器。
检测项¶
在模板图上划出来的一个检测对象,比如"标签外框""固定区域_1""码检测_1"。检测项一共有 12 种类型:标签外框、有无检测、多行字符、固定区域、可变区域、条码字符对、码检测、颜色抽取、字符识别、卡尺工具、逻辑检测、异常检测。旧称:分类器。
每个检测方案必须先有一个"标签外框"检测项,其余类型才能建。
检测框¶
检测项下面的一级,是真正干活的那个算子,作用在检测项圈出来的那块图上。一个检测项可以带好几个检测框,比如固定区域下面有"细节检测框""屏蔽内容检测框""屏蔽空白检测框"。旧称:XX检测器(标签定位检测器、孔洞缺陷检测器、细节检测器……)——它和上面的"检测器/检测方案"同名不同层,长期容易搞混,所以这次一并改掉。
工程(.lproj)¶
一条产线的全部配置:相机工位、检测方案、模板图、所有检测项和检测框的参数、运行顺序、通讯指令,全在里面。
工程是一个文件夹,后缀是 .lproj,不是单个文件。所以:
- 拷贝、备份工程要整个文件夹一起拷,漏文件就打不开。
- 在"打开工程(选择 .lproj 目录)"里要选中这个文件夹本身,不是进去选里面的某个文件。
- 老版本的
.pro工程本软件不能直接打开,需要转换,联系我们处理。
模板图¶
检测的比对基准:一张"标准品长什么样"的照片。所有检测项都画在模板图上,运行时用现场拍到的图和它对照。模板图属于检测方案。
主模板图¶
一个检测方案有且只有一张主模板图,名字就叫"主模板图"。检测项的位置、旋转拉伸参数都以它为准。删掉主模板图会重置整个检测方案,软件会先弹窗问你"删除主模板将会重置当前检测方案, 是否继续?"。
副模板图¶
同一个检测方案下额外加的模板图,可以有多张,默认名叫"副模板图"。用在同一个位置会出现好几种合格外观的场合,比如同一条线上跑几种版式的标签。
副模板图是按检测项生效的,不是整个检测方案一起切换:只有右键"添加到副模板"过的检测项,才会在副模板图上多存一份自己的参考内容。运行时,这个检测项先在每一张模板图上各做一次定位,取定位相似度最高的那一张,只用它的那份参考内容去比对并出结果;没有添加到副模板的检测项一律只用主模板图。所以几种版式可以共用一个工程,但每个要跟着版式变的检测项都得单独"添加到副模板"一次。
加法:工具栏"添加模板图"→ 在"添加模板图"窗口里选"副模板图"(已经有主模板图时这里会自动锁定成副模板图)→ 起个名字(最多 6 个字)。再在要用它的检测项上点右键选"添加到副模板"。
ROI¶
Region Of Interest,"感兴趣区域"的英文缩写,就是你在图上拉出来的那个框。软件里的检测项框、检测框都是 ROI。调试端工具栏有三个相关按钮:"ROI锁定"(锁住不让误拖)、"ROI移动"(一次性平移全部框)、"ROI向导"(按引导一步步建框)。
训练¶
让软件把当前的模板图和参数"记下来",生成检测时要用的比对基准。改过下面这些东西之后必须重新训练,否则检测还在用旧基准:模板图、旋转拉伸参数、定位参数、检测框位置、有无检测的注册图。
调试端工具栏点"训练工程"(快捷键 Ctrl+T)训练整个工程;单个检测框也可以在它自己的设置窗口里点"训练"。训练完记得"保存工程"。
Warning
调试模式下不训练。弹出"调试模式下不进行训练, 请切换到编辑模式训练"时,先切到"编辑模式"再点训练。
取像与触发¶
软触发¶
由软件发指令让相机拍一张。相机参数配置界面的"触发"页选"软触发模式"就是这个模式。不需要接触发线,适合节拍不快、或者由通讯信号驱动流程的场合。
外触发¶
由外部硬件信号(传感器、PLC 的一个输出点)让相机拍一张,相机参数配置界面的"触发"页选"外部触发模式"。必须接触发线,时序最准,适合高速产线。同一页上还能选触发边沿(上升沿/下降沿)和触发延时。
选"连续模式"则是连续采集,相机自己不停地出图,一般只在调试看画面时用,连续采集模式下不能用 HDR。
通讯触发¶
和上面两个不是一回事:软触发/外触发说的是"相机怎么被拍",通讯触发说的是"这一件产品什么时候开始检"。软件按设定的间隔去读 PLC 的某个地址,读到的值等于"触发条件值"时,就认为产品到位,开始跑这一件。
通讯触发属于某个阶段,在调试端的"编辑运行顺序"窗口里,在阶段行上右键"添加通讯触发",显示成 (trigger#1) 这样。它的参数有:从站ID、地址、寄存器类型、读取间隔、触发条件值、触发延时。运行时信息区会打印 等待通讯触发(trigger#1)。
主动触发¶
拍照行上的一个勾选框。勾上主动触发之后,通讯触发信号一到,整组相机立刻同时曝光,后面轮到这一行时只是把已经拍好的图取出来用。这样曝光时刻就钉死在信号到达的那一瞬间,不会被中间的其他步骤拖偏。
设法:"编辑运行顺序"窗口里,勾上拍照行(形如 (相机工位名->检测方案名))的"主动触发"列。
被动触发¶
主动触发的反面,也是默认状态:轮到这一行时才去拍。流程简单、节拍宽裕时够用;多相机要求同时曝光、或者出现拍早拍晚的,就改成主动触发。设法是去掉拍照行"主动触发"列的勾。
HDR¶
高动态范围合成。同一个位置用几个不同的曝光值各拍一张,再合成一张图,让很亮的地方和很暗的地方在同一张图里都看得清。适合亮暗反差极大的产品(镜面件旁边有黑色标签这种)。
HDR 参数属于检测方案。在相机参数配置界面的"曝光"页调好一个曝光值后点"添加曝光值到HDR",把要用的几档都加进去。注意两点:相机要先切到触发模式(连续采集下用不了 HDR);自动曝光要先关掉。
频闪¶
相机在曝光的同时给光源发一个同步脉冲,让灯只在曝光那一瞬间亮。
本软件不驱动相机的频闪输出,光源按常亮使用。如果画面上出现黑色横条,基本可以断定是光源自己在闪(灯控器被设成了闪烁/脉冲模式),或者环境里有别的频闪光源照进来,把灯改成常亮即可。
试运行模式¶
运行端菜单"设置 → 试运行模式"。勾上之后检测照常跑、结果照常显示,但不计入统计、不写良率。信息区会打印"试跑模式: 不统计数据",状态栏上出现黄色的"试运行"字样。用来试线、试料、带新人,不会把练手的数据混进当班良率。
工程设置、系统设置、设备设置¶
工程设置跟工程走:存在工程文件(.lproj)里,换机器一起带走,比如最大失败数、检测 SN、人工复判、运行模式。系统设置跟机器走:存在本机 ~/.labeldetect/sys_config.yaml,管存图、通用、良率。设备设置也跟机器走:光源控制器、通讯设备、串口、三色灯的串口与地址。三个窗口各只有一份,都在顶部"设置"菜单里,运行页和调试页都能打开。
自动存图¶
运行时把每一件的图自动保存到磁盘。运行端菜单里的"自动存图"是总开关,想临时不存图就在这里关掉。具体存什么、存到哪、存多久,在"打开系统设置 → 存图设置"里设:"存图路径:"、"存图格式"、"PASS图格式:"、"只存NG图片"、"是否循环存图"、"保存周期(天):"、"磁盘空间预警:"。
存图目录¶
自动存图写出来的那棵目录树,根目录就是系统设置里的"存图路径:"。默认的分层方式是:
存图路径 / 工程名_SN_时间戳 / PASS 或 NG / 相机工位名_检测方案名 / 图片
NG 的那一张除了原图还会多存一张带缺陷标注的图。目录名里用到了工程名、相机工位名、检测方案名,所以改这些名字会改变存图路径,现场如果有按目录名取图的脚本,改名后要同步更新。"存图路径结构:"可以选 Format1 到 Format4 四种分层方式,按现场要求选。
结果与产线¶
总结果¶
这一件产品的最终结论,OK 还是 NG。默认规则是"只要有一个检测方案 NG,总结果就是 NG"——对应系统设置里的"总结果整合所有检测结果(推荐勾选)"。
总结果是通讯输出里的一个内置变量,名字就叫 总结果。输出模式选"固定指令"时,发给对方的就是它:OK 发"通过时指令"(默认 PASS),NG 发"失败时指令"(默认 FAIL)。
SN¶
产品的唯一序列号,通常来自标签上的条码。软件把某个码检测或字符识别的结果指定成 SN,做法是在检测项上点右键选"设置为SN码"。
SN 的用处:存图目录和文件名里带它,方便按产品找回图;上传 MES 时用它标识这一件;开了"检测SN"之后,SN 读不到会直接报"当前SN条码为空 检测出现错误: 请检查SN条码,人工处理"。
MES 卡控¶
MES 是工厂的制造执行系统。软件每检完一件就把结果报给 MES,MES 决定这一件能不能过站——这就是卡控。常见的卡控结果有:重复过站(同一个 SN 已经报过一次)、品质未审核(界面显示"品质未审核, 停止检测过站")、MES 状态异常。
MES 连不上或上传失败时,检测不会停:运行界面会挂一条红色告警条"MES 未上传 N 件!",这些件的数据在本地留痕,等 MES 恢复后要人工补传。现场不接 MES 的,在系统设置"通用设置"里把"启用 MES 上传"去掉即可(不留痕、不计数、不弹条);工程设置里的"MES 未上传告警条"只管红条显不显示。
授权文件¶
后缀 .lic 的一个小文件,是这台电脑运行本软件的凭据。它和机器指纹绑定,一台机器一份,拷到别的机器上用不了。文件名里带着机器指纹,导入时软件会核对,所以不要改文件名。
授权文件放在用户目录的 .labeldetect 文件夹下。更换、更新走"更新授权"窗口的"导入授权码"。授权带到期日的,到期后启动会报"授权已过期(到期日 ...)"。
机器指纹¶
从这台电脑的硬件信息算出来的一串标识,用来唯一地认出这台机器。换主板、换硬盘、重装系统都可能让它变化,变了之后原来的授权文件就对不上,会报"许可证与本机不匹配"。
取法:运行端菜单"更新授权",窗口里显示的那一串就是,点"导出UUID"可以存成 txt 发给我们换新授权。极少数机器的 BIOS 没刷唯一标识,打开这个窗口时会提示"本机硬件唯一标识为占位符,授权可能与同型机冲突,建议刷 BIOS/换机"——能用,但请告诉我们。
图像处理名词¶
下面这些词出现在各个检测框的参数里。理解了它们,调参就不是碰运气。
非均匀光照¶
指画面里各处的光照强度不一样——一边亮一边暗、中间亮四周暗。这种图直接拿去比对很容易误判:暗的那半边会被当成"颜色不对"。
在调试端的"模板图旋转拉伸"里,"拉伸类型:"选非均匀光照,软件会按局部邻域分别拉,把明暗拉平。它比"均匀光照"更能压住阴影和高光,代价是耗时略高。配套参数是"光照邻域范围:",邻域取大一点更平滑、取小一点更贴合局部。
光照拉伸¶
把图像整体的明暗对比拉开:暗的更暗、亮的更亮,让细节更清楚。"拉伸类型:"里的光照拉伸就是它,配套参数是"拉伸系数:"(拉多狠)和"拉伸偏移:"(整体往亮往暗挪)。
选均匀光照则是全图用同一条线性关系拉,最快,适合本来光就打得匀的场合。
Warning
改过旋转拉伸参数以后必须重新训练,界面上也写着"注意:修改旋转拉伸参数后需要重新训练"。
矫正 / 透视矫正 / 特征点¶
矫正是把现场拍到的这一张图对齐到模板图上去。产品在治具上摆得永远有一点偏差,不先对齐,后面所有检测框都是错位的。标签外框的设置里有"是否进行矫正"这个开关。
透视矫正是矫正的加强版,处理的是"倾斜拍摄造成的形变"——产品不只是平移旋转,还朝某个方向倒了一点,近的一边显得大、远的一边显得小。产品容易歪着放的场合勾上"透视矫正"。
特征点是图像里那些辨识度高的点(角点、边缘点、斑点)。矫正就是靠"模板图上的特征点"和"现场图上的特征点"一对一配上,再算出该怎么挪。相关参数:"模板特征点数:"(从模板上取多少个点)、"最小匹配个数:"(至少配上多少对才算矫正成功,配不够就判定位失败)、"是否使用外框的所有特征点:"。
金字塔层数¶
把一张图逐级缩小,形成一摞由大到小的图,这一摞就叫图像金字塔,缩了几级就是几层。
- 在模板匹配定位里:层数大 = 从很小的图开始找,找到大致位置再逐级到大图上找准。好处是快,坏处是起手的图太小,容易根本找不着。
- 在标签外框的特征点匹配里:压得少 → 特征点多 → 矫正更准但更慢;压得多 → 特征点少 → 快但容易配不上。
定位偶尔失败就把层数调小,嫌慢就调大,一次动一级,每次都回放几张真实图确认。
对比度¶
图像里明暗之间的差距有多大。差距大的地方就是边缘。
- 最小对比度阈值:低于这个值的明暗差被当成没有,直接忽略。用来滤掉轻微的色差和噪点。
- 低阈值 / 高阈值(范围都是 0~255,低阈值不能大于高阈值):做边缘检测时用的一对门槛。梯度高于高阈值的点直接保留;介于高低之间的点,只有能连上一个已保留的强边缘才留下,否则丢掉;低于低阈值的点直接丢。
粗略记:这几个值调得越大,留下的就只有明暗反差越明显的边缘。噪点多就往上调,细节丢了就往下调。
区域扩张¶
允许检测框往外多搜一圈的范围。产品位置有漂移时,目标可能跑到框边上甚至探出去一点,给一点扩张量就能把它捞回来。
对应参数是"横向偏移容忍绝对值"和"纵向偏移容忍绝对值"(检测方案设置里叫"搜索参数横向/纵向偏移容忍绝对值")。图案相对位置变动越大,这两个值就调越大,代价是耗时增加、也更容易把隔壁的东西也搜进来。调的时候在"区域扩张图像"里看效果。
缺陷面积阈值¶
判 NG 的最后一道门槛:把所有被认定为缺陷的像素面积加起来,总面积超过这个值就报 NG,没超过就放行。
它管的是"多大才算事":调大 = 容忍更大的瑕疵,调小 = 更严。和下面的"缺陷二值化阈值"配合用——先由二值化阈值决定"哪些像素算缺陷",再由面积阈值决定"这些像素加起来够不够判 NG"。
缺陷二值化阈值¶
判 NG 的第一道门槛:现场图和模板图在同一个位置的差异值,小于这个阈值的像素被当成正常,直接不计入缺陷面积;大于的才算缺陷像素。
它管的是"差多少才算差":调大 = 只有差得很明显的地方才算缺陷(更宽松),调小 = 一点点差异就算(更严)。固定区域类的检测框里,"更亮"和"更暗"两个方向还可以分别设阈值和面积。
边缘拉伸尺度¶
用来压掉"边缘假缺陷"的一个参数。
现场图和模板图再怎么对齐也不可能完全重合,在图案的边缘位置总会差那么一两个像素,这点错位会被算成一条细长的缺陷。软件的做法是:先单独做一张"边缘图",再从灰度差异图里把它减掉,剩下的才拿去算缺陷的灰度和面积。边缘拉伸尺度就是这张边缘图做多宽——值调大,忽略掉的边缘像素更多,边缘假缺陷更少,但真的贴着边缘的小缺陷也可能一起被忽略。
出现"缺陷全部沿着图案轮廓排成一圈"这种典型现象时,先调它。
旋转补偿¶
软件只认水平方向的文字。标签上的字要是竖排、倒着、或者转了 90 度,识别出来必然是错的或者空的。
在字符识别的"旋转角度"里选 0 / 90 / 180 / 270,把字先转成水平方向再识别。这个设置只影响识别,不改变原图。
孔洞检测阈值 / 孔洞面积缺陷容忍量¶
条码缺陷检测用的一对参数。"孔洞"指的是本该是黑的条里出现了白点(墨没印上、被蹭掉了)。
- 孔洞检测阈值:一个像素的值大于这个数就当成孔洞缺陷,小于就过滤掉不算。管"多白才算白点"。
- 孔洞面积缺陷容忍量:所有被算成孔洞的像素面积加起来,超过这个数就报 NG,没超过就 PASS。管"白点总共多大才算事"。
同一组里还有"孔洞数量容忍量",管的是白点的个数。条码印刷有轻微掉墨属正常的,就把容忍量往上调;要求严的往下调。
相关页面¶
关于与第三方许可¶
运行端菜单里的"关于"窗口底部有一行英文说明,表明有无检测用到了第三方模型 DINOv3:
Built with DINOv3 (ViT-S/16, LVD-1689M; ONNX). DINOv3, DINO and Meta are trademarks of their respective owners. This software is not affiliated with or endorsed by Meta Platforms, Inc. License: third_party_licenses/DINOv3_LICENSE.md
本软件用到的第三方组件,其许可文件随安装包一起提供,都在安装目录根下:
| 文件 | 内容 |
|---|---|
THIRD-PARTY-NOTICES.txt |
第三方组件索引:每个组件的名称、版权、许可、来源(DINOv3、RapidOCR、OpenCV、PySide6、ONNX Runtime、NumPy;显卡版另有 NVIDIA CUDA / cuDNN) |
third_party_licenses\DINOv3_LICENSE.md |
DINOv3 许可原文(DINOv3 License,Last Updated: August 19, 2025) |
third_party_licenses\NVIDIA_CUDA_LICENSE.txt |
NVIDIA CUDA 运行库许可原文(显卡版用到) |
third_party_licenses\NVIDIA_CUDNN_LICENSE.txt |
NVIDIA cuDNN 许可原文(显卡版用到) |
这些文件不要删除或改动;转交安装包给他人时请连同整个安装目录一起。
相关页面¶
更新日志¶
新旧术语对照表¶
本版起界面统一改用下表右侧的新名称。下方历史版本条目一律沿用当时的旧称, 未做改写, 查阅旧条目时请按此表对照。
| 旧称 | 新称 | 说明 |
|---|---|---|
| 工作站 | 相机工位 | 一路取像通道: 绑定一台相机, 下挂若干检测方案。口语可简称"工位"。"相机"一词此后专指硬件本身(相机设置 / 相机参数 / 相机品牌) |
| 检测器 | 检测方案 | 相机工位下一级: 持有一组模板图(主模板图 + 若干副模板图), 并带独立的相机 / HDR / 光源参数 |
| 分类器 | 检测项 | 模板图上划出的一个检测对象(如"标签外框""固定区域_1") |
| XX检测器(如 标签定位检测器 / 孔洞缺陷检测器 / 细节检测器) | XX检测框 | 检测项下一级的 ROI 算子。旧称与上面的"检测器"同名不同层, 是长期歧义源, 本次一并消歧 |
名称改动同时波及新建时的默认名: 新建相机工位默认名为
相机工位N(原工作站N)、新建检测方案默认名为检测方案N(原检测器N)。 因存图目录名与 PLC / MES 指令串由这些名字拼成(存图根/…/相机工位名_检测方案名/、(相机工位名->检测方案名)), 新建工程时请同步更新现场的 PLC 指令表与 MES 解析规则;已有工程内已经取好的名字不会被改动。
5.0.0.x(main) (2026.10.07 起, 开发中)¶
说明¶
- 新版本线: 检测引擎与界面分离(无头化), 件级记录, 取像执行器; 现场维护线仍为 3.0.0.x
新增¶
- 运行端"导出日志"改为"导出诊断包": 一键打包日志、崩溃记录、节拍库、系统设置(密码已遮盖)与当前工程(不含图片); 命令行
run_cli diag export同源 - 系统设置"通用设置"页新增"有无 AI 线程数(0 = 全部核)"与"组内并行预拍"两项; 软件目录下的 labeldetect_env.txt 不再读取
- 码检测结果页新增只读"解码方式"(主解码器 / 备用解码器)
- 定位状态随处可见: 调试端"标签外框"节点、运行顺序编辑器拍照行、运行端小窗口标题(外框定位关时)都标出 外框定位:特征点 / 模板匹配 / 关; 开跑时对外框定位关的方案在日志区提示一条; 命令行 info 每个方案带 location_mode; 提示会写明是哪个开关把定位关掉的; 提示会列出哪些检测项只靠外框定位、会固定在模板位置
- 调试端菜单"设置"改名"工程设置", 并新增"系统设置""设备设置"两项(打开的就是运行端那两个窗口); 运行端"设置"菜单新增"工程设置"(打开的就是调试端那个窗口)
- 字符识别 / 可变区域 / 条码字符对的缺陷参数新增字模 OCV 字符比对(比对算法移植自 HALCON 的 OCV 流程, 无 HALCON 依赖), 树上右键切换(2026-10-27 起老算法下线, 不再有切换, 见第 10 条); 字体库本机全局可导入导出。比对方式默认"逐像素比对"(每个字先用样本在行里定位, 再逐点和样本比, 能抓缺角 / 污渍 / 灰斑; 分数 = 1 − 缺陷像素 ÷ 该字墨迹像素), "投影比对"为 HALCON 同款可选项; 结果页表格列出这一行全部字和分数, "图上只标NG框"只管结果图; 新增"当前字符全部加为模板"按钮, "NG字符全部加为模板"不用先选字; 字体库为空时窗口里给出建库引导; 用 10-14~10-16 测试包建的字模 OCV 工程,允许灰度差若还是旧默认 20,打开时自动改为 25(改过别的值不动); 注意: 逐像素对 2 px 以下细笔画的缺墨看不见(两侧各 1 px 是允许的边缘误差), ≥ 3 px 笔画的整笔缺失 / 断笔能报, 喷码 / 热敏 / 小字号请提高分辨率让字高 ≥ 30 px、笔画 ≥ 3 px, 或改选投影比对; 2026-10-18 起缺陷过滤只看面积不看形状、忽略边只忽略样本四周 2 px 纸边(字自身边缘照查), 同一批测试图上好图误报与漏检都少于 10-17 的包; 参数窗口在小屏(1366×768)上底部参数出屏的问题已改为可滚动
- 有无检测注册时自动体检:重复图、废图(近全白/近全黑/无内容)、亮度相差太大、框尺寸不一、疑似标错,拒绝或先问一次;注册/删图后标记待生效,关窗或点'立即生效'时一次算完并显示"注册已生效 已注册 OK n / NG m";运行中注册也查重复与废图。异常检测注册同样查重复与近全白/近全黑
- 运行端与调试端合成一个窗口: 顶部「运行」「调试」两个页签切换, 运行 / 停止 / 触发 / 登录在两页都看得到; 调试端不再是单独弹出的第二个窗口, 切回运行页时留在后台, 换工程 / 登出时关闭; 菜单栏合成一套("查看自定义变量"进"菜单"); 回车软触发只在运行页生效; 管理员在调试页可开"工程设置"; 运行中可查看自定义变量(不可删除)
- 加回度申(do3think)相机支持: 新建相机工位的品牌下拉可选 do3think, USB 与网口机型都能被发现; 现场需装度申驱动包里的 64 位运行库(DVP2 x64)与相机接口对应的驱动, 并关掉度申自带的 BasedCam; 老工程按友好名绑定的度申相机打开时能对上
- 老的字符缺陷算法(TightOcr)下线, 字符缺陷统一用字模 OCV; 老工程里的老字符缺陷配置升级后会被丢弃并提示(打开工程时弹框列出涉及的检测项), 请在字模 OCV 里重新建字体与样本; '自动更新字符缺陷模板'设置项移除
- 修复条码字符对的"缺陷参数"和空白区域检测在图上真有缺陷候选时报错"boundingRect() missing required argument 'array'"而不是判 NG 的问题(7 月换 OpenCV 4 后引入, 好品不受影响; 斑点工具外接框参数名改回 OpenCV 4 写法)
- 新增整件逻辑检测: 一件产品所有相机工位、所有检测方案都跑完后, 拿全部自定义变量做一次"变量预处理 + 结果判定", 判不通过则总结果不通过(一票否决, 固定计入, 存图目录 / MES / 运行页结果一致); 在调试端任务树空白处或相机工位上右键"新建整件逻辑"(排在所有相机工位之后), 双击设置; 调试模式点"整体运行"即运行整件(每个启用的方案都要装好调试图), 方案右键新增"只运行此方案"; 通讯输出可引用
&整件逻辑->名字(仅最终输出); 方案内逻辑检测只管本方案, 跨工位的判断改用它 - 系统设置"通用设置"页新增"启用 MES 上传": 现场不接 MES 的把勾去掉, 不再往 MES 报结果、不再留"待补传"记录、不再记错误、不再弹红色告警条(原先每件都记一条"MES未上传(MES离线)"并写留痕文件); 默认勾上, 老现场行为不变
- 有无检测 AI 换脑: 判定改用新一代视觉模型(DINOv3), 整件所有有无框一次算完; 规则改为"OK 要比 NG 像得够多"才判 OK(不再有分数阈值), 注册要求不变(OK、NG 两组都要有图); 同一类型一有注册图, 该类型所有框的大小锁定为第一张注册图的大小(框只能移动 / 旋转), 换到已有注册图的类型时框自动按该类型大小重设, 老工程里大小不一致的框在状态行提示并可一键"按类别视野重设框"/"本类别所有框按视野重设"; 安装包分 CPU 版与 NVIDIA 显卡版(版本号带 _gpu, 需显卡驱动 527.41 或更新, 没有显卡自动改用 CPU); 系统设置"通用设置"页新增"有无 AI 设备"(自动 / 仅 CPU, 重启生效); 运行时每个有无框的分数记在 log\okng_scores.csv; 安装目录运行
LabelDetect.exe --okng-check可查看实际用显卡还是 CPU 及速度; 第三方许可见安装目录 third_party_licenses 与 THIRD-PARTY-NOTICES.txt。升级后第一次开始运行会把各类型注册图重新算一遍(几秒到几十秒), 之后照常秒开 - 检测引擎默认在独立进程运行(任务管理器里会看到两个 LabelDetect.exe): 引擎出问题不再连界面一起卡死; 系统设置「设置」页新增"检测引擎独立进程运行"(默认勾选, 重启软件后生效), 去掉勾即回到引擎与界面同进程; 引擎进程起不来(如授权不对)时弹一次提示, 本次自动改为同进程运行, 设置不变
- 引擎进程异常退出时界面不退: 弹"检测引擎重启中", 自动重启引擎并重新载入当前工程(载入完运行按钮恢复), 运行中的会先停下; 10 分钟内最多自动重启 3 次, 再出问题提示重启软件; 外部控制(PLC / 上位机)连接不会自动重连, 需在通讯面板手动点连接
- 引擎进程常开锁延迟记录
log/engine_thread_monitor.log(诊断包自动带走)
优化¶
- 码检测删除"检查错误模块 / 错误模块阈值 / 当前错误模块数"三项(解码库不产出该值); 老工程里这两项设置载入时忽略, 原先勾了"检查错误模块"而开不了机的工程现在可以正常开机
- 运行模式删除"多进程", 只剩"正常 / 多线程"; 老工程保存的"多进程"按"多线程"载入并写入日志
- 老工程运行顺序迁移保序: 打开老工程后拍照顺序与原来一致; 串口收发在通讯触发之前、连续两次翻面、旧指令表漏掉的检测方案(放到最后一个阶段)三处迁移修正; 迁移提示保存在工程里, 运行顺序编辑器下方与 run_cli info 可见, 保存一次运行顺序后清空
- 运行界面检测图小窗口的摆放布局改为记在本机(
C:\Users\<用户名>\.labeldetect\layout\<工程名>.json),不再写进工程文件,换电脑打开同一工程不会再错位;老工程第一次打开时自动把原来存在工程里的布局搬到本机。工程文件不再记录上次扫码枪结果与'工程确认时间',状态栏只显示保存时间与路径 - 拍照前不再每拍回读整套相机参数、不再每拍重开液态镜头串口、连续两拍光源相同时不再重复下发和等稳光(参数没变就不动;开始运行时各核对一次);日志里每拍打印"取像耗时"分段(光源/镜头/设参/触发读图/HDR/清缓存)
- 海康相机:清缓存改用厂家接口,每台相机每件少等约 60 ms;读图时核对帧序号,相机收到多余触发会在 debug 日志里报"取图帧序号跳变";相机设置窗的曝光/增益范围改为相机自报(以前写死 34~199733 微秒,部分型号最小曝光 46 微秒,输 45 会被拒)
- 字模 OCV:运行(树上'运行此检测项'、整体运行、对话框'检测')不再自动把没见过的字学进字体库,'自动训练'开关删除;样本只在点'当前字符全部加为模板 / NG字符全部加为模板 / 手动添加模板'时写入;老工程里的'自动训练'设置载入时忽略
- 调试端模板图上的检测框改为"两步移动": 没选中的框点一下只是选中(变绿、出手柄), 鼠标放到选中的框边上变成抓手后再拖才会移动; 原来按到任何框立刻就拖走, 画新框时碰到没留意的框边(框线 2 像素但点中范围有 12 像素)就把它挪了
- 模板图上右键"添加检测项"新建的框改为以右键点为中心、当前视野三分之一大小(标签外框为视野的 90% 居中), 并限制在图像内; 原来是整个视野当框, 框边贴着窗口边看不见, 要缩小才看得到
- 多曝光(HDR)改用相机厂家接口(海康 HDR 轮询 + 触发出图数),一次触发相机连出 4 帧后融合,不再丢掉触发那一帧;迈德威视与 Basler 相机的多曝光选项置灰(厂家面阵 SDK 无此接口 / 待验证)
- 相机设置窗曝光页新增「自动测光…」:在预览图上圈住要看清的区域,软件自动扫一遍曝光,给出单曝光与多曝光 2~4 档的候选图(标出暗部/亮部丢失比例与一次触发的曝光合计),点一张就写进曝光设置,不用再手填多曝光值;相机不支持多曝光的只给单曝光候选
- 日志降噪: 固定区域"透视矫正"对齐失败回退不矫正时, 只在本进程第 1 次(带栈)、第 2、3 次与之后每 100 次各记一条(原先每次都记一条带完整栈, 一下午可达上百条); 点"停止"的正常退出改记普通信息, 不再记成错误
- 定位参数'多尺度形状匹配'可用于产品放置远近不一致的现场:固定区域/可变区域/条码字符对/字符识别按定位量出的比例缩回再比,缩放范围默认 0.97~1.03 且可输两位小数
- 新建的字符识别默认停用定位参数(它拿框里的文字本身做定位模板, 内容每件会变的行一定定位失败); 内容固定又需要精定位时在树里右键启用; 老工程按原设置不变; 给字符识别添加副模板时自动打开这一组的定位参数(运行时靠定位分数选模板)
- 有无检测参数窗口取消"分数阈值"(新判法不用它, 老工程里的值保留但不再起作用); 状态行末尾显示类型视野与实际用显卡还是 CPU
- 取像计划: 同一相机既有多曝光方案又有单曝光方案时给出提示(每件切换会停流重开, 约多几百毫秒); 度申相机同样不支持多曝光(与迈德威视 / Basler 同); 迈德威视 / Basler / 度申上原来开了多曝光的方案、以及多曝光序列只有 1 个或多于 4 个值的方案, 升级后开跑会提示, 请改为手动曝光或把序列改成 2~4 个
- 有无检测: CPU 模式开始运行不再多做约 1 秒的显卡预热; 分数日志 log\okng_scores.csv 保留量从约 700 件提高到约 3000 件(每件 300 框计), 导出诊断包只带当前文件和最近一份滚动备份; 注册特征缓存不再因安装包换装(CPU 版 / 显卡版同机互换)而整库重算; 去掉度申驱动路径环境变量 LABELDETECT_DVP_DLL(驱动按标准安装目录查找)
- 新增界面停顿诊断日志 log/ui_stall.log(常开,只记超过 100 毫秒的操作与超过 200 毫秒的卡顿,随诊断包导出)
- 运行端结果图刷新改为检测完成即推送,不再每 100 毫秒轮询
- 图像显示的转换链收口,大图上屏少搬三次整幅数据,切换调试模式与打开大图对话框更快
- 运行使用最近一次保存的工程;调试页 / 工程设置里未保存的改动不会进入运行,起跑时会提示先保存(可选"保存并运行""直接运行(已保存版本)""取消")
- 开工程变快: 模板图改为用到时才解码, 大工程开工程明显变快; 代价是第一次开始运行、第一次在调试页选中某个检测方案时要多等一下模板就绪
- 进调试页先出窗口再显示忙框(检测方案的模板处理在后台算), 不再整窗卡住几秒
- 运行端与调试端各持一份工程: 运行用的是最近一次保存的版本; 调试页改相机工位名 / 换相机 / 新建相机工位要保存后才生效(之前单拍会提示"相机未绑定, 或工程改动尚未保存"); 状态栏显示"引擎版本 N", 运行中保存过还没应用时显示"已存盘未应用版本 M"; 开工程后要等运行副本加载好运行按钮才亮, 没好时点运行提示"引擎工程副本尚未就绪"; 外控通讯客户端连在运行副本上, 停机保存后连接不断
- 运行中可以在调试页改检测项(参数 / 检测框 / 模板 / 分类器增删)并保存, 再点调试页按钮行的"应用到运行": 只限管理员 / 超级管理员, 确认框列出会换掉的检测方案, 在两件之间换上, 不停机; 改了相机工位 / 通讯 / 运行顺序 / 整件逻辑这类设置时会拒绝, 提示停止运行后重新打开工程; 系统设置、相机设置、单次触发、试跑等仍要先停止
- MES 服务端口(5555)被占用(如本机已开着另一个 LabelDetect)时软件不再启动失败: 启动时弹一次提示, 状态栏显示 MES 未连接, 日志记原因; 光源 / 三色灯 / 通讯设备 / 串口与 MES 改由检测引擎统一持有, 设备设置页的测试按钮、相机设置里的开灯与光源控制照旧可用
- (已随老算法下线作废, 见新增第 10 条) OCR 字模更新对话框(运行中 OCR 缺陷件弹出的那个)现在打开的是界面(已保存)那份字模库 + 本件的行切图 / 识别结果; 确认的更新(含"读字体")同时写入运行中的引擎, 下一件即按新字模判, 保存工程后也留着; 运行中引擎自动学到的字模不再出现在对话框里、也不会被保存
- 启动时检测引擎与界面并行加载, 两进程不增加启动等待; 状态栏设备 / MES 状态刷新不再和相机预览、开硬件等长命令抢通道, 预览不再被状态刷新卡顿
- 诊断包包含引擎进程的日志(engine_system.log、engine_startup_trace.txt、engine_startup_error.txt 等)与引擎进程状态(开关 / 进程号 / 是否在运行)
- 光照拉伸改用自研实现(Rust),结果与原来逐像素一致,不再依赖闭源 ImageEnhancement.dll
- 界面读结果慢或卡住时不再拖慢检测节拍(引擎事件改独立发送,界面实在跟不上时只合并运行日志并提示条数,判定、计数、运行状态一条不丢;结果图见第 35 条)
- 运行中界面不再每 50 ms 同步询问引擎投喂状态,引擎忙时界面不再跟着卡
- 条码解码期间不再卡住引擎其它工作(PLC 应答、取像、心跳);所有条码检测框共用一份解码器,省内存、减少加载工程时偶发的解码器构造失败
- 没开本地存图时不再检查存图盘剩余空间(此前存图盘不足 0.5 G 会直接停机); 只开 FTP 上传同样不查
- 界面显示跟不上产线时(如电脑卡顿、出件很快),每个检测位直接显示最新一件的结果图,不再越来越落后;每件的判定、计数、MES 照常一件不少
- 新建相机工位、改工位名、换相机或删工位后,工程自动保存并同步到检测引擎,相机当场绑定;不再要求先手动保存才能进相机参数设置或单拍
- 停止状态下有未保存的改动时点"运行",直接保存并按最新版本运行,不再弹出"保存并运行 / 用已保存版本运行"的询问;运行中的"保存 → 应用到运行"不变
- 系统设置「通用设置」页新增"检测内核"(新内核 / 旧内核(将删除)),缺省旧内核,重启软件后生效(检测引擎自动重启时也会按新设置启动),仅勾选"检测引擎独立进程运行"时可选。新内核在引擎忙于检测时仍能刷新界面状态和心跳;新内核起不来时本次自动用旧内核并提示一次,设置不变;内部错误可自动恢复时,运行日志提示"检测内核内部错误已自动恢复,详见日志"。
修复¶
-
调试窗单拍先启动相机再设参(迈德威视); 模板触发 + HDR 老工程迁移修正; 新增方案/换相机后曝光方式与取像设置对齐; 读图超时须大于 0
-
无头停止时件级记录不丢; 件级记录 MES 状态按实际分支(已发 / 待补传 / NG 不上传); 命令行默认不打桩(开发机加 --allow-stub); Windows 缺 wmi 时授权报错不退化; 无头人工复判 MES 字段与运行端一致; 内控模式"通讯服务端"发指令窗去掉 TCP 面板
-
系统设置里"磁盘空间预警"每次打开都显示默认值、点确定就把设过的值改回去的问题
-
字模 OCV:取消"分割符号"时符号照样参与切字,只是不比对不学(原先这种设置下学不到字、带 / 的行一直报切分失败);字体库文件损坏时报"字体库 X 损坏"而不是检测异常;从老外挂自动导入的字体库删掉后不再自动导回;本机没有工程用的字体库时打开对话框不再清空工程里的字体库名;用键盘在字符表里移动后删除模板删的就是画廊里显示的那个字;删字体库确认框默认"否";添加模板会跳过重复样本、拒绝整行大小的框;字符最小宽高不能大于最大值;光源记忆 60 s 过期;开自动曝光/自动白平衡的方案仍每拍核对相机参数
-
运行端停止后"工程设置/系统设置/设备设置"仍只对超级管理员开放;调试端改过外框定位开关后运行端小窗口标题立即刷新;自动重启不再重复打印定位提示;另存为的工程副本带走当前小窗口布局
-
老工程检测项新增模板时沿用已有模板的缺陷算法
-
字模 OCV 对话框:字符列表点一个字,画廊立刻显示它的样本(原来要点下一个才显示上一个);左边参数区固定宽度,窗口默认开得更大(1500×840,按屏幕封顶),拉大窗口时多出来的空间全给右侧图像(原来左边字符表和模板图也跟着变大)
-
方案内的逻辑检测"变量比较"只能用本方案的自定义变量(串口 / SN 这类运行期变量不限): 指令里用了别的工作站或别的方案的变量, 调试端运行立即报"方案内逻辑检测只能用本方案的变量", 运行页点"运行"时开跑前就拦下不起跑; 原来它会等那个工作站出结果, 调试端"运行当前 / 运行所有"只跑当前方案没人来补, 每个这样的变量白等 30 秒、进度框关不掉, 等完才报超时。本方案内排在逻辑检测之后 / 被禁用的检测项也立即提示不再等; 只核指令里真用到的变量, 别的工作站登记给通讯输出用的变量不影响。跨工作站的判断请改用整件逻辑检测
-
节拍库件级记录里,多个相机工位下同名检测方案的判定互相覆盖(例如三个工位都叫"检测方案1", 整件 NG 却记成 PASS); 键改为"相机工位名->检测方案名"
-
度申网口相机 IP 不在本机任何网卡网段时, 开工程不再每台干等 17 秒超时(原先 3 台相机开工程 27 秒), 直接报出"相机 IP 不在本机网段, 请改到相机网口所在网段"; 相机设置里选到打不开的相机时, 弹框直接说明原因(打开超时 / 不在网段 / 被别的程序占用), 不再套"出现意料之外的错误"
-
多尺度定位框位置偏移;模板匹配在模型类型与匹配方法不一致、缩放范围颠倒时的原生崩溃改为报错(改参数后要求重新训练);多尺度+亚像素改为不做亚像素精修(原先可能原生崩溃)
-
字符识别 / 可变区域 / 条码字符对定位失败后, 双击检测参数或字模 OCV 看到的是上一次运行的图(常常是模板图)的问题: 现在显示本次当前图模板位置的裁剪, 字模 OCV 结果区写"本次定位失败,未运行", 此时点"检测"会提示先运行检测项
-
海康与 Basler 相机的"水平镜像 / 垂直镜像"现在真的下发相机(原先只有迈德威视 / 度申生效, 海康 / Basler 勾了没反应、日志记"仅迈德威视可设镜像"); 相机正在出图时写镜像被相机拒绝的, 软件会停流写完再开流; 写不进去时保存配置直接报出节点与错误码。注意: 老工程如果在海康 / Basler 相机上勾过镜像而模板图是没翻的, 升级后画面会翻过来, 请去掉勾或重拍模板图(打开工程时日志会点名哪个方案勾了镜像); 不能翻的品牌这两项在图像设置页置灰
-
相机设置窗里在曝光 / 增益等输入框按回车, 不再顺带点到「自动测光…」按钮(窗口里的按钮不再充当"默认按钮", 回车只用来提交输入框的值); 自动测光对话框的「最长曝光」回车同样只提交值, 不再顺带开始测光
-
Windows 登录用户名含中文(如"公司")时条码引擎加载失败"Failed to open file:", 带条码检测项的工程打不开、ROI 向导报错的问题(条码引擎的临时配置原来写在 C:\Users\<用户名>...\Temp 下, 引擎打不开含中文的路径; 现改为自动换到纯英文目录); 软件开着时运行
LabelDetect.exe --okng-check/--license-selftest不再静默退出 -
「自动测光…」在度申 / 迈德威视相机上一打开就报"出现意料之外的错误"的问题(这两家 SDK 的曝光范围接口多返回一个步长值)
-
海康相机型号没有镜像节点(ReverseX / ReverseY)而工程勾了镜像时, 开始运行第一件就报"设置相机镜像失败"停机的问题: 现在运行只记一次告警照常跑, 相机设置窗保存时才提示写不进去; 停流重写节点后只在相机原本在出图时才重新开流
-
调试端"单次触发"拍多曝光方案中途读图失败后, 相机停在多曝光四帧连拍状态、之后相机设置窗预览忽明忽暗的问题: 失败也会卸掉多曝光, 相机设置窗打开前也会先卸
-
海康相机开着自动曝光时打开工程, 多曝光被误判为"相机型号不支持 HDR 轮询"的问题: 探测时临时关自动曝光, 节点暂不可用的开跑装弹前再探一次
-
系统设置关了"启用 MES 上传"但 MES 上传程序仍连着时, 对外汇总串仍报"写入Mes结果:成功"的问题: 现在不带 MES 行
-
度申网口相机开前的网段预检只认友好名末尾的 IP, 不再把 USB 机型信息里的版本号当成 IP 误拦
-
字符检测混淆字符 / 替换字符表里同一行两格都选中再点删除会连带删掉下一行的问题
-
整件逻辑检测: 禁用 / 删除过检测项、方案、工位后它用的变量在开跑前就报"变量不存在", 不再等第一件运行到整件逻辑才停机(预处理里自己赋的名字、内建函数、SN / 串口变量不算); 删副模板后的变量不再被方案内逻辑检测误报成"别的方案的变量"; 复制出的逻辑检测立即登记所属方案; 重命名整件逻辑会同步通讯输出里的
&整件逻辑->名字引用, 禁用后被通讯输出引用的也在开跑前报; 整件逻辑设置窗来源列与缺图提示英文模式下有译文 -
调试端"整体运行"时没装调试图的方案在运行时间旁点名提示, 不再静默跳过; 某方案出错时整件逻辑不再显示上一次的结果
-
多尺度形状匹配: 缩放上下限相等(如 1.0 / 1.0)的老工程按形状匹配处理不再拒训(模板触发同); 字符识别的空白屏蔽区同样按定位比例映射; 模板触发调试窗口画的框按缩放后尺寸定位
-
有无检测: "导入图片注册"窗口的框按类型视野锁定(只能移动 / 旋转), 不再把大小随意的图注册进已有注册图的类型; 删除类型后不再自动跳到相邻类型并顺带改框
-
光照拉伸在图像宽度不是 4 的倍数时出图错乱、偶尔导致软件崩溃的问题
-
运行中注册有无 AI 的 OK / NG 样本时,注册框看不到上一件的结果图与判定(检测引擎与界面各持一份工程后的回归)
-
工程加载完成后立即开始运行偶发被拒、提示工程正在加载(project is loading)的问题(检测引擎自动重启并重新载入工程后马上开跑时最容易遇到)
-
检测引擎退出时最后约 2 秒的件级记录(节拍库)可能丢失的问题
-
系统时间被调整(手动改时间或自动校时)或电脑休眠唤醒后, 界面误判检测引擎失联并重启引擎的问题
-
检测引擎(独立进程运行时)崩溃后有时不生成崩溃转储文件(log 下的 engine_crash_*.dmp)的问题: 部分相机驱动加载后会顶掉软件的崩溃捕获, 现在引擎在设备初始化完成、每次载入工程(相机打开)之后都会重新接管一次, 崩溃时照常留下转储供售后分析
2.0.6.07(main) (2026.01.28)¶
新增¶
- 软加密校验
修复¶
- 修复分类器下定位参数的算法为模板匹配时, 没有设置模板图会导致加载工程异常的问题
- 修复MES通信异常会导致软件卡死的问题
优化¶
- 去掉保存ROI小图的功能
2.0.6.06(main) (2025.09.02)¶
新增¶
- 新增对道显液态镜头的支持
- 新增了系统配置文件中对于保存ROI小图的控制位
修复¶
- 修复主界面HTML标签异常显示的问题
- 修复添加多种指令后, 原来的isFirstLabelWorker逻辑错误问题
2.0.6.05(main) (2025.04.14)¶
新增¶
优化¶
- 更换了解码算法
- 优化了部分接口代码的调用
- 优化了MES通信的关闭过程
修复¶
- 修复StrVar类型在使用时判断不够准确的问题
- 修复HDR功能不支持彩色图像的问题
- 修复了部分情况下事件循环时类型判断不够准确导致调用了不存在属性的问题
2.0.6.03(demo) (2025.01.17)¶
新增¶
- 标签外框新增模板匹配算法切换
- 新增通讯设备选择modbus协议设备时, 通讯输出的输出值选择bool类型时可以自定义区分值
- 标签外框的特征点匹配算法新增扩张匹配的可选项
- 新增解码结果的正则过滤功能
优化¶
- 优化解码算法
- 优化称重串口收到负数, 多组数据时的处理逻辑
修复¶
- 修复由于多线程的不确定性, 导致逻辑检测比对变量时的误判问题
2.0.6.02 (2024.11.29)¶
新增¶
- 新增回车键触发的系统配置项
- 新增调试界面允许通过框选ROI来新建分类器的功能
优化¶
- 优化样式表
- 暂时去掉各种运行时间的显示
- 暂时允许操作: 禁用条码字符对的码检测后, 用OCR结果作为SN
修复¶
- 修复对相机触发时间的计算方式错误
- 修复数据收发(扫码器)的重复扫码错误
- 修复检测器在保存时, 将原图保存为了灰度图的问题
2.0.6.01 (2024.11.15)¶
新增¶
- 新增显示分类器NG情况
- 新增扫码枪结果作为自定义变量, 可供SN比对
- 新增保存工程模式(速度优先/空间优先), 默认速度优先
优化¶
- 简化工作站和检测器的命名
- 优化模板触发的默认参数
修复¶
- 修复打开调试界面以及打开调试界面的部分对话框, 有时白屏闪退的问题
- 修复对颜色工具面积范围的判断问题
- 更新螺丝检测模型
- 更新海康相机驱动
- 修复设置相机参数界面, 切换触发模式时, 参数与相机状态不一致, 导致软触发卡死的问题
- 修复新OCR算子英文模型的越界问题
- 修复关闭设备设置窗口后, 没有重新初始化所有设备的问题
- 修复统计数据的一处变量错误
- 修复获取磁盘空间统计时, 对路径判断不佳的错误
2.0.5.32 (2024.10.22)¶
新增¶
- 新增三色灯, 蜂鸣器, 传送带等设备的控制界面
- 新增串口设备收发数据和指令的专用界面
优化¶
- 检测器全局参数增加固定图案缺陷检测所需的更亮, 更暗阈值参数
- 优化异常检测算子自动注册图片时的重复度判断
2.0.5.31 (2024.10.17)¶
新增¶
- 新增烽火无SN的存图格式
- 新增通讯输出指令的延迟输出属性
优化¶
- 优化了日志记录, 并追加了monitor日志
修复¶
- 修复OCV算子的对话框在特定条件下ROI坐标错误的问题
~ (2024.10.07)¶
新增¶
- 光源控制器配置增加运行时常量模式, 便于模板触发
- 增加新的OCR算子
- 增加分类器复制粘贴功能
优化¶
- 优化统计数据文件的读写, 以及出错处理
- 简化标签外框分类器的参数
- 简化固定图案缺陷检测的部分参数
- 简化码检测算法的参数, 去掉多行字符比对
- 简化OCR算法的参数
2.0.5.30 (2024.10.07)¶
新增¶
- 光源控制器配置增加运行时常量模式, 便于模板触发
- 增加分类器复制粘贴功能
优化¶
- 优化统计数据文件的读写, 以及出错处理
修复¶
- 修复一个工作站下多个检测器, 或检测器相机参数延时较大时, 点击软触发按钮会多次触发的问题
- 修复点击运行按钮后, 检测器相机参数的触发相关参数失效的问题
2.0.5.29 (2024.09.26)¶
新增¶
- 新增系统设置, 所有检测器结果整合为总结果时, 可只取部分PASS
优化¶
- 优化有无检测的斑点检测和边缘分析参数的取值范围
修复¶
- 修复标签检测工作站绑定相机后, 然后被禁用, 再切换工程, 上一工程的相机没有释放的问题
- 修复统计数据参数缺失的问题
2.0.5.28 (2024.09.20)¶
新增¶
- 新增统计数据超时删除的功能
- 运行指令编辑页面新增上移, 下移按钮
优化¶
- 优化配置项的位置
- 优化运行时间统计
修复¶
- 修复MES对返回消息处理混乱的问题
2.0.5.27 (2024.09.11)¶
新增¶
- 调试界面单次触发加入光源控制器逻辑
优化¶
- 优化固定图案缺陷检测的白底黑字检测逻辑
修复¶
- 修复使用了有无检测的AI功能, 会出现无法保存工程的问题
- 修复异常检测训练时会出现卡死的问题
2.0.5.26 (2024.09.05)¶
新增¶
- 新增绑定相机时, 相机品牌自定义选择
- 新增FTP存图功能
优化¶
- 优化固定区域的白底黑字检测逻辑
- 优化通讯输出的错误提示
修复¶
- 修复FTP存图没有检测路径是否正确的问题
- 修复称重串口的流程和指令的逻辑问题
2.0.5.25 (2024.08.23)¶
新增¶
- 新增异常检测分类器
优化¶
- 优化Modbus RTU Handler的输出信息
- 调整系统设置的UI
- 优化调试界面, 工作站, 检测器NG情况的显示
- 调整整体存图的逻辑
修复¶
- 修复运行指令编辑界面, 输出的modbus slave id保存错误的问题
- 修复迈德威视相机在设置触发模式前, 没有准备视频流的问题
- 修复液态镜头的逻辑漏洞
2.0.5.24 (2024.08.12)¶
新增¶
- 新增不良品不上传MES的选项
- 新增存图时去除windows的非法字符
优化¶
- 优化主界面检测器的结果背景颜色显示
- 优化OCV默认参数, 训练和删除字体的逻辑
- 超时锁屏改为不弹窗, 直接在侧边显示, 并且运行也计时
修复¶
- 修复迈德威视网口相机的序列号异常的问题
- 修复品质未审核报错白屏的问题
2.0.5.23 (2024.07.15)¶
新增¶
- 增加新的OCV算法, 与新旧切换功能
- 模板预处理新增了镜像操作
- 新增对彩色相机的兼容
- 新增颜色抽取分类器及其算法
- 调整了运行时指令的架构
优化¶
- 优化相机参数设置页面保存配置的逻辑
- 优化图像增强参数的配置
- 优化系统设置页面内光源串口和PLC串口的选择
- 调整超时锁屏的逻辑
- 禁用相机参数设置页面使用ESC退出
- 增加上一次绑定相机的记录, 优化相机偶尔掉线后重新绑定参数会变更的情况
- 优化相机列表的显示, 增加用户自定义名称字段
- 优化部分运行时间的显示
修复¶
- 修复保存工程后, 超时锁屏的计时器没有重新开始计时的问题
- 修复品质未审核弹窗报错时, 窗体内容偶尔为空的问题
- 修复数据统计过程中, 抛错类型不正确的问题
2.0.5.21 (2024.05.09)¶
新增¶
- 新增主界面显示分类器的PASS ROI
- 增加basler, 海康相机支持
- 增加模板触发功能
- 增加部分双语切换功能
- 增加OCR模型加速功能选项
优化¶
- 优化相机和分类器的参数设置
- 优化重量不良的判断逻辑
- 优化运行时间的统计显示
修复¶
- 修复调试界面单次触发相机异常的问题
2.0.5.20 (2024.03.29)¶
新增¶
- 新增PASS图保存时的后缀可选择, 以节省空间
- 新增定位参数的模板匹配可选择始终自动计算参数
优化¶
- 优化存图线程
- 优化声音文件的加载过程
- 优化总运行时间的显示
- 优化OK/NG判断时阈值的可调整范围
- 优化运行模式的限制
修复¶
- 修复相机参数设置界面对触发类型判断有误的问题
2.0.5.19 (2024.03.15)¶
新增¶
- 调试界面新增单次触发按钮
优化¶
- 调试界面右键菜单取消原图选择, 默认不使用原图, 添加标签外框选择
- 允许分类器右键菜单可修改是否使用原图
- 字符检测默认关闭预处理
修复¶
- 修复分类器使用原图时, 导入工程后图像赋值出错的问题
- 修复分类器禁用后部分算子仍会进行训练或运行的问题
- 修复度申相机的接口路径不一致的问题
2.0.5.18 (2024.01.15)¶
新增¶
- 增加打开工程失败时的错误记录日志
- 新增解码C/S架构, 提升解码时间
- 新增调试界面模板拉伸的光照拉伸选项
- 新增UPCA兼容模式, 去掉EAN13码制首位的0
优化¶
- 优化存图的路径命名规则
- 优化存图逻辑, 不再检测已用存储空间大小
- 设置自动存图时不再自动修改检测器的存储空间大小
- 优化配置文件的存储
- 优化MES信息的显示
修复¶
- 修复固定, 可变, 字符在禁用后仍会进行训练的问题
- 修复字体检测时自动选择字体的路径错误问题
- 修复不启用SN时日期格式错误的问题
2.0.5.17 (2023.11.14)¶
新增¶
- 新增码检测错误模块检查功能
- 新增侧栏MES收发时间的显示
优化¶
- 优化主界面品质管理的字体表现
- 变更存图路径的逻辑
修复¶
- 修复保存工程意外中断后, 无法再次保存的问题
- 修复多检测器存图时删除路径异常报错的问题
2.0.5.16 (2023.11.02)¶
新增¶
- 新增品质权限管理功能
- 新增小样本学习功能
优化¶
- 模板图编辑模式的旋转角范围扩展到-180度到180度
- 增加打开调试界面的快捷按钮
- 工程体积优化
2.0.5.15 (2023.08.29)¶
新增¶
- 新增模板匹配算法
- 新增卡尺工具
- 更新螺丝检测模型
优化¶
- 暂时移除轮廓分割和轮廓识别
修复¶
- 修复细节检测器的更新结果问题
2.0.5.14 (2023.08.28)¶
新增¶
- 新增逻辑检测分类器, 可进行可变区域的日期结果比对和固定区域的定位距离判断
- 新增码检测的与无明文固定字符比对的功能
- 有无检测新增螺丝检测模型
- 新增搜索参数可按ROI搜索的功能
优化¶
- 优化固定图案缺陷检测的自动算法检测
- 优化有无检测界面在低分辨率下的显示
- 优化字体缺陷检测的读取模板流程
- 新建标签缺陷检测器时自动递增序号
- 调试界面训练时可取消后续的训练
- 优化固定图案定位参数的特征点显示
- 优化固定图案定位参数的强弱边缘自动计算
修复¶
- 修复细节检测器的参数问题
- 修复有无检测的结果初始化异常的问题
- 修复固定图案缺陷检测时矫正角度超范围的异常报错问题
- 修复检测器设置取反后模板图未刷新的问题
2.0.5.13 (2023.08.14)¶
新增¶
- 区域分析新增边缘检测工具, 并更名为有无检测
优化¶
- OCR模型升级
修复¶
- 修复不检验SN时良率统计的问题
- 变更MES上传失败时结果标签的底色
- 修复operatorId缺失的问题
- 修复当已经打开工程后, 调整自动存图设置, 没有映射到工程检测器上的问题
2.0.5.12 (2023.08.09)¶
新增¶
- 新增运行后检测结果音声播报的功能
- 新增是否启用SN检查的功能
修复¶
- 修复通过相机设置界面添加主模板后, 再首次点击检测器, 切换模式失败的问题
- 修复系统设置中工作站数量校验出错的问题
2.0.5.11 (2023.08.05)¶
新增¶
- 新增逻辑检测分类器, 用于比对可变区域的结果字符, 目前仅支持比对日期格式
- 新增训练工程菜单项, 位于调试界面左上角->菜单, 将保存和训练拆分成2个动作
- 新增软件系统设置, 统一管理自动存图, 光源控制器串口等参数
- 字符检测参数新增中文字符转换为英文字符的勾选项, 该参数默认为真
- 新增从设置相机参数界面配置模板图的功能
- 新增从设置相机参数界面通过串口打开光源的功能
优化¶
- 优化分类器禁用后就仍要进行训练的问题, 调整为部分分类器禁用后不进行训练
- 优化固定图案缺陷检测时自动算法选择的标准
- 优化ROI向导功能的使用
- 优化运行时间
- 优化标签外框定位, OCR识别的结果显示
- 优化拖动编辑界面的ROI后, 部分分类器支持图像即时显示
修复¶
- 修复通讯客户端在运行出错后未显示的问题
- 修复软件系统设置中赋值异常的问题
2.0.5.10 (2023.06.25)¶
新增¶
- 新增HDR合成拍照与软触发
- 新增解码方法
- 新增定位参数的算法(用在可变区域与条码字符对)
- 新增字符缺陷检测时的部分中间过程图
优化¶
- 优化MES结果显示, MES写入失败时结果也将在主界面NG/PASS处显示.
- 打开与新建工程时, 默认连接通讯客户端并隐藏.
- 优化自动存图路径与存图相关的设置, 当前自动存图格式为 D:/鲁班LOGO机/NG/日期白班/工作站名_检测器名/SN.png
- 优化了缺陷检测算法的一些默认数值
- 延长了MES的通信等待时间, 避免超时情况频繁出现
修复¶
- 修复缺陷检测的透视变换, 在迭代次数过高时容易找不到边缘特征点的问题
- 修复HDR软触发不稳定, 合成图像亮度会变化的问题
- 修复在每个检测任务开始前清空相机缓存, 其在工作站有多个检测器时无效的问题
2.0.5.9 (2023.06.09)¶
新增¶
- 新增软件全局设置: 自动存图
- 勾选自动存图后, 会变更检测器内的存图路径(如果之前为空), 以及所有图都存
- 新建检测器时, 检测器设置内的存图默认启用, 路径为工程路径\工作站名\检测器名
- 新建与打开工程时, 将检测器的存图路径变更(如果之前为空)和NG存图改为False
2.0.5.8 (2023.05.19)¶
新增¶
- 新增对度申相机的适配
修复¶
- 修复开启标签外框定位参数的透视矫正, 和开启多曝光之后会出错的问题
- 修复相机设置界面从连续模式切换到触发模式, 保存之后没有取消读图的问题
2.0.5.7 (2023.05.10)¶
新增¶
- 新增授权码管理机制
- 新增可选标签外框的所有特征点来做定位匹配
优化¶
- 优化了运行时可打开分类器界面修改参数
修复¶
- 修复了区域分析的部分BUG
2.0.5.6 (2023.04.18)¶
优化¶
- 优化了多行字符的表格显示, 增加结果详细信息, 表格固定长度
- 优化ROI向导, 邻近ROI合并
- 优化分类器窗口结果PASS, FAIL显示
- 优化多行字符的默认搜索参数
- 默认启用标签外框矫正, 是否启用矫正放到基础参数里
2.0.5.5 (2023.04.17)¶
新增¶
- 新增ROI自动检测向导
2.0.5.4 (2023.04.14)¶
优化¶
- 优化多行字符ROI排序方式
修复¶
- 修复编辑模式下多行字符屏蔽掩膜取图不对的问题
- 修复模板图操作空间显示不正确的问题
2.0.5.3 (2023.04.13)¶
新增¶
- 新增多行字符可屏蔽其他分类器ROI的功能
- 新增鼠标中键按住拖动视野的功能
修复¶
- 修复多行字符提取行数调小后, 在设置参考字符时出现越界的问题
- 修复自动添加字体时, 默认路径不正确的问题
2.0.5.2 (2023.04.12)¶
新增¶
- 多行字符新增了比对相似度, 删除了是否混淆
- 调试界面的滚轮事件变更为缩放操作
修复¶
- 修复了条码识别预处理会改变输入图的问题
2.0.5.1 (2023.04.11)¶
新增¶
- 新增区域分析分类器
- 条码识别增加图像预处理
优化¶
- 优化了调试界面的布局显示
- 优化了多行字符的识别预处理
修复¶
- 修复条码字符对里条码识别结果底层变量未赋值的问题
2.0.5.0 (2023.04.03)¶
新增¶
- 新增多行字符分类器
- 新增码检测分类器可作为SN码
优化¶
- 底层库轻量化
2.0.4.1 (2023.03.29)¶
优化¶
- 默认关闭三色灯配置
- 默认开启NG存图, 路径为软件安装目录下的SaveImage
- 开放定位参数-金字塔参数可调。低分辨率下建议改为一层,并设置数值为3
- SN码获取逻辑改为优先扫码获取,扫码失败时从OCR结果获取
修复¶
- 修复了标签外框定位参数部分数据类型错误的BUG
2.0.4.0 (2023.03.22)¶
优化¶
- 标签外框定位参数的算法优化
- DataMatrix解码算法优化
- 优化了主界面运行状态时不可打开分类器进行参数修改
修复¶
- 修复了单模板运行时有时会触发多曝光的问题
- 修复了单模板运行时NG的ROI位置错误的问题
2.0.3.2 (2022.10.18)¶
新增¶
- 条码检测结果中可对结果进行裁剪
- 提供多曝光扫码功能
优化¶
- 相机配置时连续模式下可直接保存设置
- 优化串口通讯处理
修复¶
- 修复最小限定框算法BUG
2.0.3.1 (2022.9.24)¶
新增¶
- 设置黑白
优化¶
- 优化未启用定位时,不检查是否训练
- 优化训练默认参数
- 条码, 固定, 可变字符缺陷参数默认不启用
- 定位参数训练器的强弱边缘默认值优化
- 标签外框定位参数的标签矫正功能默认不启用
- 字体训练-读取模板时,默认抓取当前图片并设置结果,优化训练体验
- 字符识别工具里面默认添加中英文冒号的替换字符对
修复¶
- 修复多工作站相机读图问题
- 禁用部分按钮
- mes切换到在线时, 第二次及以后不会做登陆检查的问题
- mes上传的重量数据类型不对的问题
- 修复SN码带有非法字符时存图路径有误的问题
-------------------------------------------------------------------------------------------
2.0.2.1 (2022.3.21)¶
新增¶
- 统计功能
- 人工复判-静默密码
- 判对率
优化¶
- 检测器检查硬件报错时候也报出工作站的名称
修复¶
- 修复已知bug
-------------------------------------------------------------------------------------------
2.0.1.4 (2021.12.30)¶
新增¶
- 可设置软件抛错处理模式
- 可设置软件运行模式
- 可自定义检测流程
- 显示当前特征点数
- 框选显示区域像素面积
- 新增可停止训练操作
优化¶
- 打包脚本
- "设置为模板"->"设置为特征点模板"
- 比对图像界面优化使用
修复¶
- 修复超时锁屏解锁后 用户权限显示界面错误的bug
- 修复存图流程的bug
-------------------------------------------------------------------------------------------
2.0.1.3 (2021.12.6)¶
新增¶
- 可单独保存相机配置文件
- 存图空间即将用完提示信息
- 分类器可设置为模板
优化¶
- 运行界面保存工程时不执行训练操作
- 切换调试文件夹时候弹出进度条
- 运行过程中不能打开工程
修复¶
- 修复配置文件损坏后的处理机制
- 修复更新调试界面出现错误的bug
- 修复退出软件选择保存不能成功退出的bug
- 修复检测器被禁用后拍照触发不了的bug
- 修复字符识别ui未显示的bug
-------------------------------------------------------------------------------------------
2.0.1.2 (2021.11.23)¶
新增¶
- 打开调试图片文件夹可选择屏蔽特定类型的图片
优化¶
- 优化 超时锁屏功能的窗口弹出
修复¶
- 修复存图耗时太长的bug
-------------------------------------------------------------------------------------------
2.0.1.1 (2021.11.15)¶
新增¶
优化¶
-
调试软件图标
-
优化 调试软件退出提示保存功能
-
优化 超时锁屏功能的窗口弹出
-
优化 标签外框的定位参数, 空白区域参数的显示
修复¶
-
修复多个检测器时卡不包含相机触发时间错误的bug
-
修复打包文件找不到cv_wechat的问题
-
修复删除图片文件报错的问题
-------------------------------------------------------------------------------------------
2.0.1.0 (2021.11.10)¶
新增¶
1. 新增 轮廓识别分类器
2. 新增 可选择运行时间是否包含相机触发时间
3. 新增 可单独开启调试软件
4. 新增 超时锁屏
优化¶
修复¶
-------------------------------------------------------------------------------------------
2.0.0.7 (2021.10.28)¶
新增¶
-
新增 工程另存为 功能
-
新增 比对图片界面 可比对模板图
优化¶
-
优化运行界面图片控件的显示
-
优化运行界面左侧布局显示
-
优化 采用线程打开工程文件
修复¶
- 修复当修改模板图时候 取图显示错误的bug
-------------------------------------------------------------------------------------------
2.0.0.6 (2021.10.19)¶
新增¶
- 可设置相机读图超时时间
优化¶
修复¶
-
修复已知bug
-
修复写mes时候上传的defectDesc不对的bug
-
修复通过键盘删除 屏蔽空白/内容框 闪退的bug
-------------------------------------------------------------------------------------------
2.0.0.5 (2021.10.16)¶
新增¶
-
串口设置界面新增指令操作参数
-
调试界面可显示通道值/像素坐标
优化¶
- 打开工程会默认打开上一次工程文件目录
修复¶
-
修复解析串口数据出现错误的bug
-
修复状态栏显示信息会消失的问题
-
修复图片对比界面当切换下一个检测器再切回来时显示图片比例不对的问题
-
修复运行中拔掉串口线再点击停止按钮后会一直弹框的问题
-------------------------------------------------------------------------------------------
2.0.0.4 (2021.10.12)¶
新增¶
-
分类器-屏蔽内容检测框
-
分类器-屏蔽空白检测框
-
新建分类器时可选择是否使用原图
优化¶
-
启用/禁用当前分类器菜单优化
-
优化 切换检测器/模式/, 旋转模板图时进度条提示
-
优化 切换检测器时, 显示图片窗口已被放大时, 默认矫正为初始显示比例
-
优化 旋转/拉伸模板图的操作流程
-
优化 运行界面运行时, 不能操作模板图旋转参数
修复¶
-------------------------------------------------------------------------------------------
2.0.0.3 (2021.10.9)¶
新增¶
优化¶
修复¶
-
修复打开调试文件夹以及图片比对界面切换图片的bug
-
修复切换检测器/切换模板图时候 直接点击复选框会出现的未刷新界面的bug
-
修复调试界面运行后到运行界面运行导致刷图错误的问题(运行前重置检测器的result)
-------------------------------------------------------------------------------------------
2.0.0.2 (2021.9.30)¶
新增¶
-
蜂鸣器设置
-
多进程模式
-
可设置运行界面显示布局
-
运行界面可双击显示图片控件打开对应检测器的原图以及结果图
-
串口通讯
-
调试界面可设置图片拉伸类型
-
字符识别界面新增 “替换字符”
优化¶
-
优化检测器点击, 模板图项点击的问题
-
新建工作站,检测器的名称长度限制为20
-
优化通讯服务端指令列表的初始化显示
-
优化检测图片比对操作
-
优化调试界面的运行(采用线程执行)
修复¶
-
调试运行
-
重启线程出错后未刷新调试界面运行线程标志位的bug
-------------------------------------------------------------------------------------------
2.0.0.1 (2021.9.20)¶
新增¶
-
调试模式下可选择打开调试图片文件夹
-
鼠标右键可以选择增加分类器
-
运行界面可双击打开图片文件夹
-
空白区域增加屏蔽检测区域
优化¶
-
拍照后, 软件状态切换为 “运行中”
-
禁用检测器, 模板图的双击操作
-
保存提示信息带工作站名称
-
添加分类器时会隐藏别的roi
-
新建检测工作站前增加进度条提示
修复¶
-
编辑模式下新建检测器, "当前图原图" 这一页会被删除的bug
-
多个检测器情况下, 删除某个检测器的标签外框后再切换到别的检测器时, 调试按钮不能点击的bug
-------------------------------------------------------------------------------------------
2.0.0.0 (2021.9.17)¶
新增¶
-
更换软件logo图标
-
可通过键盘点击roi删除分类器
-
拍照前, 软件状态切换为 “运行中”
-
空白区域新增参数选择框
-
没有权限添加副模板的分类器直接不显示操作按钮
优化¶
-
切换调试/编辑模式偶尔出现图片卡住情况
-
调试图有值则默认切换到调试模式
-
优化windows下弹窗放大缩小的问题
-
优化光栅误触的问题
-
优化windows下运行按钮的实现, 使输入框失去焦点
-
优化调试界面运行后判断当前运行模式再进行刷图