ARTICLE DETAIL

资讯详情

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

机器视觉产线链路部署:海康相机与PLC通信实战指南

机器视觉产线链路部署:海康相机与PLC通信实战指南 我在技术交流群里被问得最多的问题之一就是海康相机、西门子PLC、一台嵌入式工控机相机到PLC到底怎么连问的人往往设备都齐了就是不知道从哪下手。这个看似是怎么接一根线的问题实际上问的是整套机器视觉产线的链路部署。今天我就以一套典型检测工位为例把从相机选型、触发采集、图像处理到PLC执行的完整链路拆开讲一遍。文章适合机器视觉应用工程师、PLC工程师以及准备上视觉检测方案的非标设备集成商参考目标是让看完的人能自己规划出一条可靠的部署路径。1. 先理清整套链路触发、采集、处理、执行四步之间是什么关系我最早做第一个视觉项目的时候觉得把网线一插、IP设一下、PLC里写几行梯形图就算部署完成。后来被实际项目教育了几次才明白物理连接只是整条链路里最简单的一环真正要打通的是触发—采集—处理—输出—执行这条逻辑链路。1.1 触发信号才是整条链路的发令枪先看一个典型的检测工位布置。产品沿流水线过来经过一个光电传感器或者其他到位检测装置。这个传感器的信号就是整条视觉链路的发令枪。没有这个信号相机不知道什么时候该拍照工控机不知道什么时候该处理PLC也不知道什么时候该执行。触发信号有三种接法。第一种是光电信号直接进相机的IO触发口不经过PLC。这种接法延时最小、确定性最高适合高速产线因为不经过PLC的扫描周期触发到曝光的延迟基本取决于相机硬件的响应时间。第二种是光电信号先进PLC由PLC算好时序再输出给相机。PLC扫描周期一般5到20毫秒听起来不长但高速产线上每件产品都多等10毫秒就可能造成位置偏移影响成像稳定。如果产线节拍不高或者需要在触发前做判断比如先判断产品型号再决定拍不拍那就让PLC做中转顺便还能控制光源频闪。还有第三种方案也是我在多数项目里推荐的PLC负责提供一个允许检测的使能信号而实际的采集触发信号仍然由光电开关直接给相机。这样既保证触发实时性又保留了PLC对整线的掌控权。产线没在运行时PLC不给使能相机就算收到误触发也不会拍照逻辑非常干净。1.2 图像数据流与PLC的介入点数据流的顺序很简单相机曝光图像传输到工控机内存视觉算法处理给出结果结果送给PLCPLC驱动执行机构比如剔除气缸、报警灯、分拣机构或者机器人抓取。注意PLC在这条链路里只出现在两个位置触发链路的起点或中转以及结果链路的终点。工控机把图像处理完以后要把结果变成PLC能用的信息这个转换才是真正意义上的连接。结果信息一般分两类。布尔型结果比如OK/NG、有/无、型号A/B可以用一个输出点或者一个寄存器搞定。数值型结果比如检测到的像素坐标、测量尺寸、缺陷面积、电子秤读数就得走结构化通信把多个值打包发给PLC。很多项目后期扩展出问题就是因为一开始只设计了OK/NG两个状态后面要加测量值只好重新对着通信协议改一版代码。所以我在设计阶段就建议客户把寄存器表预留出来哪怕第一版只传几个状态字也要把后续可能扩展的数值区留白。设备软件这东西最难改的就是接口一开始多留几个空位成本几乎为零。2. 硬件选型与物理连接相机、镜头、光源、工控机怎么配硬件选型这块我的原则是从检测需求反推而不是从预算正推。很多刚入行的朋友上来就问500万像素够不够这没法回答。要先问三个数视野多大、最小检测特征多大、节拍多少。有了这三个数选型才是科学的。2.1 相机和镜头先算像素精度再看品牌一个简单的估算方法视野宽100毫米要检测0.1毫米的最小缺陷缺陷至少要占3到5个像素才算可靠。按3个像素算每个像素的物理尺寸就是0.1除以3约等于0.033毫米。分辨率至少要100除以0.033约3000像素。这个精度用500万像素相机2448乘2048正好再留一点景深和余量选600万或800万像素更稳。帧率直接对节拍。每分钟60件产品15fps的相机绰绰有余每分钟600件就需要高速相机配合硬件触发普通USB3.0相机恐怕跟不上。这里我建议把节拍余量做足相机帧率至少是产线节拍的1.5倍以上否则后期光源老化、产品速度波动会非常被动。传感器类型也要注意。拍静止工件卷帘快门rolling shutter问题不大拍运动中的工件一定要用全局快门global shutter否则图像会变形测量结果偏得离谱。海康、Basler、大华这几个品牌都有成熟的全局快门面阵相机工业场景里我比较推荐这几个。消费级相机比如ZED双目相机做研究没问题但在产线上长期跑稳定性、工业接口、温漂控制都差一截我自己是不敢拿它上线用的。镜头接口多为C口。选镜头时要算焦距焦距等于工作距离乘靶面尺寸再除以视野宽度。比如工作距离300毫米、靶面1/1.8英寸约7.2乘5.4毫米、视野宽100毫米焦距约等于300乘7.2除以100约21.6毫米选个16毫米或25毫米的定焦镜头都行。精度要求高的测量项目建议优先考虑远心镜头畸变极小边缘和中心的放大倍率一致虽然贵但值得。普通镜头就算标定过畸变温度和震动一变标定结果就飘了。另外镜头光圈不要一上来就开到最大边缘画质会明显变差一般收两档用。光源方面我只强调一点颜色选择直接影响检测稳定性。红色LED打在深色工件上对比度往往很好蓝色光适合反光较强的金属表面红外光能穿透某些半透明包装。表面划痕检测用环形光轮廓测量用背光反光表面用同轴光。如果你不确定光源角度和颜色最好的办法是拿实际工件到光源厂家或者借一套光源测试架现场打光试拍不要凭感觉定。2.2 嵌入式工控机别光看CPU跑分工控机是整个链路的大脑。嵌入式无风扇工控机在产线环境里受欢迎是因为它的被动散热结构没有风扇口粉尘进不去故障率低。但无风扇机型散热能力有限选型时别光看CPU型号要看整机功耗和散热设计是否压得住持续负载。我见过有人配了一台高配CPU的无风扇工控机夏天车间一热就降频图像处理耗时直接翻倍。我一般建议至少四核以上、16GB内存起步。视觉算法一旦跑起来CPU占用不是平稳的而是跟随产线节拍一高一低地跳。内存里同时要放多张图像数据、SDK运行库、Halcon或OpenCV的工作内存16GB是安全线。存储上系统盘用SSD没毛病但如果想把检测图像存档追溯建议单独挂一块机械盘或者把图像传到NAS别让系统盘承担无休止的写入任务否则SSD寿命会大幅缩短。网口是相机通信的重点。多个相机最好选带多个独立千兆网口的机型Intel网卡驱动稳定、对巨型帧和丢包率的控制都比杂牌网卡好得多。有些机型还带PoE供电可以直接给相机供电省一根电源线。选型时还要给触发IO留足余量至少要有4路隔离DI、4路DO后面接PLC、接光源控制器、接报警灯都方便。2.3 接线和地线电气层面最容易翻车的部分这一节我要多说几句因为大多数人栽在这儿。触发线和状态线的电平标准必须一致。PLC输出大多是24V PNP高电平有效相机IO口很多也兼容24V输入但不是说随便一接就行。如果有NPN低电平有效设备混进来必须加转换继电器或者用双向IO模块。我在一个项目里就见过PLC输出的是NPN工控机DO是PNP中间没有任何转换结果触发信号时有时无排查了整整两天。地线问题更要命。相机、工控机、PLC三者的参考地如果不共地触发信号会漂移严重时直接烧IO口。最稳妥的做法是所有24V电源的0V统一接到同一个参考地排工控机的机箱接地要可靠。测量触发信号用示波器最直观触发线的上升沿如果超过5毫秒的抖动多半是有干扰或者共地不良。还有一个容易忽略的点电源负载。相机、光源、工控机、PLC最好不要挤在一个24V开关电源上光源频闪和电机启停的电流波动会把电压拉出纹波导致相机采集不稳。一般建议相机和光源单独配一个电源工控机用独立的220V回路PLC用另一路24V。不少设备商为了省成本只用一个大开关电源前期没事后期问题不断。多花一两百块钱多买一个电源比事后排查省时省力得多。3. 相机到工控机网络配置与触发采集细节相机到工控机这一段在协议层面通常是GigE Vision在物理层面就是一根工业网线。哪怕USB3.0接口的相机速度更快工业现场选GigE仍然居多因为100米的传输距离、抗干扰能力和线缆成本都更友好。3.1 静态IP、巨型帧和防火墙每台相机都要一个独立的静态IP和工控机上对应的网卡处于同一网段。多相机系统最好规划一张IP分配表我来演示一个最简单的分配逻辑工控机视觉网卡192.168.1.100相机1192.168.1.101相机2192.168.1.102相机3192.168.1.103不要用DHCP产线上路由器一重启IP变了相机就找不到了。工控机上如果有双网卡视觉网络和办公网络、PLC网络尽量分开避免广播域互相污染。有人说我不就是多插了一根网线吗结果视觉数据和大流量的办公数据挤同一个网卡帧率直接掉一半。巨型帧开不开是个细节。GigE相机一帧图像能到几兆字节开启9000字节的巨型帧可以减少数据包数量降低CPU中断次数传输更稳定。但要注意整条链路上的设备工控机网卡、交换机、相机网口必须全部支持并且统一开启否则大包被中间设备丢掉反而疯狂重传图像直接花屏。最省心的做法是如果交换机老旧不确定支持巨型帧干脆全链路关闭巨型帧图像传输一样能跑只是CPU占用略高一点。防火墙和Windows自动更新是我在所有部署工控机上第一件事就处理掉的。试想一个检测工位正在全速跑产线Windows忽然弹出一个更新重启的提示几百件产品漏检就出去了。还有杀毒软件实测会显著拉长图像读取时间。视觉工控机上的杀毒软件建议要么卸载、要么把相机SDK的进程目录加白名单。这个问题几乎每个新项目都会遇到提前处理能省很多麻烦。3.2 硬触发、软触发与海康相机IO触发配置触发模式的选择我前面讲过一部分这里给一个完整的配置思路。以海康相机在MVS环境下的设置为例相机参数里TriggerMode设为OnTriggerSource选择对应触发线比如Line2TriggerActivation设为上升沿或下降沿再设置曝光时间和帧率上限。这些配置既可以在MVS的界面里手动调也可以写在SDK代码里运行后自动下发。项目交付时我强烈建议把参数写死在代码里每次启动时自动下发一遍防止现场有人误改了MVS配置导致产线停线。三种触发方式的对比我列一下触发方式触发来源实时性适用场景硬触发外部设备给相机IO口发脉冲最好产线固定节拍、高速检测软触发上位机软件发采集命令依赖软件调度节拍不固定、需要流程控制的场景连续采集相机一直出图软件取帧消耗最大不建议产线长期运行使用关于很多人搜的海康相机IO触发模式并输出NG/OK这个需求其实是两段IO触发是相机侧的事NG/OK输出是工控机侧的事。相机本身只负责收到触发线信号、采集一张图、把图交给SDK它自己并不知道这张图是OK还是NG。真正的判定逻辑在工控机里判完以后要么拉高或拉低某个DO口要么写一个寄存器给PLC。所以部署时相机侧要配好触发源工控机侧要写好判定和输出逻辑两段合起来才能实现IO触发并输出NG/OK。海康部分型号需要使用加密狗比如7100加密狗来启用SDK里的某些授权功能。签约项目里经常有工程师卡在相机连上了但高级功能调用失败这一步多半就是授权问题。部署前一定先确认加密狗插好、对应版本的驱动和SDK装齐再开始写代码。这套流程在品牌机海康、Basler、大华上几乎一样SDK虽然不同但思路是共通的。3.3 相机标定像素坐标怎么变成物理坐标和机器人坐标部署不只是接线和协议还有坐标系的问题。如果视觉系统只出OK/NG标定可以简化但如果视觉系统要输出测量值、或者要引导机械手抓取标定就是绕不开的一步。内参标定解决的是像素尺寸到底对应多少毫米。做法是拿棋盘格标定板在不同位姿下拍十几张图用张正友标定法解出内参矩阵和畸变系数OpenCV的calibrateCamera和Halcon的calibrate_cameras都有现成实现。标完之后图像里的距离测量才有意义。一个常见错误是拿着标定结果就上产线其实每换一次镜头、每变一次光圈内参都要重新标因为镜头畸变会随着光圈和焦距变化。外参标定手眼标定解决的是相机看到的坐标怎么换算到机器人坐标。对于2D视觉引导核心是求单应性矩阵H把像素坐标映射到机器人基座坐标系。这个H矩阵本质上是两个平面之间坐标变换的简写部署时用标定板固定几个已知位置的点采集对应像素坐标用最小二乘法解出H。很多项目运行一段时间后位置偏差变大就是因为标定板位置动了、或者相机被撞过需要定期重新标定。双目相机和3D结构光相机的部署又不太一样。双目相机要先标定左右目之间的外参再做立体校正流程更长3D结构光相机自带深度信息部署时要做的工作通常是深度相机坐标系到机器人基座坐标系的标定方法类似但数据是三维点云。这类设备在无序抓取、堆叠分拣场景里很常见优势是能直接拿到高度信息劣势是成本高、标定流程长、对现场环境和反光比较敏感不是所有项目都需要上。4. 工控机到PLC四种主流对接方式的适用场景和实操细节这一章是很多人问得最多的部分。相机到PLC怎么连其实工控机到PLC这段才是真正的重头戏。我把常见的四种方式按优先级排一下你可以根据项目实际情况选择。4.1 IO硬接线最笨但最可靠如果项目只要求传几个布尔量比如OK/NG、产品有无、设备就绪或故障IO硬接线是最省心的选择。它不依赖任何协议栈PLC侧一个输入点读电平工控机侧一个输出点拉高拉低物理上就是一根线。IO硬接线有两个注意事项。一是电平匹配前面讲过的PNP/NPN问题在这里最常见建议在工控机IO和PLC之间加中间继电器隔离。继电器线圈接工控机DO侧触点接PLC输入侧两边电气完全隔离干扰传不过去。二是抖动和脉宽PLC的输入滤波时间如果设得太大比如默认的10毫秒而工控机发出的OK信号只维持了5毫秒PLC根本读不到。调试时把PLC输入滤波时间调小或者让工控机把输出保持50毫秒以上再复位。这点细节看着小实际因为脉冲太短导致信号丢失的案例非常多。4.2 Modbus TCP兼容性最好的万金油现在绝大多数PLC都带以太网口Modbus TCP几乎成了默认选项。工控机做TCP客户端PLC做服务器读写保持寄存器区完全不需要额外硬件成本可以直接上。实操中要先约定寄存器表。以西门子S7-1200为例在PLC侧用MB_SERVER指令块创建Modbus TCP服务器映射到DB块工控机侧用Modbus TCP客户端库比如C#的NModbus、Python的pymodbus读写指定地址。我常用的寄存器分配是40001状态字BIT0为视觉就绪BIT1为硬触发使能BIT2为系统故障40002OK计数40003NG计数40004当前检测结果0为OK1为NG40101起测量值、缺陷码、坐标等扩展数据区这套设计很朴素但胜在清晰。PLC主程序里只需要轮询读一个当前检测结果寄存器看见非0就去执行剔除动作动作完成后再写一个接收确认寄存器回去告诉工控机这一轮结果已经消费掉了。两个方向都有握手比单方向发数据可靠得多。有一个典型场景可以说明这种方式的便利视觉系统OCR识别电子秤上的数值然后把读数传给PLC做数据记录。OCR识别出来的是字符串要转成浮点数按整数部分和小数部分分别放进两个寄存器PLC侧再拼回去。这种需求用Modbus TCP非常顺手一个寄存器一个寄存器地按位定义调试时两边都可以直观地看到数值变化问题定位很容易。4.3 TCP Socket自由协议适合结构化数据交换当要传的不是简单几个布尔量而是一串结构化的数据——比如一个缺陷列表每个缺陷带X坐标、Y坐标、面积、类型码——Modbus那种按寄存器一个一个读写的方式就有点吃力了。这时候用TCP Socket自定义报文更合适。工控机作为TCP服务器监听某个端口PLC作为客户端主动连接或者反过来双方约定一个简单的报文格式帧头0xA5 0x5A、报文长度、命令字0x01为检测结果0x02为通信心跳0x03为参数下发、数据区JSON或者二进制结构体、校验CRC16或求和校验、帧尾。复杂带来的问题是排查难。粘包、拆包、半包、超时重发每一个都是细节。我的建议是能不用自由协议就不用。如果必须用先和PLC工程师坐下来把报文格式画清楚两端代码同步写不要各写各的否则联调时你对报文、他对时序半天对不上。上位机软件在启动时要做Socket连通性自检运行中要做心跳保活和断线重连这些基本功能千万别省。4.4 Profinet给西门子生态留一条路如果客户整线都是西门子PLC是S7-1500又希望工控机能像普通的IO设备一样挂在Profinet总线上让PLC直接读写输入输出区那可以考虑Profinet从站方案。工控机侧要么买专业的Profinet通信卡比如Hilscher的netX系列要么用支持Profinet从站协议的软件授权成本和复杂度都不低。关键问题是你的视觉上位机只是要传结果数据用Profinet的优势是PLC侧不需要额外写通信指令直接在IO映射区读写但代价是工控机侧多一套协议栈采购和调试成本上去了。我的经验是除非客户明确要求、或者项目中其他设备都在Profinet总线上否则Modbus TCP都能完成这个任务没必要为了看起来先进而上Profinet。倍福TwinCAT用户会遇到的AMS NetID问题也值得提一下。如果上位机要通过ADS协议连倍福PLC建立连接时必须填目标PLC的AMS NetID6字节比如192.168.1.1.1.1和端口号通常851。这个ID不是IP是倍福自己的设备标识体系。第一次部署的人经常把AMS NetID和IP搞混怎么都连不上。汇川InoProShop里设置端口号、CODESYS里读取网口MAC地址本质都是在以太网之上再确立一层设备身份标识先建立路由再谈通信。搞明白这个逻辑换任何PLC生态都能快速上手。5. 一套完整项目的部署排查实录写到这里我们串联一下。假设一个典型的缺陷检测工位海康500万像素全局快门相机环形光源嵌入式工控机西门子S7-1200 PLC剔除气缸。完整部署过程我通常分三步。5.1 单点验证先把每个设备单独折腾通我从来不会一上来就把所有设备连在一起。习惯的顺序是单点验证每个环节单独确认可用后才进入联调。第一步验证相机。在工控机上装好MVS SDK先用软触发模式拍照确认镜头对焦、光源亮度、视野范围都正常。这一步看起来简单但很多项目就翻车在这里——焦距没算对导致视野不够光源角度不对导致反光镜头防尘圈松动导致图像模糊。此时也是做相机标定、确认测量精度的好时机。第二步验证PLC和剔除机构。在PLC里写一个简单的测试逻辑比如M10.0置位时气缸动作。用软件模拟这个M点确认气缸、电磁阀、气路的动作都正常。这一步可以完全脱离视觉工位在触摸屏或者博途里强制变量就行。第三步验证通信。工控机和PLC之间先跑一个最简单的Modbus TCP读写测试工控机写一个寄存器PLC读出来显示在触摸屏上PLC写一个寄存器工控机读出来弹窗提示。就这一个测试能暴露出八成以上的通信配置问题。这一步通了后面的联调就有了信心基础。5.2 链路联调从手动触发到全自动联动单点都通了就开始串。先把光电传感器的触发信号接到相机IO口用一块挡板模拟产品通过确认相机的硬触发采集正常。这步要观察触发延迟和曝光时刻的图像位置。如果图像里产品位置和实际到位位置偏差大就要调整传感器安装位置或者触发提前量。产线速度快的时候触发提前量差几十毫秒图像里产品位置可能偏出视野这个参数必须在试跑时仔细调。然后从工控机发一个测试结果给PLC看PLC侧的剔除气缸是否动作。这时重点看时序从图像处理结束到气缸动作中间隔了多长时间是否满足产线节拍要求。如果气缸动作太慢可能的原因包括工控机判定输出太晚、PLC扫描周期太长、气缸电磁阀响应太慢。逐个排查不要一上来就说是PLC的问题。都通了我们才把PLC的自动程序放开让产线全速跑。一开始用小批量试跑统计首件的误杀率和漏检率。这里说的误杀率是指把好的判成坏的漏检率是指把坏的放过去了。这两个指标此消彼长阈值松一点误杀低但漏检高紧一点反过来。实际调整时用一批已知好坏的产品做标定集把判定阈值调到一个平衡点。图像处理算法里那些忽略点数参数本质上就是最小允许面积阈值用来过滤噪点和灰尘调它就是在调误杀与漏检的平衡。5.3 压力测试和归档别在交付后才发现问题试跑没问题不等于交付没问题。我的习惯是至少全速跑24小时以上重点观察工控机内存是否一直涨内存泄漏、Socket或Modbus连接是否中途断开、相机是否偶发丢帧、剔除气缸是否跟得上节拍、CPU峰值占用是否在70%以下留出余量。压测期间日志很重要。工控机每处理一件产品都要写一条日志包含帧号、时间戳、结果、处理耗时。PLC侧的诊断缓冲也打开。出了问题两边日志对上时间戳就能快速定位是采集慢、处理慢、还是通信慢。没有日志的现场排查基本靠猜效率极低。项目交付时我会把整条链路的部署文档整理成一份《视觉系统链路说明》IP分配表、寄存器地址表、报文格式定义、触发时序图、故障排查指南。这份文档在后续维护时是最有用的资产一定要认真写。设备软件改过之后同步更新文档不然半年后连自己都看不懂当时的配置了。6. 几种典型故障的完整排查链路最后分享几个我在实际项目里反复遇到过的坑按排查链路的方式写方便你将来对号入座。排错这件事思路比技巧重要因为它是一个逐段缩小范围的过程不是猜谜。6.1 触发信号偶尔丢失现象产线全速运行时每一百件产品总有那么一两件没被检测到工控机日志里对应的帧号是空的。排查链路先看光电开关本身拿示波器量光电传感器的输出波形观察产品通过时信号是否稳定。如果电机启停时信号上有毛刺说明干扰已经进来了。再看PLC中转路径如果触发信号经过PLC注意是否因为PLC输出脉宽太短被相机错过了。PLC扫描周期如果抖得很厉害输出脉冲实际宽度可能只有几毫秒相机的输入光耦来不及响应。最后看接线触发线如果和动力线走同一个线槽干扰的概率极大。我遇到最多的原因就是后两类PLC输出脉宽过短或者触发线和动力线靠太近。解决方案也简单PLC输出触发信号后保持50毫秒以上再复位触发线单独走管和动力线保持间隔必要时加屏蔽层并单端接地。6.2 Modbus TCP通信超时现象产线长时间运行后工控机的视觉软件偶尔报通信超时PLC侧诊断缓冲也有连接断开的记录。排查链路第一步在网络层排除。在工控机上连续ping PLC的IP一小时看丢包率。如果有丢包优先怀疑物理链路网线水晶头是否氧化、交换机端口是否协商错误、网线是否过长。用一台笔记本直连PLC再ping能快速缩小范围。第二步看协议层Modbus TCP的超时时间如果设置太短比如只有500毫秒PLC忙的时候响应慢必然超时把超时时间调到3到5秒同时增加重试机制。第三步看应用层如果工控机里多个线程同时读写同一个Modbus连接且没有加锁也会偶发超时。我排查过最诡异的一次是程序里两个线程抢同一个socket导致的加了一行锁就解决了。最终修复通常是把通信代码封装成一个独立的通信线程加断线自动重连逻辑。工控机作为客户端每5秒发一次心跳PLC侧检测到3次心跳丢失就报故障提醒维护不让产线在视觉失联的状态下盲目运行。6.3 图像偶尔花屏或者丢帧现象软件里偶发出现半幅图像花掉像马赛克一样或者本来设定30fps跑起来只有20fps。排查链路先看传输层用wireshark抓包看有没有TCP重传或者丢包。如果有大量重传巨型帧配置不一致是头号嫌疑。用一条已知好的短网线直连相机做对比测试能快速排除线材问题。再看工控机负载CPU占用如果是99%图像数据到了内存但处理不过来SDK内部的接收缓冲区溢出丢帧就开始了。调低分辨率、减少算法中高耗时的算子、停掉不必要的窗口刷新都能释放CPU。最后看供电USB相机如果供电不足帧率会掉得很诡异GigE相机如果用PoE供电要确认供电功率够。这个概率不高但排查到最后容易忽略。还有一种少见但真实存在的原因相机SDK版本和驱动版本不匹配。升级了相机固件旧SDK就不稳定了。这种情况多换几个版本对比测试就能定位我把这个写在最后是因为它最隐蔽一般人不会往软件版本上想。7. 复盘把能跑做到稳定跑最关键的几件事项目做多了以后我会在每次交付后做一个复盘。这里说几条最关键的经验全是踩过坑换来的。第一触发和通信的可靠性优先级要高于算法的花哨程度。你可以慢慢优化算法精度但触发丢一个信号、通信断一次线都是直接的停线和废品。部署时我会在触发链路和通信链路上投入最多精力宁可多用一路继电器、多写一套重连逻辑。第二协议越简单越好维护。除非项目有明确要求否则IO硬接线能解决的就不用ModbusModbus能解决的就不用Socket上Profinet一定是项目有硬需求。复杂协议不是不能用而是给后续维护的人增加了门槛。产线设备是要跑好几年的照顾一下站在你身后接手的同事。第三日志才能还原现场。感觉它偶尔出问题是对工程师最痛苦的描述。没有日志就没有现场数据排查就只能靠猜。所以我在工控机软件里从一开始就设计日志系统每一帧、每一次通信、每一个异常都有时间戳。PLC侧也打开诊断缓冲。等出了故障两边日志一对问题通常半小时内就能定位。最后说一句题外话。如果你是刚入行的机器视觉应用工程师正在找学习路线我的建议是先别急着啃高深的图像算法把一套链路从头到尾走通——一台相机、一块电磁阀、一台PLC、一个简单的OK/NG判定。链路通了你建立的是对整个系统的直觉算法再漂亮跑不到产线上没有任何价值。这篇算是一条从零起步的链路部署地图希望它能帮你少走几步弯路。
返回列表