news 2026/10/15 10:57:40

相机触发模式详解:软触发、硬触发、编码器触发与 IO 时序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
相机触发模式详解:软触发、硬触发、编码器触发与 IO 时序

早上调完曝光和增益,图是干净了。可东西在流水线上跑,什么时候按快门又是另一门学问。

前年接手一个别人做了一半的项目,皮带线上检测瓶盖。原来的做法是光电传感器接 PLC,PLC 收到信号后走网络通讯告诉工控机,工控机软件再调相机拍一张。线速 1 m/s 左右,拍出来的瓶盖一会儿在视野左边,一会儿在右边,偶尔半个出了画面。算法那边一直在扩大搜索区域,越扩越慢。我拿时间戳一统计,从传感器动作到真正曝光,中间的时间在几毫秒到二十多毫秒之间乱跳。1 m/s 的速度,20 ms 就是 20 mm,视野一共才 60 mm。

后来把光电传感器的信号直接接到相机的触发输入上,当天就好了。这篇就聊触发:几种触发方式差在哪,时序怎么排,线怎么接,跟 PLC 怎么分工。

软触发、硬触发、编码器触发,差的是抖动

软触发就是软件发一条命令让相机拍。命令要经过 PLC 扫描、通讯、操作系统调度、驱动,每一环都有不确定的延时。工控机上跑的通用操作系统不是实时系统,偶尔卡个十几毫秒很正常。所以软触发适合东西停稳了再拍的场合,比如机械手把工件送到位、气缸夹紧之后再拍,晚几毫秒无所谓。

硬触发是传感器或者 PLC 的电信号直接进相机的 IO 口,由相机内部硬件响应,延时固定,抖动一般在微秒级。按 10 微秒的抖动算,1 m/s 下工件只差 0.01 mm,可以忽略。运动中拍照,硬触发是底线。

编码器触发是拿编码器的脉冲来触发,按位置拍而不是按时间拍。线扫相机基本都靠它,面阵相机做飞拍、长工件分段拍也常用。速度一波动,它的优势就出来了,后面单独算。

一次触发,相机里按这个顺序走

硬触发信号进来之后,相机内部大概是这么走的:先过光耦和输入滤波,再等一段触发延时,开始曝光,曝光结束后读出,然后通过接口往外传。

工件在图里的位置,看的是曝光中点那一刻。从传感器动作到曝光中点,工件走过的距离是:

Δx=v(tin+tdelay+texp2) \Delta x = v\left(t_{\mathrm{in}} + t_{\mathrm{delay}} + \frac{t_{\mathrm{exp}}}{2}\right)Δx=v(tin​+tdelay​+2texp​​)

tint_{\mathrm{in}}tin​是光耦加滤波的延时。举个例子:光电传感器装在视野中心上游 30 mm,线速 500 mm/s,曝光 100 微秒,光耦加滤波按 20 微秒估。工件走到视野中心要 60 ms,触发延时就设成:

tdelay=30 mm500 mm/s−20 μs−50 μs=59930 μs t_{\mathrm{delay}} = \frac{30\ \mathrm{mm}}{500\ \mathrm{mm/s}} - 20\ \mu\mathrm{s} - 50\ \mu\mathrm{s} = 59930\ \mu\mathrm{s}tdelay​=500mm/s30mm​−20μs−50μs=59930μs

问题在于线速要是波动 ±5%,这 60 ms 里工件位置就会差出 ±1.5 mm。经验一:传感器离视野越近越好,延时越短,速度波动带来的位置误差越小。真要装得远,或者速度变化大,就该上编码器了。

另一个要盯的是读出。全局快门 CMOS 多数支持曝光和读出重叠,上一帧还在读出,下一帧就能开始曝光。假设读出要 20 ms、曝光 5 ms:不重叠的话一帧周期 25 ms,最多每秒 40 次;能重叠的话周期取两者里大的那个,20 ms,能到每秒 50 次。触发来得比这个快,相机就丢触发,而且往往不报错。大部分相机都有触发丢失的计数或事件,调试时打开看一眼。

编码器这边,线扫相机的行频要跟速度对上,每走一个像素拍一行。皮带 600 mm/s,物方像素 0.05 mm,行频就是 12 kHz,单行曝光不能超过 83.3 微秒。编码器装在周长 100 mm 的辊上,2000 线,四倍频后一圈 8000 个计数,每个计数 0.0125 mm,每 0.05 mm 拍一行就是 4 分频。这时编码器计数频率是 48 kHz,得确认相机或者中间的分频模块吃得下。

光耦输入:先分清 NPN 和 PNP

相机的触发输入几乎都是光耦隔离的,里面就是一颗发光二极管,电流从 Line+ 流进、Line− 流出,管子亮了就算一个有效电平。接线只要保证传感器导通时有电流按这个方向流过就行。

PNP 型传感器输出高电平:传感器输出接 Line+,Line− 接 0V。NPN 型传感器输出拉低:Line+ 接 +24V,传感器输出接 Line−。PLC 的晶体管输出口也一样,有 NPN 也有 PNP,接之前看清楚。我见得最多的错误就是型号搞反,二极管不亮,相机一张不拍,大家还以为相机坏了。

