OTF(On-The-Fly)技术详解
目录
- [一、什么是 OTF 技术](#一、什么是 OTF 技术)
- 二、工作原理
- 三、关键技术组成
- [四、OTF 技术特点](#四、OTF 技术特点)
- 五、典型应用场景
- [六、OTF 技术优势](#六、OTF 技术优势)
- [七、OTF 技术挑战](#七、OTF 技术挑战)
- [八、Stop-and-Go 与 OTF 全面对比](#八、Stop-and-Go 与 OTF 全面对比)
- 九、总结
- 附录:术语表
一、什么是 OTF 技术
OTF(On-The-Fly) 是一种高速视觉检测技术,其核心思想是:
在设备连续运动过程中完成图像采集 ,而不是采用传统的"运动 → 停止 → 拍照 → 再运动"的 Stop-and-Go 方式。
OTF 技术利用 编码器位置反馈 代替 时间触发 ,通过实时位置触发相机和光源,使设备在高速运动状态下依然能够获得清晰图像,从而大幅提升设备产能(UPH,Units Per Hour)。
核心价值一句话概括
| 维度 | Stop-and-Go | OTF |
|---|---|---|
| 运动方式 | 走走停停 | 连续运动 |
| 触发方式 | 时间触发 | 编码器位置触发 |
| 产能 | 受限 | 显著提升 |
| 机械冲击 | 大 | 小 |
二、工作原理
2.1 传统视觉架构(Stop-and-Go)
工作流程:
运动到目标位置
↓
设备停止
↓
触发相机拍照
↓
图像处理
↓
继续运动
特点:
- 机械频繁启停
- 存在加减速时间
- 节拍受限
- UPH 较低
2.2 OTF 视觉架构
工作流程:
设备连续运动
↓
编码器实时输出位置
↓
达到预设坐标
↓
位置触发信号
↓
频闪光源点亮
↓
相机曝光
↓
图像 DMA 传输
↓
设备继续运动
关键点:整个过程中平台无需停止。
2.3 两种架构流程对比
#mermaid-svg-wXuPdEgEhH3jFhkI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wXuPdEgEhH3jFhkI .error-icon{fill:#552222;}#mermaid-svg-wXuPdEgEhH3jFhkI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wXuPdEgEhH3jFhkI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wXuPdEgEhH3jFhkI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wXuPdEgEhH3jFhkI .marker.cross{stroke:#333333;}#mermaid-svg-wXuPdEgEhH3jFhkI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wXuPdEgEhH3jFhkI p{margin:0;}#mermaid-svg-wXuPdEgEhH3jFhkI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI .cluster-label text{fill:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI .cluster-label span{color:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI .cluster-label span p{background-color:transparent;}#mermaid-svg-wXuPdEgEhH3jFhkI .label text,#mermaid-svg-wXuPdEgEhH3jFhkI span{fill:#333;color:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI .node rect,#mermaid-svg-wXuPdEgEhH3jFhkI .node circle,#mermaid-svg-wXuPdEgEhH3jFhkI .node ellipse,#mermaid-svg-wXuPdEgEhH3jFhkI .node polygon,#mermaid-svg-wXuPdEgEhH3jFhkI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wXuPdEgEhH3jFhkI .rough-node .label text,#mermaid-svg-wXuPdEgEhH3jFhkI .node .label text,#mermaid-svg-wXuPdEgEhH3jFhkI .image-shape .label,#mermaid-svg-wXuPdEgEhH3jFhkI .icon-shape .label{text-anchor:middle;}#mermaid-svg-wXuPdEgEhH3jFhkI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wXuPdEgEhH3jFhkI .rough-node .label,#mermaid-svg-wXuPdEgEhH3jFhkI .node .label,#mermaid-svg-wXuPdEgEhH3jFhkI .image-shape .label,#mermaid-svg-wXuPdEgEhH3jFhkI .icon-shape .label{text-align:center;}#mermaid-svg-wXuPdEgEhH3jFhkI .node.clickable{cursor:pointer;}#mermaid-svg-wXuPdEgEhH3jFhkI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wXuPdEgEhH3jFhkI .arrowheadPath{fill:#333333;}#mermaid-svg-wXuPdEgEhH3jFhkI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wXuPdEgEhH3jFhkI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wXuPdEgEhH3jFhkI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wXuPdEgEhH3jFhkI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wXuPdEgEhH3jFhkI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wXuPdEgEhH3jFhkI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wXuPdEgEhH3jFhkI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wXuPdEgEhH3jFhkI .cluster text{fill:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI .cluster span{color:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wXuPdEgEhH3jFhkI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wXuPdEgEhH3jFhkI rect.text{fill:none;stroke-width:0;}#mermaid-svg-wXuPdEgEhH3jFhkI .icon-shape,#mermaid-svg-wXuPdEgEhH3jFhkI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wXuPdEgEhH3jFhkI .icon-shape p,#mermaid-svg-wXuPdEgEhH3jFhkI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wXuPdEgEhH3jFhkI .icon-shape .label rect,#mermaid-svg-wXuPdEgEhH3jFhkI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wXuPdEgEhH3jFhkI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wXuPdEgEhH3jFhkI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wXuPdEgEhH3jFhkI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 频繁启停,节拍受限
OTF 连续运动架构
设备连续运动
编码器实时输出位置
达到预设坐标
位置触发信号
频闪光源点亮
相机曝光
图像 DMA 传输
设备继续运动
Stop-and-Go 传统架构
运动到目标位置
设备停止
触发相机拍照
图像处理
继续运动
对比可见,Stop-and-Go 需要反复启停设备,而 OTF 在设备连续运动过程中即可完成图像采集,从而显著提升 UPH。
2.4 时序对比示意
#mermaid-svg-FfuSk2oiv5wHxbRf{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-FfuSk2oiv5wHxbRf .error-icon{fill:#552222;}#mermaid-svg-FfuSk2oiv5wHxbRf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FfuSk2oiv5wHxbRf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FfuSk2oiv5wHxbRf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FfuSk2oiv5wHxbRf .marker.cross{stroke:#333333;}#mermaid-svg-FfuSk2oiv5wHxbRf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FfuSk2oiv5wHxbRf p{margin:0;}#mermaid-svg-FfuSk2oiv5wHxbRf .mermaid-main-font{font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-FfuSk2oiv5wHxbRf .exclude-range{fill:#eeeeee;}#mermaid-svg-FfuSk2oiv5wHxbRf .section{stroke:none;opacity:0.2;}#mermaid-svg-FfuSk2oiv5wHxbRf .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-FfuSk2oiv5wHxbRf .section2{fill:#fff400;}#mermaid-svg-FfuSk2oiv5wHxbRf .section1,#mermaid-svg-FfuSk2oiv5wHxbRf .section3{fill:white;opacity:0.2;}#mermaid-svg-FfuSk2oiv5wHxbRf .sectionTitle0{fill:#333;}#mermaid-svg-FfuSk2oiv5wHxbRf .sectionTitle1{fill:#333;}#mermaid-svg-FfuSk2oiv5wHxbRf .sectionTitle2{fill:#333;}#mermaid-svg-FfuSk2oiv5wHxbRf .sectionTitle3{fill:#333;}#mermaid-svg-FfuSk2oiv5wHxbRf .sectionTitle{text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-FfuSk2oiv5wHxbRf .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-FfuSk2oiv5wHxbRf .grid .tick text{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-FfuSk2oiv5wHxbRf .grid path{stroke-width:0;}#mermaid-svg-FfuSk2oiv5wHxbRf .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-FfuSk2oiv5wHxbRf .task{stroke-width:2;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskText{text-anchor:middle;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutsideRight{fill:black;text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-FfuSk2oiv5wHxbRf .task.clickable{cursor:pointer;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskText0,#mermaid-svg-FfuSk2oiv5wHxbRf .taskText1,#mermaid-svg-FfuSk2oiv5wHxbRf .taskText2,#mermaid-svg-FfuSk2oiv5wHxbRf .taskText3{fill:white;}#mermaid-svg-FfuSk2oiv5wHxbRf .task0,#mermaid-svg-FfuSk2oiv5wHxbRf .task1,#mermaid-svg-FfuSk2oiv5wHxbRf .task2,#mermaid-svg-FfuSk2oiv5wHxbRf .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutside0,#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutside2{fill:black;}#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutside1,#mermaid-svg-FfuSk2oiv5wHxbRf .taskTextOutside3{fill:black;}#mermaid-svg-FfuSk2oiv5wHxbRf .active0,#mermaid-svg-FfuSk2oiv5wHxbRf .active1,#mermaid-svg-FfuSk2oiv5wHxbRf .active2,#mermaid-svg-FfuSk2oiv5wHxbRf .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-FfuSk2oiv5wHxbRf .activeText0,#mermaid-svg-FfuSk2oiv5wHxbRf .activeText1,#mermaid-svg-FfuSk2oiv5wHxbRf .activeText2,#mermaid-svg-FfuSk2oiv5wHxbRf .activeText3{fill:black!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .done0,#mermaid-svg-FfuSk2oiv5wHxbRf .done1,#mermaid-svg-FfuSk2oiv5wHxbRf .done2,#mermaid-svg-FfuSk2oiv5wHxbRf .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-FfuSk2oiv5wHxbRf .doneText0,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText1,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText2,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText3{fill:black!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .doneText0.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText0.taskTextOutsideRight,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText1.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText1.taskTextOutsideRight,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText2.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText2.taskTextOutsideRight,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText3.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .crit0,#mermaid-svg-FfuSk2oiv5wHxbRf .crit1,#mermaid-svg-FfuSk2oiv5wHxbRf .crit2,#mermaid-svg-FfuSk2oiv5wHxbRf .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-FfuSk2oiv5wHxbRf .activeCrit0,#mermaid-svg-FfuSk2oiv5wHxbRf .activeCrit1,#mermaid-svg-FfuSk2oiv5wHxbRf .activeCrit2,#mermaid-svg-FfuSk2oiv5wHxbRf .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-FfuSk2oiv5wHxbRf .doneCrit0,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCrit1,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCrit2,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-FfuSk2oiv5wHxbRf .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-FfuSk2oiv5wHxbRf .milestoneText{font-style:italic;}#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText0,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText1,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText2,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText3{fill:black!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText0.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText0.taskTextOutsideRight,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText1.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText1.taskTextOutsideRight,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText2.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText2.taskTextOutsideRight,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText3.taskTextOutsideLeft,#mermaid-svg-FfuSk2oiv5wHxbRf .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .vert{stroke:navy;}#mermaid-svg-FfuSk2oiv5wHxbRf .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .activeCritText0,#mermaid-svg-FfuSk2oiv5wHxbRf .activeCritText1,#mermaid-svg-FfuSk2oiv5wHxbRf .activeCritText2,#mermaid-svg-FfuSk2oiv5wHxbRf .activeCritText3{fill:black!important;}#mermaid-svg-FfuSk2oiv5wHxbRf .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-FfuSk2oiv5wHxbRf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 0 1 2 3 4 5 6 7 8 9 10 运动 连续运动 位置触发 停止 拍照 拍照 DMA传输 图像处理 再运动 Stop-and-Go OTF Stop-and-Go 与 OTF 节拍对比(示意)
说明:OTF 在连续运动过程中并行完成触发、拍照与传输,节拍显著缩短。
三、关键技术组成
3.1 编码器位置触发
OTF 最核心的技术在于 位置触发。
| 触发方式 | 说明 |
|---|---|
| 传统相机:时间触发 | 每 10 ms 拍一张 |
| OTF:位置触发 | 每移动 0.1 mm 拍一张 |
位置与图像形成 严格对应关系。
优点:
- 不受运动速度波动影响
- 图像位置精度高
- 适合高精度定位
分辨率计算示例:
Encoder Resolution = 10000 count/rev
Screw Lead = 10 mm/rev
位置分辨率 = 10 / 10000 = 1 μm/count
因此可以实现 微米级位置同步。
补充:实际系统中还需考虑编码器细分、机械背隙、触发延迟(Trigger Latency)与 Trigger Jitter 等因素。高精度 OTF 系统通常要求 Trigger Jitter < 1 μs。
3.2 短曝光冻结运动
由于设备不停运动:
Motion Blur = Velocity × Exposure Time
示例:
| 参数 | 数值 |
|---|---|
| 运动速度 | 1 m/s |
| 曝光时间 | 100 μs |
| 模糊量 | 1000 mm/s × 100 μs = 0.1 mm = 100 μm |
对于高精度 AOI,100 μm 已无法接受。
因此 OTF 通常要求:
Exposure < 5 μs,甚至 1~2 μs ,从而实现运动冻结(Motion Freeze)。
补充说明:
- 若允许一定模糊,可结合景深、分辨率与运动速度反推最大曝光时间。
- 高频振动、皮带传动抖动等也会叠加到模糊量中,需综合评估。
3.3 高频频闪照明
超短曝光带来新的问题:
曝光时间变短
↓
接收光能减少
↓
图像变暗
解决方案:
使用 高功率脉冲光源。
示例:
| 模式 | 功率 | 点亮时间 |
|---|---|---|
| 正常照明 | 10 W | 连续 |
| OTF 频闪 | 100~1000 W Peak | 仅几微秒 |
特点:
- 峰值亮度极高
- 平均功耗较低
- 可冻结高速运动目标
补充 :频闪光源需与相机曝光严格同步,通常由控制器输出 硬触发信号 同时驱动光源与相机,确保时序一致性。
3.4 DMA 高速图像传输
高速拍照会产生海量数据。
示例:
12 MP Camera / 20 FPS / Mono 8 bit
数据量 = 12 MB/frame × 20 fps = 240 MB/s
如果采用 CPU 搬运:
- CPU Occupancy ↑
- Latency ↑
因此 OTF 系统通常采用:
DMA(Direct Memory Access):数据直接写入内存。
优点:
- 降低 CPU 负载
- 减小延迟
- 提高实时性
常用高速接口:
| 接口 | 带宽(理论) | 典型场景 |
|---|---|---|
| USB3.0 | 5 Gbps | 中速检测 |
| 10GigE | 10 Gbps | 多相机系统 |
| Camera Link | 2~6 Gbps | 工业传统方案 |
| CoaXPress | 12.5 Gbps/lane | 高速高分辨率 |
四、OTF 技术特点
4.1 高 UPH
- 无需等待平台停止
- 设备持续运行
- 通常可提升 30%~200% 以上 生产效率
4.2 高定位精度
- 由编码器位置决定拍照位置
- 速度波动不会引起触发误差
4.3 高实时性
- 运动、拍照、传输 并行执行
- 降低系统节拍时间
- 运动与视觉同步
4.4 三要素同步
实现:Motion Control + Machine Vision + Lighting,三者同步。
#mermaid-svg-8vpeUavfOav6c0t7{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-8vpeUavfOav6c0t7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-8vpeUavfOav6c0t7 .error-icon{fill:#552222;}#mermaid-svg-8vpeUavfOav6c0t7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8vpeUavfOav6c0t7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8vpeUavfOav6c0t7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8vpeUavfOav6c0t7 .marker.cross{stroke:#333333;}#mermaid-svg-8vpeUavfOav6c0t7 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8vpeUavfOav6c0t7 p{margin:0;}#mermaid-svg-8vpeUavfOav6c0t7 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8vpeUavfOav6c0t7 .cluster-label text{fill:#333;}#mermaid-svg-8vpeUavfOav6c0t7 .cluster-label span{color:#333;}#mermaid-svg-8vpeUavfOav6c0t7 .cluster-label span p{background-color:transparent;}#mermaid-svg-8vpeUavfOav6c0t7 .label text,#mermaid-svg-8vpeUavfOav6c0t7 span{fill:#333;color:#333;}#mermaid-svg-8vpeUavfOav6c0t7 .node rect,#mermaid-svg-8vpeUavfOav6c0t7 .node circle,#mermaid-svg-8vpeUavfOav6c0t7 .node ellipse,#mermaid-svg-8vpeUavfOav6c0t7 .node polygon,#mermaid-svg-8vpeUavfOav6c0t7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8vpeUavfOav6c0t7 .rough-node .label text,#mermaid-svg-8vpeUavfOav6c0t7 .node .label text,#mermaid-svg-8vpeUavfOav6c0t7 .image-shape .label,#mermaid-svg-8vpeUavfOav6c0t7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-8vpeUavfOav6c0t7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-8vpeUavfOav6c0t7 .rough-node .label,#mermaid-svg-8vpeUavfOav6c0t7 .node .label,#mermaid-svg-8vpeUavfOav6c0t7 .image-shape .label,#mermaid-svg-8vpeUavfOav6c0t7 .icon-shape .label{text-align:center;}#mermaid-svg-8vpeUavfOav6c0t7 .node.clickable{cursor:pointer;}#mermaid-svg-8vpeUavfOav6c0t7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-8vpeUavfOav6c0t7 .arrowheadPath{fill:#333333;}#mermaid-svg-8vpeUavfOav6c0t7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8vpeUavfOav6c0t7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8vpeUavfOav6c0t7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8vpeUavfOav6c0t7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-8vpeUavfOav6c0t7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8vpeUavfOav6c0t7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-8vpeUavfOav6c0t7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8vpeUavfOav6c0t7 .cluster text{fill:#333;}#mermaid-svg-8vpeUavfOav6c0t7 .cluster span{color:#333;}#mermaid-svg-8vpeUavfOav6c0t7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8vpeUavfOav6c0t7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-8vpeUavfOav6c0t7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-8vpeUavfOav6c0t7 .icon-shape,#mermaid-svg-8vpeUavfOav6c0t7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8vpeUavfOav6c0t7 .icon-shape p,#mermaid-svg-8vpeUavfOav6c0t7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-8vpeUavfOav6c0t7 .icon-shape .label rect,#mermaid-svg-8vpeUavfOav6c0t7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8vpeUavfOav6c0t7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-8vpeUavfOav6c0t7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-8vpeUavfOav6c0t7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 运动控制
Motion Control
同步触发
机器视觉
Machine Vision
光源照明
Lighting
高速高精度图像采集
五、典型应用场景
5.1 AOI(自动光学检测)
- PCB 检测:焊点检查 / 元件缺失 / 偏移检测 / 高速扫描 PCB
5.2 SMT 贴片机
- Fiducial 定位
- 元件识别
- 贴装校正
- 减少机械停顿时间
5.3 半导体设备
- Die Bond
- Wire Bond
- Wafer Inspection
- Wafer Handling
在运动过程中完成定位和检测。
5.4 显示面板检测
- LCD / OLED
- MiniLED
- MicroLED
提升大尺寸面板检测效率。
5.5 锂电池检测
- 极片检测
- 卷绕检测
- Tab 检测
实现高速连续生产。
应用场景汇总表
| 行业 | 典型应用 | OTF 价值 |
|---|---|---|
| PCB / AOI | 焊点、元件、偏移 | 高速扫描,提升 UPH |
| SMT | Fiducial、元件识别 | 减少停顿 |
| 半导体 | Die/Wire Bond、Wafer | 运动中定位检测 |
| 显示面板 | LCD/OLED/MiniLED | 大尺寸高效检测 |
| 锂电池 | 极片、卷绕、Tab | 连续高速生产 |
六、OTF 技术优势
| 优势 | 说明 |
|---|---|
| 显著提高 UPH | 设备无需频繁启停,是 OTF 最大的价值 |
| 降低机械冲击 | 减少加速、减速、停机,有助于提升设备寿命 |
| 提升运动控制效率 | 运动轨迹更平滑,振动更小 |
| 更高的系统吞吐量 | 适合高速生产线、大批量制造 |
七、OTF 技术挑战
7.1 对照明要求极高
- 高频频闪
- 高峰值功率
- 精确时序控制
7.2 对相机要求高
通常需要:
- Global Shutter(全局快门)
- 外部硬触发
- 低延迟
卷帘快门通常不适用。
7.3 运动控制要求高
- 编码器精度高
- Trigger Jitter 低
- 控制器实时性强
7.4 数据带宽压力大
需要高速接口:
- USB3.0
- 10GigE
- Camera Link
- CoaXPress
挑战与应对汇总
| 挑战 | 应对措施 |
|---|---|
| 照明不足 | 高频频闪、高峰值功率光源 |
| 运动模糊 | 超短曝光 + 全局快门 |
| 触发抖动 | 高精度编码器 + 实时控制器 |
| 数据瓶颈 | DMA + 高速接口 |
| 时序复杂 | 运动/视觉/光源统一同步架构 |
八、Stop-and-Go 与 OTF 全面对比
| 项目 | Stop-and-Go | OTF |
|---|---|---|
| 平台运动 | 停止拍照 | 连续运动 |
| 触发方式 | 时间触发 | 编码器位置触发 |
| UPH | 较低 | 高 |
| 机械冲击 | 大 | 小 |
| 曝光时间 | 较长 | 极短 |
| 光源要求 | 普通照明 | 高频频闪 |
| 实时性 | 一般 | 优秀 |
| 实施难度 | 低 | 高 |
| 定位精度 | 受机械停止影响 | 由编码器决定,精度高 |
| 适用场景 | 低速、高精度 | 高速、大批量 |
九、总结
OTF(On-The-Fly)技术 是一种基于 编码器位置触发 的高速机器视觉架构,通过在设备连续运动过程中实时触发相机和频闪光源完成图像采集,避免传统 Stop-and-Go 模式带来的停机等待时间。
核心优势:
- 显著提升 UPH
- 降低机械启停冲击
- 实现运动与视觉的精确同步
主要挑战:
- 编码器精度
- 控制器实时性
- 频闪照明
- Global Shutter 相机
- 高速数据传输
典型应用:
AOI、SMT 贴片机、半导体封装、晶圆检测、显示面板检测等高速自动化设备。
附录:术语表
| 术语 | 英文 | 说明 |
|---|---|---|
| OTF | On-The-Fly | 飞行中检测,连续运动视觉检测 |
| UPH | Units Per Hour | 每小时产能 |
| AOI | Automated Optical Inspection | 自动光学检测 |
| DMA | Direct Memory Access | 直接内存访问 |
| FPS | Frames Per Second | 帧率 |
| Global Shutter | 全局快门 | 整个传感器同时曝光 |
| Rolling Shutter | 卷帘快门 | 逐行曝光,运动场景易畸变 |
| Trigger Jitter | 触发抖动 | 触发信号的时间不确定性 |
| Motion Freeze | 运动冻结 | 通过短曝光"冻结"运动目标 |
| Fiducial | 基准点 | 用于定位的对准标记 |