工业相机触发模式这个话题,看起来只是"接根线让相机拍照"这么简单,但真正在产线上跑过项目的人都知道,触发方案选错了,后面调试能把人逼疯。我做过几个视觉检测项目,从最简单的光电开关硬触发,到后来用PLC做时序控制,再到多相机产线用PTP做同步,每一种方案背后都有它适合的场景和一堆容易踩的坑。这篇内容就把工业相机触发这件事从头到尾讲清楚,围绕PLC信号触发和PTP同步这两条主线,展开五种实际可落地的接线与配置方案,同时把触发模式的核心原理、参数计算、常见故障排查都揉进去。不管你是刚接触工业视觉的新手,还是已经做过几个项目想补齐同步方案这块短板的老手,应该都能从里面找到能直接用的东西。
1. 触发模式到底在解决什么问题
1.1 自由运行与触发的本质区别
工业相机最基础的采集方式叫自由运行(Free Run),也就是相机自己按设定的帧率不停地拍,拍到什么算什么。这种方式在监控场景里没问题,但在工业检测里几乎不能用。原因很直接:产线上的工件是运动的,你需要在工件到达相机视野正中央的那一刻拍照,早一点晚一点,图像里的工件位置就偏了,后续的测量、定位、缺陷检测全部会受影响。
触发模式要解决的核心问题就是让相机在正确的时间点曝光。这个"正确的时间点"来自外部信号,可能是光电传感器检测到工件到位,可能是PLC发出的一个脉冲,也可能是整个系统统一的时间基准。相机收到这个信号之后,才执行一次曝光和读出。
这里有个概念需要先厘清:触发信号控制的是曝光起始时刻,不是读出时刻。很多人调试时会混淆这两者,以为发了触发信号相机就立刻出图,实际上从触发到图像传输完成,中间有曝光时间、读出时间、传输时间这几段延迟。理解这个链路,后面算时序才不会出错。
1.2 五种触发方案的全景对比
在展开细节之前,先把这五种方案摆在一起看,方便你判断自己的项目该选哪条路。
| 方案编号 | 触发源 | 接线方式 | 典型延迟 | 适用场景 |
|---|---|---|---|---|
| 方案一 | 光电传感器直接触发 | 传感器信号线接相机IO | 微秒级 | 单相机、工件到位检测 |
| 方案二 | PLC晶体管输出触发 | PLC输出点接相机光耦输入 | 毫秒级 | 需要逻辑判断的产线 |
| 方案三 | PLC通过工业以太网软触发 | 网线传输触发命令 | 数毫秒 | 多工位、参数需动态调整 |
| 方案四 | 编码器同步触发 | 编码器脉冲分频后接相机 | 与运动同步 | 连续运动、等间距拍摄 |
| 方案五 | PTP同步触发 | 网络时间同步+统一触发 | 亚微秒级同步 | 多相机、多设备协同 |
这张表里的延迟数据是量级参考,实际值跟具体硬件型号关系很大。方案一到方案三属于"信号触发"范畴,方案四属于"运动同步"范畴,方案五属于"时间同步"范畴。三者解决的不是同一个层面的问题,选型时先想清楚你的核心矛盾是什么。
1.3 选型前必须问自己的三个问题
我在项目启动阶段一定会确认这三件事,任何一个没想清楚,后面都可能返工。
第一,触发精度要求是多少。如果工件运动速度是0.5米每秒,允许的位置误差是1毫米,那时间精度要求就是2毫秒。这个精度用PLC输出触发完全够用。但如果允许误差是0.05毫米,时间精度就要到100微秒,这时候PLC的扫描周期就成了瓶颈,得考虑硬件触发或者编码器方案。
第二,触发信号和相机之间的距离有多远。几米以内,普通IO线就能搞定。几十米的话,信号衰减和干扰问题就出来了,这时候走网络触发反而更稳。
第三,系统里有没有多台设备需要协同。单相机单PLC,方案二就够了。但如果产线两端各有一台相机,要求它们在同一时刻曝光,那就必须上PTP,否则两台相机的时间基准不一致,图像对不上。
2. 方案一与方案二:从传感器直连到PLC逻辑触发
2.1 光电传感器直连相机的接线细节
这是最朴素的方案:光电传感器检测到工件,输出一个开关信号,直接接到相机的触发输入引脚。相机的IO接口通常是光耦隔离输入,需要一定的驱动电流,一般是5到15毫安。接线时要注意传感器的输出类型,NPN和PNP接法完全不同。
NPN传感器输出的是低电平有效信号,接线时传感器输出接相机触发输入,相机输入的公共端接电源正极。PNP传感器输出高电平有效,公共端接电源负极。接反了相机收不到触发,但也不会烧,只是不工作,这个错误我见过太多次。
相机端的触发输入一般有三根线:触发信号线、公共端、以及可选的电源线。具体引脚定义每家的相机都不一样,Basler的相机通常用Hirose 6pin或12pin接口,海康的用12pin航空插头居多。接线前一定翻手册确认引脚,不要凭经验猜。
提示:传感器直连相机时,建议在触发信号线上串联一个100欧姆左右的限流电阻,尤其是传感器供电电压高于相机IO额定电压时。虽然多数相机IO有保护,但长期过压会缩短光耦寿命。
这个方案的优点是延迟极低,传感器响应时间加上相机触发响应时间,通常在几十微秒量级。缺点是没有任何逻辑处理能力,传感器一响相机就拍,如果产线上有干扰导致传感器误触发,相机就会拍到空图。
2.2 PLC晶体管输出触发的完整链路
当产线需要"工件到位且工位空闲才拍照"这种逻辑判断时,就得让PLC来当触发源。这里有个关键点:必须用晶体管输出型PLC,不能用继电器输出型。
继电器输出的响应时间是毫秒到十几毫秒,而且机械触点有寿命限制,频繁触发很快就会坏。晶体管输出响应时间在微秒级,适合做触发信号。西门子S7-1200的DC/DC/DC型号、三菱FX5U的晶体管输出型号、汇川的AM系列,都是常见选择。
接线逻辑是这样的:PLC的晶体管输出点(比如Q0.0)接到相机的触发输入正极,PLC的0V接到相机触发输入的公共负极。PLC程序里,当到位传感器信号和工位空闲信号同时满足时,置位Q0.0,延时几个毫秒后复位,形成一个脉冲。
这个脉冲宽度很关键。太窄了相机可能来不及响应,太宽了可能触发多次。一般设置5到20毫秒比较稳妥,具体看相机手册里要求的最小触发脉宽。Basler相机通常要求触发脉冲至少几个微秒,但实际工程中留足余量更安全。
PLC程序里我习惯用一个定时器来做脉冲整形,而不是直接置位复位。因为PLC扫描周期是毫秒级,如果程序里同时有多个逻辑分支,直接置位复位可能导致脉冲宽度不稳定。用TON定时器,设定时间到才复位,脉冲宽度就固定了。
2.3 光耦隔离与电平匹配的实操要点
PLC输出是24V电平,相机触发输入通常是5V或12V电平,直接接会烧相机IO。所以中间必须做电平转换或者隔离。
最省事的办法是用光耦隔离模块,输入端接PLC的24V输出,输出端接相机IO。这种模块市面上很多,选响应时间小于10微秒的型号就行。另一种办法是用相机的IO模块,有些相机厂商提供专门的IO扩展盒,内部已经做好了电平转换和隔离,接线更简单但成本高一些。
如果PLC输出和相机输入都是24V,那可以直接接,但要注意共地问题。PLC的0V和相机的0V必须连在一起,否则信号没有参考电平,相机收不到有效触发。这个共地线不能省,我见过有人只接信号线不接共地,调试半天找不到原因。
还有一种情况是相机IO支持宽电压输入,比如12到24V都能识别,那就可以直接接PLC输出。但即便如此,也建议加隔离,因为产线上的感性负载(电磁阀、接触器)会产生反向电动势,可能通过地线串扰到相机。
2.4 触发延迟的实测与补偿
PLC触发方案的延迟主要来自三部分:PLC输出响应时间、光耦隔离模块延迟、相机触发响应时间。加起来通常在1到5毫秒之间。
这个延迟在低速产线上可以忽略,但在高速产线上必须补偿。补偿的方法有两种:一种是在PLC程序里提前发触发信号,比如工件还没到但根据编码器位置预判它会在延迟后到达,就提前触发。另一种是在视觉算法里做位置补偿,根据延迟时间和产线速度,把检测结果沿运动方向偏移相应的距离。
我一般优先用第一种方法,因为它在图像层面就消除了偏差,后续算法不用改。但提前触发的前提是产线速度稳定,如果速度波动大,预判就不准了。
3. 方案三:走网络的软触发与PLC通讯配置
3.1 软触发的适用边界
软触发是指触发命令通过通讯接口发送,而不是通过硬件IO。工业相机常见的软触发接口有GigE Vision、USB3 Vision、Camera Link等,其中GigE Vision因为布线方便、距离远,在产线上用得最多。
软触发的优势很明显:不需要额外接线,触发参数可以通过程序动态调整,还能同时控制多台相机。但它的劣势同样明显:延迟比硬件触发大,而且延迟不稳定。
延迟大的原因是命令要经过协议栈打包、网络传输、相机解析这几个环节。在千兆网环境下,一次软触发的延迟通常在2到10毫秒,而且受网络负载影响会波动。所以软触发适合对时间精度要求不高的场景,比如静态检测、低速产线、或者触发频率很低的场合。
3.2 PLC与相机建立通讯的两种路径
PLC要发软触发命令给相机,中间需要一条通讯链路。常见的有两种做法。
第一种是PLC直接和相机通讯。如果PLC支持GigE Vision协议或者厂商提供了相机控制库,可以直接在PLC程序里调用。但这种情况比较少,因为大多数PLC不原生支持视觉协议。
第二种是PLC和上位机通讯,上位机再控制相机。这是更常见的架构。PLC通过Modbus TCP、Profinet或者EtherNet/IP把触发请求发给上位机软件,上位机软件调用相机SDK发软触发命令。这种架构灵活,上位机可以做复杂的逻辑判断和参数计算,但多了一层通讯,延迟又增加了。
我做过的一个项目是西门子S7-1500通过Profinet和上位机通讯,上位机用C#调用海康相机SDK。整个链路从PLC发出请求到相机曝光,实测延迟在8到15毫秒。这个延迟对于当时的产线速度(0.3米每秒)来说,位置偏差在2到4毫米,通过算法补偿可以接受。
3.3 网络配置中最容易翻车的几个点
工业相机插上网线之后连不上,这是新手最常遇到的问题。排查顺序我一般是这样的。
先看网口指示灯亮不亮。不亮的话,检查网线是不是好的,交换机端口是不是通的。亮了但连不上,就看IP地址。相机出厂默认IP通常是192.168.1.x或者169.254.x.x网段,电脑的网卡IP必须和相机在同一网段,而且子网掩码要一致。
这里有个坑:很多人电脑上装了多个网卡,有线网卡和无线网卡同时开着,路由表里默认走无线路由,导致访问相机的数据包发到了错误的网卡。解决办法是在电脑上把无线网卡禁用,或者手动添加一条静态路由,把相机网段指向有线网卡。
还有一个坑是巨帧(Jumbo Frame)设置。千兆网传输图像数据时,开启巨帧能显著降低CPU占用和丢包率。但巨帧需要在相机、电脑网卡、交换机三处都开启,任何一处没开,大包就会被分片,反而可能出问题。我一般建议在调试阶段先不开巨帧,等通讯稳定了再开,避免引入额外变量。
注意:如果相机和PLC在同一个交换机下,而PLC的通讯周期又比较快,可能会和相机的图像传输抢带宽。条件允许的话,视觉系统单独用一个交换机,或者用支持VLAN的交换机做隔离。
3.4 软触发的时序稳定性优化
软触发最大的问题是延迟不稳定,优化方向就是减少延迟的波动。
第一,把相机的触发模式设为"触发后立即传输",不要用"触发后缓存再传输",后者会引入额外的缓冲延迟。
第二,在上位机软件里用高优先级线程处理触发命令,避免被其他任务抢占。Windows系统不是实时系统,线程调度有不确定性,如果对稳定性要求极高,可以考虑用实时Linux或者带RT内核的系统。
第三,减少网络中的其他流量。视觉系统的网络里不要跑其他大流量业务,如果必须共用,用QoS给相机数据流设高优先级。
第四,如果PLC和上位机之间的通讯也走网络,考虑把触发请求和图像传输分到不同的网段或VLAN,避免相互影响。
4. 方案四:编码器同步触发与运动匹配
4.1 编码器触发的工作原理
当工件在传送带上连续运动,需要等间距拍照时,编码器触发是最合适的方案。编码器安装在传送带的驱动轴上,传送带每移动固定距离,编码器输出固定数量的脉冲。把这个脉冲分频之后接到相机触发输入,相机就会在工件每移动固定距离时拍一张。
这个方案的核心参数是分频系数。假设编码器每转输出2500个脉冲,驱动轴周长是200毫米,那么每个脉冲对应0.08毫米的位移。如果我想每2毫米拍一张,分频系数就是2除以0.08,等于25。也就是每25个编码器脉冲输出一个相机触发信号。
分频可以用硬件分频器实现,也可以用PLC的高速计数器加程序分频。硬件分频器延迟低、稳定性好,但参数固定,改起来麻烦。PLC分频灵活,但受扫描周期限制,高速时可能丢脉冲。我一般建议脉冲频率超过50kHz时用硬件分频,低于这个值可以用PLC。
4.2 编码器信号接入PLC高速计数模块
如果选择PLC分频方案,编码器信号要接入PLC的高速计数模块,不能用普通输入点。普通输入点的响应频率通常只有几十赫兹到几百赫兹,编码器脉冲频率动辄几千上万赫兹,接普通点根本计不到数。
西门子S7-1200自带的高速计数器可以到100kHz,S7-1500的工艺模块可以到1MHz。三菱FX5U的高速计数输入可以到200kHz。选型时要确认编码器脉冲频率在PLC高速计数能力范围内。
接线方面,编码器通常是差分输出(A+、A-、B+、B-),也有单端输出(A、B)。差分输出抗干扰能力强,传输距离远,推荐使用。接入PLC时,差分信号要接到支持差分的输入点,或者用差分转单端的模块转换。
PLC程序里,用高速计数器计编码器脉冲,当计数值达到分频系数时,输出一个触发脉冲并复位计数器。这里要注意高速计数器的复位不能影响计数连续性,要用比较指令而不是中断复位,否则高速时可能丢计数。
4.3 运动方向变化时的处理
编码器方案有个容易被忽略的问题:当传送带反向运动或者抖动时,编码器会输出反向脉冲,如果PLC不判断方向,就会误触发。
解决办法是用编码器的A、B两相做方向判断。A相超前B相90度时是正转,B相超前A相时是反转。PLC程序里根据相位关系决定是加计数还是减计数,只有正转时才触发相机。
另一个问题是传送带启停时的加减速。启动阶段速度不稳定,如果这时候触发,拍到的图像间距不均匀。我一般会在PLC程序里加一个速度判断,只有速度稳定在设定值附近时才允许触发。或者用编码器的Z相(每转一个脉冲)做基准,从Z相之后开始计数,保证每次拍照的起始位置一致。
4.4 编码器触发与频闪光源的配合
编码器触发拍运动物体时,如果曝光时间太长,图像会拖影。假设产线速度是1米每秒,曝光时间是1毫秒,那图像上的运动模糊就是1毫米。对于精密检测来说,这个模糊量太大了。
解决办法是缩短曝光时间,同时用频闪光源补光。频闪光源的触发信号和相机触发信号同步,相机曝光时光源瞬间点亮,曝光结束后光源熄灭。这样既保证了曝光量,又缩短了有效曝光时间。
频闪光源的触发延迟要和相机曝光起始对齐。有些光源有延迟调节功能,可以根据实际效果微调。如果光源延迟不可调,可以在PLC程序里给光源触发信号加一个偏移量,让光源提前或延后点亮。
5. 方案五:PTP同步在多相机系统中的应用
5.1 PTP授时的基本原理
PTP是IEEE 1588标准的精确时间协议,它的核心思想是让网络中的所有设备共享同一个时间基准。主时钟设备周期性地发送同步报文,从时钟设备根据报文的收发时间戳计算自己与主时钟的时间偏差,然后调整本地时钟。
这个过程听起来简单,但要做到亚微秒级同步,需要硬件支持时间戳。普通网卡的时间戳是在软件层打的,受操作系统调度影响,精度只能到毫秒级。支持PTP的网卡在物理层打时间戳,精度可以到纳秒级。
工业相机里,Basler的ace系列、海康的MV系列部分型号支持PTP。PLC方面,西门子S7-1500、倍福的TwinCAT系统都支持PTP。选型时要确认设备是否支持硬件时间戳,只支持软件时间戳的设备做PTP意义不大。
5.2 多相机同步触发的实现方式
多相机PTP同步的典型架构是这样的:选一台设备作为主时钟(通常是PLC或者专用的时钟服务器),其他相机和PLC都作为从时钟。所有设备通过支持PTP的交换机连接,交换机也要支持PTP透传,否则报文在交换机里的驻留时间会引入误差。
同步建立之后,PLC在某个绝对时刻发送触发命令,这个命令里包含一个"预定触发时间"。所有相机收到命令后,不是立即触发,而是等到本地时钟到达预定时间才触发。由于所有相机的时钟已经同步,它们会在同一时刻曝光。
这个方案的同步精度取决于PTP同步精度和触发命令的传输延迟。在理想情况下,同步精度可以做到100纳秒以内。对于大多数工业视觉应用来说,这个精度远远够用。
5.3 PTP网络配置的实操步骤
配置PTP网络时,我一般按这个顺序来。
第一步,确认所有设备支持PTP,并且固件版本兼容。不同厂商的PTP实现可能有差异,混用时要特别小心。
第二步,规划网络拓扑。PTP对网络结构敏感,建议用星型拓扑,所有设备接到同一台支持PTP的交换机上。不要用级联太多层的交换机,每多一层就多一份驻留时间误差。
第三步,配置主时钟。在PLC或者时钟服务器上启用PTP主时钟模式,设置时钟等级和优先级。时钟等级数值越小优先级越高,一般主时钟设为1或者2。
第四步,配置从时钟。在相机上启用PTP从时钟模式,设置同步周期。同步周期越短,同步精度越高,但网络负载也越大。一般设为一秒一次或者两秒一次。
第五步,验证同步状态。大多数支持PTP的设备都有状态指示,可以看到是否同步成功、时间偏差是多少。如果偏差持续大于1微秒,就要检查网络配置。
5.4 PTP同步失败的排查思路
PTP同步不上,原因通常在这几个地方。
交换机不支持PTP透传。这是最常见的问题。普通交换机对PTP报文一视同仁,排队转发,驻留时间不确定,导致同步精度极差甚至无法同步。解决办法是换支持PTP的交换机,或者在交换机上启用PTP透传功能。
网络中有其他大流量数据。PTP报文很小,但如果网络拥塞,报文排队延迟会增加,影响同步精度。建议把PTP流量和图像数据流分到不同的VLAN,或者用QoS给PTP报文设最高优先级。
设备时钟等级配置冲突。如果网络中有多个设备都配置为主时钟,或者时钟等级设置不合理,会出现主时钟选举震荡,同步无法稳定。确保只有一个主时钟,其他都是从时钟。
防火墙或者安全软件拦截了PTP报文。PTP使用UDP端口319和320,如果电脑上有防火墙,要确保这两个端口没有被拦截。
6. 触发方案选型与现场调试经验
6.1 按产线速度反推触发方案
选型时最实用的方法是从产线速度反推。我整理了一个对照关系,可以直接参考。
| 产线速度 | 允许位置误差 | 时间精度要求 | 推荐方案 |
|---|---|---|---|
| 小于0.2米每秒 | 1毫米 | 5毫秒 | 方案二或方案三 |
| 0.2到1米每秒 | 0.5毫米 | 0.5毫秒 | 方案二加补偿 |
| 1到3米每秒 | 0.2毫米 | 70微秒 | 方案四编码器 |
| 大于3米每秒 | 0.1毫米 | 30微秒 | 方案四或方案五 |
| 多相机协同 | 任意 | 小于1微秒 | 方案五PTP |
这个表是经验值,实际选型还要考虑成本、开发难度、维护便利性。方案五的硬件成本最高,但如果产线本身就需要多相机协同,这个投入是值得的。
6.2 触发信号质量的实际测量
触发信号质量直接影响触发稳定性,但很多人不测量,凭感觉调。我建议用示波器看一下触发波形。
测量点是相机触发输入引脚。正常的触发波形应该是干净的方波,上升沿和下降沿陡峭,没有振铃和毛刺。如果波形上有毛刺,可能是信号线太长、没有屏蔽、或者附近有干扰源。解决办法是缩短线缆、用屏蔽线、加磁环、或者在信号线上并联小电容滤波。
如果波形上升沿太缓,可能是驱动能力不足。光耦隔离模块的输出驱动能力有限,如果线缆电容大,上升沿就会变缓。这时候要换驱动能力更强的模块,或者缩短线缆。
触发脉冲的宽度也要确认。用示波器测量脉冲宽度,确保在相机要求的最小脉宽之上,同时不要宽到影响下一次触发。我一般设置在最小脉宽的3到5倍,留足余量。
6.3 常见触发故障的排查链路
相机不触发,排查顺序我一般是这样的。
先看相机状态。相机软件里能看到触发信号计数,如果计数在增加但不出图,说明触发收到了但曝光或传输有问题。如果计数不增加,说明触发信号没到相机。
再看信号源。用万用表或者示波器测量信号源输出,确认信号源本身在工作。如果信号源正常,问题就在线缆或相机IO。
然后查线缆。用万用表测通断,确认信号线和共地线都通。如果线缆中间有接头,检查接头是否松动或氧化。
最后查配置。相机的触发模式是否设为外部触发,触发极性是否匹配(上升沿还是下降沿),触发延迟是否设得太大。这些参数在相机软件里都能看到,逐项确认。
我遇到过一次很奇怪的问题:相机偶尔触发偶尔不触发,换了线缆、换了传感器都没用。最后发现是PLC程序里触发脉冲的定时器被另一个逻辑分支复位了,导致脉冲宽度时有时无。这种问题只能靠仔细审查程序逻辑来解决。
6.4 长期运行稳定性的保障措施
触发系统跑起来不难,难的是长期稳定运行。我一般会做这几件事。
第一,所有接线端子定期检查紧固。产线上的振动会导致端子松动,信号时断时续。尤其是PLC输出端和相机输入端,这两个地方电流不大但接触电阻要求高。
第二,触发信号线远离动力线。动力线里的电流变化会产生电磁干扰,如果触发线和动力线平行走线,干扰会耦合进来。至少保持20厘米以上的距离,交叉时尽量垂直交叉。
第三,在PLC程序里加触发计数和超时报警。如果连续一段时间没有触发信号,或者触发频率异常,就报警提示检查。这样能在故障初期就发现,避免批量漏检。
第四,定期用示波器复查触发波形。产线上的设备会老化,传感器响应时间会变长,线缆屏蔽层会磨损,这些都会影响触发质量。定期复查能提前发现隐患。
触发方案这件事,说到底是在精度、成本、开发难度之间找平衡。没有哪种方案是万能的,关键是搞清楚自己的核心需求是什么。我个人的经验是,能用硬件触发就不用软触发,能用简单方案就不用复杂方案,因为每多一个环节就多一个故障点。PTP同步虽然精度高,但配置复杂,如果单相机加PLC就能解决的问题,没必要上PTP。反过来,如果产线确实需要多相机协同,那PTP就是绕不过去的选择,早点把网络基础设施搭好,后面会省很多事。