还有个电压问题。有些相机的输入口标的是 5V,现场全是 24V。假设内部限流电阻 470 Ω,二极管压降 1.2 V,5V 下电流约 8.1 mA;直接接 24V:

I=Vcc−VFRint+Rext=24−1.2470+0≈48.5 mA I = \frac{V_{cc} - V_F}{R_{\mathrm{int}} + R_{\mathrm{ext}}} = \frac{24 - 1.2}{470 + 0} \approx 48.5\ \mathrm{mA}I=Rint​+Rext​Vcc​−VF​​=470+024−1.2​≈48.5mA

是正常值的 6 倍,光耦扛不了多久。想把电流拉回 8 mA 左右,总电阻要 2.8 kΩ 上下,外面串一个 2.4 kΩ,电流约 7.9 mA,电阻上功耗 0.15 W,选 0.5 W 的留余量。这里只是演示怎么算,具体数以相机手册为准,现在不少相机的输入口本身就是宽压的,直接支持 24V。

经验二:触发线用屏蔽线,别跟伺服动力线、变频器线捆一起走,相机里的输入滤波时间开到几十微秒,能挡掉大部分毛刺。我碰到过一回误触发,传感器明明没信号,相机自己乱拍,查到头是触发线跟电机线走的同一个线槽。

跟 PLC 怎么配合

我常用的分工有这么几种。

传感器信号直接进相机触发,同时并一路给 PLC 计数。拍照不经过 PLC,时间最准;PLC 只管剔除和节拍。光耦输入电流不大,一个传感器带两路一般没问题,带不动可以加中间继电器隔一下,不过继电器有几毫秒的动作时间,只能给 PLC 那路用,不能给相机。

PLC 输出点去触发相机。这种接法 PLC 的扫描周期就是抖动,扫描周期 5 ms、线速 200 mm/s,位置会差出 1 mm。静止拍照没问题,运动拍照要用 PLC 的高速输出、中断或者位置比较输出。

飞拍和编码器场合,让 PLC 的高速计数器做位置比较,到点输出一个脉冲,同时触发相机和频闪光源。相机的曝光输出信号也可以直接接光源控制器,让光只在曝光那一下亮。早上说的加光不加增益,就是这么落地的。

结果回给 PLC 走 IO 也行、走通讯也行。经验三:一定要带帧号或者工件计数。触发、拍照、处理、剔除是四个异步的环节,中间丢一个触发、多拍一张,后面所有结果整体错一位,踢掉的全是好件。我现在每个项目都让相机帧计数、软件结果序号、PLC 计数三边对账,对不上直接报警,比事后翻图找原因省事太多。

触发和时序捋顺,相机这一段就差不多聊完了,接下来进镜头。


下篇聊工业镜头焦距怎么选:焦距、视场角和工作距离是什么关系,定焦和变焦在工业现场怎么取舍。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 10:57:30

SpringAI环境搭建实战:从零到生产的完整指南

1. 项目概述SpringAI作为当前企业级AI应用开发的热门框架,正在改变传统Java开发者构建智能应用的方式。作为一名经历过三次SpringAI环境搭建的老手,我深刻理解新手在配置过程中可能遇到的各种"坑"。本文将基于Spring Boot 3.2和JDK 17环境&…

作者头像 李华
网站建设 2026/10/15 10:57:03

汽车维修智能预约系统开发:SSM与Flask混合架构实践

1. 项目概述 这个汽车维修保养智能预约系统是一个典型的O2O服务类应用,采用JavaSSM作为后端核心框架,Flask作为辅助服务框架。系统主要解决传统汽修行业客户预约难、门店管理混乱、服务不透明等行业痛点。我在开发过程中发现,当前汽修行业普遍…

作者头像 李华
网站建设 2026/10/15 10:57:02

亚像素坐标修正指南:热图编解码全面优化关键点检测精度

做姿态估计的,应该都碰过这种情形:网络训练出来热图很干净,单峰、峰值高、周围没杂响,但一核对坐标,预测点跟标注总是差出一截。我最初怀疑是网络欠拟合,加正则、调学习率都没什么起色。后来读到题为 Distr…

作者头像 李华
网站建设 2026/10/15 10:56:36

知识图谱问答KGQA全攻略:从实体链接到SPARQL的工程实践

如果有人问我,知识图谱问答方向最耗时的环节是什么,我的答案大概率不是调模型,而是“找一篇能跑的论文、一份能用的数据集”。这个领域有个特点:相关论文多到看不过来,但真正论文、代码、数据集三者能对齐的资源反而稀…

作者头像 李华
网站建设 2026/10/15 10:56:24

R语言实现随机森林模型在微生物组数据分析中的应用

1. 项目概述 随机森林作为机器学习领域的经典算法,在生物信息学、生态学和医学研究中的应用越来越广泛。最近Nature Communications期刊上的一篇论文就采用了这种方法分析微生物组数据,这让我意识到很多科研工作者可能正需要一套完整的R语言实现方案。今…

作者头像 李华