ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

西门子PLC与海康相机视觉联动:相机端触发参数配置实战

西门子PLC与海康相机视觉联动:相机端触发参数配置实战 上个月给一条装配线做视觉检测改造PLC用的是西门子S7-1200相机选了海康威视的千兆网工业相机。整套设备拉通前我心里最有底的其实是PLC那边——无非是组态、定时器、输出点就算通信触发也没多复杂。结果真到了现场联调被相机端的参数设置硬生生卡了一个下午触发模式没开、触发源选错、触发沿反了、曝光一塌糊涂……每一条都让我想掀桌子。最后冷静下来梳理了一遍把海康相机端的设置逐项理清楚才发现这玩意儿其实很有规律关键是别跳过任何一步。这篇文章就围绕这个案例来写重点是海康相机端的全部设置过程从装软件、配IP到触发模式、触发源、曝光参数再到和PLC的联调配合全部按我实际操作过的顺序来讲。做设备集成、视觉工位调试的工程师可以直接按我这个路径走避免走弯路。如果你是刚入门的小白也不用担心我会把每个参数为什么这样设、不这样设会出什么问题都讲透。1. 这个项目到底在干什么PLC和相机之间是怎么联动的1.1 两种常见触发链路硬触发和软触发西门子1200和海康相机的联动本质上是解决一个“什么时候拍照”的问题产线来料到位、气缸停稳、工件被夹紧PLC判断这个时刻该出图了就向相机发出一个拍照命令相机拍完把图像交给视觉处理程序判断OK还是NG。听起来很直白但实现方式有两条完全不同的路径。第一条是硬触发也是我在现场最推荐的方式。PLC的数字量输出模块比如S7-1200的SM1222或本体DQ引出一根线直接接到相机的IO输入引脚上海康千兆网相机一般叫Line0或者Line1。PLC程序里控制这个输出点发出一个脉冲上升沿到达相机IO口相机光耦导通立即启动曝光。硬触发的优势在于确定性从PLC输出到相机开始曝光延迟在微秒量级不受网络负载、交换机转发时间的影响产线上任何稳定节拍都能扛得住。第二条是软触发也叫通信触发正好对应你标题里说的“通信触发”场景。PLC通过以太网走Modbus TCP或者Socket报文把触发信号发给目标设备目标设备再让相机拍照。如果目标设备是一台装了海康SDK的上位机那相对好办上位机收到指令后调用软触发接口就行。如果想让PLC直接通过网络命令触发相机这就没那么简单了后面我会专门讲。这两种链路没有绝对的好坏硬触发稳、延迟低软触发省线、方便远程控制。但不管选哪种最终相机端都要做对应的配置。我见过太多项目卡在这一步PLC那边输出点已经闪得像跑马灯了相机就是不按套路来根源就是相机端参数没有配对。1.2 相机端设置才是联调成败的关键为什么说相机端设置是关键因为PLC工程师的思维是确定性的我发了信号你就该执行。但工业相机不是这么理解的——它默认工作在“自由运行”模式也就是说上电之后就一直自己出图压根不看外部信号。你要让它听外部指挥必须通过参数告诉它三件事第一你不再自由运行了触发模式设为On第二谁有资格指挥你触发源选择Line0、Software或其他第三什么信号形态算数触发沿是上升沿还是下降沿。这三件事加上曝光时间、增益、白平衡、网络参数拢共十来个设置项像一把钥匙串少任何一个项目都会卡壳。而且这些参数不像PLC变量那样直观它们藏在MVS客户端的功能树里中文英文混着显示默认值又都是“适合实验室连续采集”的状态。所以这篇文章的剩余篇幅我全部聚焦在相机端一条一条带着你配配完之后PLC那边稍微配合一下整个链路就能通。2. 相机端准备装驱动、配IP、让PLC先找到相机2.1 安装MVS机器视觉客户端海康工业相机的调试软件叫MVS全称Machine Vision Software在海康机器人官网能找到下载入口分为标准版和完整版做一般项目装标准版就够。安装过程没什么坑一路下一步建议装到默认路径避免后面环境变量或者权限问题。装完之后桌面上会有MVS的快捷方式第一次打开会提示安装驱动这里有个关键点千兆网相机一定要装好GigE Vision Filter Driver过滤驱动这是Windows下识别GigE相机的底层支撑不装的话MVS里永远刷不出设备。软件左边栏有“设备管理”区域正常识别后能看到相机的型号、IP、MAC地址。第一次使用相机默认可能是动态IPDHCP或者落在海康私有网段这样PLC的地址段和它会互相隔离所以下一步马上得配IP。2.2 相机IP设置与PLC和PC必须在同一网段一个典型的项目网络拓扑是PLC如192.168.1.10、工控机网卡192.168.1.5、海康相机需要也设到192.168.1.x。如果相机还是默认段或者动态获取三层之间压根不通别说触发拍照MVS里连接都费劲。设置IP的路径有两条我建议优先用MVS自带的“强制IP”功能。在设备管理里选中相机右键菜单选择“强制IP设置”输入目标IP比如192.168.1.30、子网掩码255.255.255.0、默认网关可以留空同一交换机内通信不需要网关点保存。相机瞬间会断开一下然后重新识别此时设备列表里IP就变了。另一条路是用SDK配置工具或者直接把电脑网卡改成和相机同一网段在设备列表里连接相机后到“网络配置”界面去做修改。但这种方法要保证电脑和相机一开始就在同一段否则进不去所以不如强制IP来得直接。设置完以后在电脑上打开命令提示符ping一下相机IP确认能通。这里顺便注意PLC和相机也要能互相ping通因为不管是后面可能的通信触发还是故障诊断网络互通是前提。如果ping不通优先检查网卡是否在同一网段、网线是否直连、交换机端口是否隔离。2.3 网络层面三个容易埋雷的地方IP设置好了、ping也通了别急着高兴千兆网相机的网络传输还有三个隐性雷区全部踩过的人不在少数。第一是系统防火墙。Windows默认防火墙经常会拦GigE Vision的广播包和相机通信端口反过来就是MVS能发现相机但连不上或者连上后相机频繁掉线。最省事的处理方式是把相机的网卡设为“专用网络”再把防火墙对MVS和GigE相关进程放行。工业现场工控机上如果确认网络环境安全直接关掉防火墙是最干脆的很多集成商就是这么干的。第二是巨型帧和传输包大小。GigE相机传输图像数据时依赖网卡的帧大小上限。相机端的“传输包大小”默认可能是1500而电脑网卡如果不开启巨型帧Jumbo Frame或MTU设置偏低图像数据就会被拆成很多小包发送丢包率明显上升表现出来就是花屏、卡顿甚至采集失败。建议把电脑网卡的巨型帧设为9K相机端传输包大小设到网卡能接受的最大值通常8000以上这个匹配很关键。第三是网卡节能模式。Windows网卡默认有“允许计算机关闭此设备以节约电源”选项这在普通办公场景没问题但工业相机断电休眠再唤醒时恢复链路可能非常慢甚至失败导致项目运行时相机偶发离线。系统设备管理器里找到对应的千兆网卡把节能选项全部取消勾选。这一步没人提醒等你在现场时断时续地排查半天才会发现它。3. 相机触发参数逐项配置这里才是文章的核心3.1 触发模式从自由运行切换到触发采集MVS里连上相机后左边展开“参数设置”功能树找到“图像采集控制”这一项里面有一个“触发模式”下拉框默认是Off也就是自由运行。请注意这个“Off”指的是外部触发关闭不代表相机不工作相反它一直在全速出图CPU占用还不低。我们要做的是把“触发模式”改为On。就这么一个简单动作很多人会忽略。改完之后能明显感觉相机画面预览会停住或者只剩最后一帧看起来像“死机”了这其实是正常的——它进入了待命状态只有收到指定触发源的有效信号才会拍一张。此时如果你用MVS的软触发按钮手动发一次触发相机就会拍一帧出来画面恢复一下。我用“待命”这个词是想让你别慌后续所有调试都基于这个状态进行。这里有个延伸经验触发模式设为On之后相机依赖“帧触发”事件来出图。对单相机项目这个模式就够了如果涉及多个相机同步可能还要配置“帧开始”触发和积压帧策略但那是进阶话题小项目用不上。3.2 触发源选Line0还是Software“触发源”Trigger Source这个参数决定谁来唤醒相机可选项通常有Software、Line0、Line1部分型号还有Action命令。区分这些东西是整个相机端配置里最核心的一步。如果项目走硬触发——PLC的Q点通过物理线接到相机——那毫不犹豫选Line0。注意Line0是一个带光耦隔离的数字量输入引脚不是网口也不是串口。我见过有新手把网线插到相机网口然后在Trigger Source里找“PLC”这就理解偏了。海康相机的Line0有正负两个端子接PLC输出信号时把正端接信号线负端接PLC公共地接线顺序后面还会细说。如果项目走软触发——通过上位机或者SDK控制相机——那就选Software。选这一个之后MVS的采集控制工具栏里会出现一个“执行软触发”按钮点一下相机拍一帧。后续PLC通过Modbus TCP写上位机寄存器上位机检测到位变了再去调用SDK的软触发命令整个链路就通了。如果是多相机同步或者对实时性要求极高的项目还可以选Action命令配合IEEE1588PTP时钟同步来触发这是比较高端的玩法小工位项目一般用不到了解即可。为了让你直观理解我把三种触发源的适用场景列个表触发源触发方式适用场景延迟特点Line0/Line1PLC或传感器IO硬接线产线在线检测、高速节拍微秒级确定性最高Software上位机SDK软触发PLC通信上位机中转毫秒级受程序调度影响Action网络命令PTP时钟同步多相机同步抓拍亚微秒级需支持硬件3.3 触发沿与触发延时和PLC脉冲波形对齐触发沿Trigger Activation决定信号从哪个状态跳变时相机“认账”。海康相机默认一般是上升沿有效正好匹配PLC数字量输出常开的脉冲逻辑平时低电平触发时拉高Q点从0变1上升沿点到达相机拍照。PLC程序里如果要发一个20ms的脉冲那相机就是在脉冲上升的那一刻启动。如果现场怎么都触发不了除了排查线序最简单的办法就是把触发沿改成下降沿再试一次。有些设备的输出模块是源型/漏型混合接法信号逻辑反着这时下降沿反而能触发。不过我不建议长期靠这个规避问题最好还是把PLC输出极性和相机触发沿统一否则后面排查其他问题时逻辑会乱。触发延时Trigger Delay是相机收到触发信号后、开始曝光之前的一段故意等待的时间单位是微秒。很多装配线场景里气缸夹紧的动作刚完成机械振动还没完全停下来如果PLC一到位置信号就立刻触发拍摄画面里工件可能还在微幅抖动拍出来边缘是糊的。这时间设一个5~20ms的延时就管用相当于手动让相机等等机械稳定。注意别设太长否则产线节拍会被拉慢。3.4 曝光时间、增益、白平衡触发后怎么拍得清楚触发只是告诉相机“该拍了”拍清楚是另一个维度的参数组合。这里面最常调的是曝光时间Exposure Time。海康相机曝光时间单位通常是微秒我调试时先从2000us左右起步看画面亮度再往上调整。如果产线速度很快、工件运动明显曝光时间要往短压比如500us同时补足光源亮度。一定要记住曝光时间和光源亮度是跷跷板光不够就加曝光曝光不够就加光而不是无脑把ISO式的增益往上拉。增益Gain也要理解透。海康相机的数字增益和模拟增益能提亮图像但同时会放大噪声画质会变粗糙对后续视觉算法的特征提取非常不友好。我的原则是光源到位优先调光增益只当最后兜底。如果画面还是偏暗考虑加光源功率而不是加增益。彩色相机还有个白平衡问题。如果现场光源是暖色LED相机默认白平衡不校对拍出来的白色工件会偏黄。用MVS里的“白平衡”工具对着白色参考面做一次一键白平衡或者手动把红绿蓝增益调到合适比例。这一步不做好后续在相机端做的颜色判读阈值全都会偏差。3.5 参数保存调好的配置一定要导出备份相机端所有参数调好之后别急着关机。MVS中有“用户参数”功能可以保存当前配置到用户集User Set。操作方式是在参数界面点击“保存当前参数”选择保存到“用户集0”再把“启动加载”选为这个用户集这样相机每次上电都会自动加载这套配置不会因为断电恢复出厂值。在此基础上建议通过导出功能把参数存成一个文件一般是json或cfg格式保存到项目和工控机的备份目录文件名按“日期_相机序列号_工位号”来命名。为什么这么强调我吃过一次亏一套视觉工位调了三天参数全部很满意结果相机固件升级后参数被重置现场又没有导出文件只能凭记忆重调两小时就没了。从那以后每调完一个工位我必导出参数文件同时上传到项目网盘版本管理。这个习惯能帮你省下大量重复劳动时间。4. PLC端怎么配合程序和接线要点4.1 IO硬触发S7-1200的Q点脉冲接相机Line0如果你和我的选择一样走硬触发那接线其实非常简单。以S7-1200为例CPU本体或者扩展SM1222数字量输出模块的某个Q点比如Q0.0作为触发信号源把Q0.0接到海康相机Line0的正端再把PLC输出模块的公共端比如3M/0M接到相机Line0的负端。这样PLC输出高电平时回路导通相机光耦动作。PLC程序方面触发脉冲可以用两种方式实现。最直观的就是用两个定时器做一个“置位—延时—复位”的脉冲触发条件满足时把Q0.0置位延时20ms后复位。或者直接调用S7-1200自带的PTO/PWM通道输出设定宽度的高速脉冲。我一般用20~50ms的脉冲宽度太短了相机光耦响应可能不利索太长了连续触发时容易把两次当成一次。这里有一个很多人会忽略的保护细节虽然相机IO口本身带光电隔离但为了稳妥起见我习惯在PLC输出点和相机Line0之间串一个中间继电器通过继电器触点去驱动相机信号。这样PLC模块的短路风险和现场误接线的风险都被隔了一次坏东西的概率大大降低。4.2 通信软触发要搞清楚PLC能不能直接给相机发指令现在把话题回到你标题中的“通信触发”。很多人的第一反应是S7-1200支持Modbus TCP海康相机支持网口通信那PLC是不是能直接抱着Modbus TCP报文去触发相机这个问题我实测过答案没那么简单。海康标准工业相机的软触发指令是基于SDK内部协议封装的不是标准的Modbus寄存器映射所以PLC直接去写相机的某个保持寄存器来触发拍照在出厂固件层面通常行不通除非相机端购买了特定的工业协议功能包或者固件版本带相对应的接口。所以实际项目中真正可靠的“通信触发”链路是PLCS7-1200通过Modbus TCP把触发标志写到上位机工控机的寄存器或共享数据区上位机里的视觉应用程序用海康SDK写的监听这个标志位一旦发现PLC要求的拍照请求就调用SDK的软触发接口让相机拍图再把图像分析结果通过Modbus或者Socket回传给PLC。也就是说PLC的通信对象是上位机上位机再驱动相机。这个链路里相机端设置相对简单只要把触发源选为Software然后在上位机程序里按官方示例写软触发调用就行。但要注意上位机收到PLC请求的位变化检测不能太慢否则会拖慢产线节拍建议用线程轮询或事件驱动把触发响应时间控制在毫秒级。4.3 触发频率和相机帧率的匹配不管走硬触发还是软触发都必须考虑相机的处理能力上限。假设你的海康相机标称在满分辨率下最大帧率是30fps那么它稳定处理一帧加上传输一帧的总耗时大约是33ms左右。如果PLC每20ms就来一次触发相机上一帧还没处理完、新触发就到了轻则丢弃触发重则采集队列溢出导致图像时间戳错乱。所以在PLC程序设计时触发间隔要有下限保护。最简单的方式是用一个时间戳变量记录上次触发时刻下次触发前先做间隔判断小于设定值就跳过。这个设定值最好取“相机实测稳定处理一帧的耗时5ms余量”。你也可以在MVS里做一个高帧率压力测试把相机触发模式打开用软件快速反复触发100次观察有没有漏帧这样能摸清相机底牌。还有一个容易出问题的细节硬触发模式下相机处理完一帧之前新的触发信号来了相机的响应策略取决于“触发延迟”和“帧接收超时”的设置。如果产品节拍不太快我建议在PLC端控制好最小间隔别把压力全部丢给相机的缓冲机制。5. 联调实录故障排查经验和避坑技巧5.1 触发信号到了但相机不拍照这个现象堪称头号问题几乎每个做PLC和相机集成的人都会遇到。PLC的Q点有脉冲输出信号灯亮用万用表量输出端也能量到电压跳变但相机画面就是纹丝不动。排查顺序我按优先级列出来第一步确认触发模式是不是On。千万别嫌这一步啰嗦我至少有两次在MVS里看都没看直接去查线最后发现触发模式还停在Off。第二步确认触发源选的是Line0还是Software。有人线接到了Line1触发源里选的却是Line0自然就是石沉大海。第三步确认触发沿。把上升沿改成下降沿再试一次或者反过来现场就能判断出来了。第四步用万用表量相机Line0两端在PLC触发瞬间有没有电平变化如果没变化查接线和公共端。实测中我还碰到过一次离谱的情况PLC的输出点本身配的是“脉宽调制/PTO”而不是普通DO开关量输出导致输出的不是方波而是一串几十赫兹的调制信号相机反复被误触发画面乱七八糟。后来改成普通输出点加定时器脉冲就好了。所以PLC端的输出模式也要检查。5.2 图像过暗、过曝和偏色图像整体偏暗最直接原因是曝光时间不够。你可以在MVS里把曝光时间逐步增大看到画面亮度爬升。但要注意曝光时间加大会降低帧率如果同时想帧率也高、画面也亮唯一的出路就是加强光源比如加同轴光源或者环形光源这是硬件级的解决。图像过曝则反过来降低曝光时间和增益。如果场景里同时有亮暗差异很大的区域考虑开启相机的gamma校正或者HDR模式海康不少型号支持多级曝光融合能扩展动态范围。偏色问题前面提过这里补一个细节在MVS里做白平衡时一定要用检测工位上的真实产品作为参考不要用白纸或者灰色色卡。不同材质表面反射特性差异很大用错误参考物做的白平衡真正检测时颜色失真明显。5.3 图像花屏、丢帧、撕裂花屏、丢帧、图像撕裂这些现象通常是传输链路问题不是参数问题。按我的经验首要检查就是前面讲的巨型帧和传输包大小。打开网卡属性把“巨型帧”设置为9KB再把MVS相机端传输包大小同步设置到8000以上具体看网卡能力95%的花屏丢帧问题都能解决。剩下的5%查线缆质量、接头氧化、电磁干扰。现场有大功率电机或者变频器同时启动时会通过接地回路或网线串扰影响相机数据传输建议相机网线用带屏蔽的工业以太网线并且做好设备接地。也可以把相机和变频器分在不同电源回路避免干扰顺着电源走进来。5.4 相机频繁掉线和自动休眠相机上电后工作一小会儿就掉线重新连上又能用一会儿很多人以为是相机坏了。背后原因大概率是网卡节能或者相机自动关机功能没关。前者的处理在2.3节已经说了去设备管理器把网卡节能选项全部关掉。后者是海康相机比较容易忽略的一个默认行为在相机长时间没有触发请求时为了降低功耗传感器会自动进入休眠状态等你下一次触发来的时候它被唤醒需要几百毫秒甚至更久如果PLC触发已经结束这次拍照就丢了。解决方式是在MVS的“电源管理”或“设备控制”里把自动关机、自动节能这类选项全部禁用。如果是为了降低产线空闲功耗可以保留PLC暂停触发时的掉电策略但必须在拍每个工件的间隔内保证相机完全不进休眠。5.5 一套高效的排查顺序综合所有坑我给自己定了一套联调排查顺序每到一个新项目都先按这个来少走很多弯路网络层验证ping相机IP通不通不通就查IP、网线、网卡、防火墙相机自检在MVS里用软触发手动拍一帧确认相机本体、镜头、光源没有故障参数核对触发模式、触发源、触发沿、曝光、增益逐项过一遍信号验证接上PLC信号用万用表或示波器看相机端信号是否真的到达稳定性验证连续触发100次甚至500次看有没有漏拍、丢帧、掉线节拍验证按产线实际节拍跑一段时间看长时间运行下温升、丢包、相机状态是否稳定。这套顺序的价值在于先排除相机自身问题再查外部信号最后做压力测试避免在错误方向上反复折腾。6. 项目调试中的几个个人心得做完这个项目之后我把相机端的设置过程整理成了公司内部的标准作业文档因为类似场景后面肯定还会重复。这里分享几个我自己的经验不一定写进了手册但非常实用。第一第一次通电连接相机之前先把所有网卡节能关掉把巨型帧打开再做IP设置。这三件事做完后面大部分通信层面的麻烦都自动消失了。第二在MVS里调好参数后保存到用户集并导出文件同时拍一张界面截图留存每个参数对应的实际场景照片后面做故障复盘会非常有用。第三如果项目允许硬触发一定是首选它能省掉很多中间环节通信触发只在需要视觉系统与产线中控系统深度联动的场景下才真的划算。还有个小技巧在PLC程序里加一个“相机心跳监控”。如果相机通过以太网通信你可以让上位机周期性读取相机在线状态并写回PLC寄存器PLC检测到掉线就报警并暂停设备运行避免出现“工件都过去了相机却一张没拍”的批量漏检事故。这个思路虽然简单但在实际项目中价值极高。希望这篇基于西门子1200和海康相机联动案例的相机端设置详解能帮你少踩一些我踩过的坑。配置这东西核心就是那十几个参数但每个参数背后都有一段现场故事把它们理顺了你的视觉工位十有八九能一次拉通。
返回列表