PLC传感器信号采集与处理:光电开关、接近开关、磁性开关选型与接线实战
1. 从“能转就行”到“信号干净”为什么第三篇要死磕传感器玩PLC的人有个很明显的分水岭刚入门的时候满脑子想的都是“程序怎么写”“梯形图怎么画”“定时器用TON还是TOF”觉得只要逻辑对了设备就该动起来。但真正在产线上摸爬滚打过几年之后你会发现绝大多数现场故障根本不在程序里而在信号上。程序写得再漂亮一个光电开关被粉尘糊住了、一个接近开关的检测距离差了2毫米、一个磁性开关的安装位置偏了半圈整条线就得停。《PLC练法》这个系列写到第三篇我想把话题从“编程技巧”拉回到最底层的东西——传感器信号的采集与处理。这一篇的核心关键词是PLC、光电开关、接近开关、磁性开关、光纤放大器。这五样东西凑在一起基本上覆盖了工业现场80%以上的数字量输入场景。你把这些搞明白了再回头看那些“PLC程序编写”“PLC编程入门基础知识”的搜索记录会发现很多问题其实在信号源头就已经埋下了。这篇文章适合谁看如果你已经能独立写一些简单的梯形图能看懂西门子PLC的输入输出接线图甚至已经上手过三菱PLC或者汇川PLC的基础项目但一到现场就发现“程序明明没问题设备就是不动”或者“信号时有时无”那这篇就是写给你的。我不会只讲“光电开关有三根线棕正蓝负黑信号”这种手册上抄来的话而是把选型逻辑、安装细节、信号调理、程序消抖、故障排查这一整条链路拆开来讲让你看完之后能直接拿着万用表和螺丝刀去现场干活。先给一个整体认知PLC的数字量输入模块本质上就是一个光耦隔离的电压检测电路。它不关心你接的是光电开关、接近开关还是磁性开关它只关心一件事——输入端子的电压有没有达到它的阈值。西门子S7-1200的DI模块24V供电时逻辑“1”的阈值大概是15V以上逻辑“0”是5V以下。三菱FX系列的输入也是类似内部通过限流电阻和光耦来检测。所以所有传感器的问题最终都会归结为它有没有在正确的时刻给PLC一个足够干净的、电压达标的开关信号。这句话听起来简单但“正确的时刻”“足够干净”“电压达标”这三个词每一个都能展开讲几千字。下面我就按实际项目的推进顺序从选型到接线到程序处理一步步拆。2. 四种传感器到底怎么选别再用“差不多”的心态做决定2.1 光电开关对射、反射、漫反射差一个字差很多钱光电开关是现场用得最多的但也是最容易选错的。很多人采购的时候只说“买个光电开关”结果拿到手发现检测距离不够或者颜色识别不准或者透明物体根本检不到。光电开关按检测方式分三大类对射式发射器和接收器分开中间没有物体时光路导通有物体挡住就动作。检测距离最远从几十厘米到几十米都有抗干扰能力最强但安装最麻烦需要两边对光。反射式也叫回归反射式发射器和接收器做在一起对面装一个反光板。有物体挡住光路就动作。检测距离比对射式短一些通常几米以内安装比对射式方便但反光板脏了容易误动作。漫反射式发射器和接收器做在一起靠物体表面反射回来的光来检测。安装最方便但检测距离最短通常几十厘米以内而且受物体颜色和表面粗糙度影响很大。黑色物体吸光检测距离会大幅缩短光亮金属表面可能反射太强导致误判。我个人的经验是能上对射就上对射实在装不了再考虑反射式漫反射只用在要求不高的场合。为什么因为对射式的光路是“通”或“断”的二元状态只要光轴对准信号就非常干净。而漫反射式依赖物体表面的反射率今天检白色纸箱没问题明天换黑色塑料箱可能就漏检了。选型的时候还有一个关键参数输出类型。光电开关的输出分NPN和PNP两种。NPN输出的是低电平有效输出端对0V导通PNP输出的是高电平有效输出端对24V导通。PLC的输入模块也分源型和漏型西门子S7-1200的DI模块默认是漏型输入公共端接24V输入端子接0V时有效所以通常配PNP输出的传感器。如果你买了个NPN的传感器接上去信号就是反的程序里得取反或者加一个中间继电器转换。这个坑我见过太多次了采购图便宜买了一批NPN的结果现场全部要改程序。2.2 接近开关电感式、电容式别拿电容式去测金属接近开关和光电开关最大的区别是它不靠光靠电磁场。所以它不怕粉尘、不怕油污、不怕水在恶劣环境下的可靠性远高于光电开关。接近开关主要分两类电感式只能检测金属物体。检测距离短通常几毫米到几十毫米但响应频率高重复精度好价格便宜。这是现场用得最多的比如检测气缸活塞位置、检测工件是否到位、检测转轴上的感应片。电容式可以检测金属、塑料、液体、粉末等几乎所有物质。检测距离比电感式稍远但容易受环境湿度、温度、介质变化影响稳定性差一些。通常用在料位检测、液位检测这种场合。这里有一个非常经典的坑有人拿电容式接近开关去检测金属结果发现检测距离忽大忽小甚至误动作。原因很简单电容式的工作原理是检测介电常数的变化金属的介电常数和空气差异很大理论上能检但电容式对安装环境太敏感旁边有金属支架、有电缆、有手靠近都会影响它的电容场分布。所以检测金属就用电感式这是铁律。还有一个参数叫屏蔽型和非屏蔽型。屏蔽型也叫齐平式的感应面被金属屏蔽层包裹可以埋入金属安装检测距离会缩短一些。非屏蔽型也叫非齐平式的感应面没有屏蔽检测距离更远但安装时必须露出金属安装支架否则会被旁边的金属干扰。现场如果安装空间有限必须用屏蔽型那就得接受检测距离打折的现实。2.3 磁性开关气缸的“眼睛”装不好天天报警磁性开关是专门用来检测气缸活塞位置的。气缸的活塞上有一圈磁环磁性开关卡在气缸外壁的导轨上活塞运动到附近时磁环的磁场触发开关动作。这东西看起来简单但现场问题特别多。最常见的就是安装位置不对。气缸的行程两端通常有缓冲结构活塞在到达终点前会减速如果你把磁性开关装在气缸的最末端可能活塞还没到那个位置就已经停了或者到了之后磁场强度不够信号不稳定。正确的做法是先把气缸手动推到终点然后沿着导轨慢慢移动磁性开关找到信号刚好稳定的位置再锁紧螺丝。另一个坑是磁性开关的线序和输出类型。两线制的磁性开关不分NPN/PNP直接串在回路里就行但要注意它有漏电流接PLC输入时可能产生虚电压导致输入指示灯微亮。三线制的就分NPN和PNP了和光电开关一样选错了就得改程序或者加继电器。还有一个细节磁性开关的响应频率。普通气缸动作频率不高随便一个磁性开关都能应付。但如果是高速气缸比如每分钟动作几百次的那种就得选响应频率高的型号否则信号会丢。我见过一个高速分拣机构气缸动作频率大概300次/分钟用了普通磁性开关结果PLC读到的信号断断续续后来换了高频型号才解决。2.4 光纤放大器小空间、高精度的最后手段光纤放大器其实是光电开关的一种变体。它把发光元件和受光元件做在一个放大器本体里通过光纤线把光引到检测位置。这样做的好处是光纤头可以做得很小能塞进狭窄空间放大器本体可以放在电柜里远离恶劣环境。光纤放大器分数字式和模拟式。数字式就是输出开关量设定一个阈值超过就动作。模拟式输出的是电压或电流信号可以接模拟量输入模块用来测量距离、浓度等连续变化的量。现场用得最多的是数字式因为大部分场合只需要“有”或“无”的判断。光纤放大器的核心参数是响应时间和检测精度。响应时间决定了它能检测多快的动作通常从几十微秒到几毫秒不等。检测精度决定了它能分辨多小的物体比如检测直径0.1mm的细线就得用高精度的光纤放大器。选光纤的时候要注意光纤线不能弯折太厉害。光纤的弯曲半径有最小限制通常不能小于25mm弯得太狠光就传不过去了。我见过一个项目电工把光纤线捆扎得整整齐齐结果弯折半径太小信号衰减严重放大器怎么调都调不出来。后来把扎带松了让光纤自然弯曲问题就解决了。3. 接线不是“接上就行”从原理图到端子的完整实操3.1 先搞清楚PLC输入模块的类型在接线之前你必须先确认一件事你的PLC输入模块是源型还是漏型。这个搞错了后面全白搭。以西门子S7-1200为例它的DI模块有两种接法漏型输入Sink公共端1M接24V正极输入端子接0V时有效。这种接法配PNP输出的传感器。源型输入Source公共端1M接0V输入端子接24V时有效。这种接法配NPN输出的传感器。三菱FX系列的输入模块通常是漏型/源型可切换的通过改变公共端S/S的接线来实现。汇川PLC的输入模块也类似具体看手册。我个人的习惯是统一用PNP传感器配漏型输入。为什么因为PNP传感器的输出是高电平有效信号线对0V短路时不会损坏传感器大多数PNP传感器有短路保护而且高电平信号在长距离传输时抗干扰能力稍好一些。NPN传感器的输出是低电平有效信号线如果意外碰到24V可能直接烧掉输出管。3.2 三线制传感器的标准接线三线制传感器有三根线棕色Brown、蓝色Blue、黑色Black。棕色接24V正极蓝色接0V黑色信号输出线接PLC输入端子如果是PNP输出黑色线在传感器动作时输出24V如果是NPN输出黑色线在传感器动作时输出0V。接线的时候有一个细节传感器的电源最好单独走一组不要和PLC的电源混在一起。特别是当传感器数量多、线缆长的时候传感器动作时会在电源线上产生压降和干扰可能影响PLC的CPU模块。我通常会在电柜里单独放一个24V开关电源给传感器供电PLC的CPU和输入模块用另一个电源两个电源的0V在电柜里单点接地。3.3 两线制传感器的漏电流问题两线制传感器比如某些磁性开关只有两根线它串联在电源和PLC输入之间。当传感器不动作时它并不是完全断开而是有一个很小的漏电流通常0.5mA到1mA维持内部电路工作。这个漏电流流过PLC的输入光耦时可能产生一个虚电压导致输入指示灯微亮程序里读到错误的“1”。解决这个问题有两个办法在PLC输入端子并联一个泄放电阻。通常选2KΩ到10KΩ功率1/4W就够了。这个电阻给漏电流提供一条旁路让输入端的电压降到逻辑“0”的阈值以下。改用三线制传感器。三线制传感器的信号输出是独立的不动作时输出管完全截止没有漏电流问题。我个人的建议是能用三线制就用三线制两线制只在实在没有三线制可选的时候用。磁性开关因为结构限制很多是两线制的那就老老实实加泄放电阻。3.4 光纤放大器的接线和参数设置光纤放大器通常有五个接线端子电源正、电源负、输出1、输出2、外部同步/复位。具体看型号。以常见的数字光纤放大器为例设置步骤大概是接好电源放大器显示当前受光量。把被测物体放在检测位置按“SET”键放大器自动记录当前受光量作为阈值。拿开物体再按一次“SET”键放大器记录无物体时的受光量。放大器自动计算两个值的中间值作为最终阈值。这个过程看起来简单但实际调试的时候经常遇到问题。比如检测透明物体时有物体和无物体时的受光量差异很小自动设定可能失败。这时候就得手动设定阈值或者改用对射式光纤。还有一个细节光纤放大器的响应时间设置。如果检测的是高速动作要把响应时间设短如果检测的是缓慢变化的信号可以把响应时间设长一些这样抗干扰能力更强。这个参数在放大器的菜单里通常叫“响应速度”或“定时器功能”。4. 程序里的信号处理别让PLC“看到”抖动4.1 输入滤波硬件不够软件来凑PLC的输入模块本身有一定的硬件滤波通常是几毫秒到十几毫秒。但对于机械触点比如继电器、接触器辅助触点或者某些传感器这个滤波时间可能不够。这时候就需要在程序里做软件滤波。最常用的方法是延时确认检测到输入信号后启动一个定时器定时器时间到了之后如果信号还在才认为信号有效。比如// 西门子S7-1200的SCL示例 IF Input_Signal THEN Filter_Timer(IN : TRUE, PT : T#50ms); IF Filter_Timer.Q THEN Filtered_Signal : TRUE; END_IF; ELSE Filter_Timer(IN : FALSE); Filtered_Signal : FALSE; END_IF;这段代码的意思是输入信号为“1”时启动一个50ms的定时器50ms后如果信号还是“1”才把滤波后的信号置“1”。如果输入信号在50ms内变成了“0”定时器复位滤波后的信号保持“0”。这个方法的缺点是会引入50ms的延迟。对于大多数应用来说50ms的延迟是可以接受的。但如果你的设备动作很快比如高速计数或者位置捕捉那就不能用这种方法得用硬件滤波或者更快的信号处理方式。4.2 边沿检测上升沿和下降沿的正确用法很多初学者分不清“电平”和“边沿”。电平是“信号当前是高还是低”边沿是“信号从低变高上升沿或者从高变低下降沿的那一瞬间”。在PLC程序里如果你用普通触点去触发一个动作只要信号保持为“1”动作就会一直触发。比如// 错误示例只要信号为1计数器就一直加 IF Sensor THEN Counter : Counter 1; END_IF;这段代码的问题在于如果传感器信号保持“1”超过一个扫描周期计数器就会在每个扫描周期都加1结果完全不对。正确的做法是用上升沿触发// 正确示例只在信号从0变1的那一瞬间计数 IF Sensor AND NOT Sensor_Prev THEN Counter : Counter 1; END_IF; Sensor_Prev : Sensor;或者用PLC自带的边沿检测指令比如西门子的P_TRIG三菱的LDP汇川的R_TRIG。这里有一个坑边沿检测指令必须配合一个存储位使用。如果你在多个地方用同一个边沿检测指令或者在一个扫描周期内多次调用可能会丢失边沿。我见过有人在中断程序里用边沿检测结果主程序里的边沿检测就失效了因为中断程序把存储位改了。4.3 传感器信号的防抖和互锁在实际项目中除了滤波和边沿检测还需要考虑互锁。比如一个气缸有两个磁性开关一个检测伸出到位一个检测缩回到位。程序里必须保证伸出和缩回不能同时动作否则气缸会憋压。互锁的逻辑很简单// 伸出条件缩回到位信号为1且没有伸出到位信号 Extend_Valve : Retract_Sensor AND NOT Extend_Sensor AND Extend_Command; // 缩回条件伸出到位信号为1且没有缩回到位信号 Retract_Valve : Extend_Sensor AND NOT Retract_Sensor AND Retract_Command;这段代码保证了只有在缩回到位的情况下才能伸出只有在伸出到位的情况下才能缩回。如果两个传感器同时为“1”比如磁性开关装得太近两个阀都不会动作设备会停下来报警而不是乱动。4.4 模拟量传感器的处理虽然这篇主要讲数字量传感器但光纤放大器有时候会输出模拟量信号0-10V或4-20mA用来测量距离或者浓度。这时候就需要用到PLC的模拟量输入模块。模拟量输入的处理比数字量复杂得多主要涉及量程转换和滤波。以西门子S7-1200的模拟量输入模块为例4-20mA信号对应的数字量范围是0-27648。如果你要把它转换成实际物理量比如0-100mm公式是// 4-20mA对应0-100mm Actual_Value : (Raw_Value - 0) * 100.0 / 27648.0;但实际项目中4-20mA信号通常对应的是传感器的量程下限到上限比如一个距离传感器4mA对应0mm20mA对应100mm。如果传感器有偏移比如4mA对应5mm那就得先减去偏移量再换算。模拟量滤波通常用移动平均或者一阶滞后滤波。移动平均是取最近N个采样值的平均值N越大越平滑但响应越慢。一阶滞后滤波是Filtered : Filtered * 0.9 Raw * 0.1;这个系数0.9和0.1可以根据需要调整系数越大越平滑。5. 现场排查实录那些年我踩过的传感器坑5.1 光电开关被粉尘糊住信号时有时无这是最经典的现场问题。一个包装线上的光电开关用来检测纸箱是否到位。刚开始运行正常过了两个月开始偶尔漏检。操作工说“有时候箱子过去了没反应有时候没箱子也报警”。到现场一看光电开关的镜头上一层灰。用棉签擦干净问题解决。但过了两周又出现了。这次我仔细看了一下安装位置发现光电开关装在纸箱输送带的正上方纸箱经过时会有纸屑和粉尘飞扬镜头很快就会被糊住。解决方案把光电开关改成对射式发射器和接收器分别装在输送带两侧镜头朝水平方向粉尘不容易堆积。同时加了一个压缩空气吹扫装置每隔一段时间自动吹一下镜头。改完之后半年没再出过问题。经验光电开关的安装位置要避开粉尘、水汽、油污的直接冲击方向。如果避不开就得加防护措施比如吹扫、加长遮光罩、改用对射式。5.2 接近开关检测距离不够工件稍微偏一点就漏检一个机加工线上的接近开关用来检测工件是否到位。工件是铸铁件尺寸有公差有时候偏左有时候偏右。接近开关的检测距离是8mm但工件偏移后距离变成了12mm就检测不到了。解决方案换了一个检测距离更大的接近开关从8mm换成15mm同时把安装支架改成可调的让操作工可以根据工件批次微调位置。另外在程序里加了一个延时确认工件到位后如果信号没来延时200ms再检查一次给工件一个“稳定”的时间。经验接近开关的检测距离是在标准测试条件下的标称值实际检测距离会受工件材质、尺寸、安装环境的影响。选型的时候要留至少30%的余量。5.3 磁性开关信号抖动气缸动作不稳定一个气缸的磁性开关信号在程序里看是断断续续的。用万用表量电压在12V到24V之间跳变。一开始以为是磁性开关坏了换了一个新的还是一样。后来发现是气缸的磁环磁性太弱。这个气缸是便宜货磁环的磁场强度不够磁性开关在活塞经过时只能勉强触发信号边缘很模糊。再加上气缸动作时有振动磁性开关的位置稍微偏移一点信号就丢了。解决方案换了一个带强磁环的气缸同时把磁性开关的安装位置重新调整用示波器看信号波形找到最稳定的位置再锁紧。另外在程序里加了50ms的滤波把抖动滤掉。经验磁性开关的信号质量很大程度上取决于气缸磁环的质量。如果气缸本身是便宜货磁性开关再怎么调也调不好。选气缸的时候磁环的磁性强度是一个容易被忽略但非常重要的参数。5.4 光纤放大器被环境光干扰误动作一个光纤放大器用来检测小零件的有无。白天运行正常晚上车间开灯之后就开始误动作。用示波器看放大器的输出发现晚上有周期性的干扰脉冲。原因是光纤放大器的受光元件对特定波长的光敏感车间的照明灯特别是荧光灯和LED灯含有这个波长的成分通过光纤头串入了放大器。虽然放大器有调制解调功能发光元件以特定频率闪烁只接收这个频率的光但环境光太强时还是会干扰。解决方案给光纤头加了一个遮光罩挡住侧面来的环境光。同时把放大器的灵敏度调低一些让它只对近距离的物体有反应。如果还不行就得换用抗环境光能力更强的型号。经验光纤放大器虽然精度高但对环境光敏感。安装时要避免光纤头正对光源必要时加遮光罩。如果环境光变化很大比如白天晚上差异明显最好在程序里加一个“学习”功能定期自动调整阈值。5.5 传感器电源压降导致PLC输入误判一个项目用了30多个传感器全部由一个24V开关电源供电。传感器分布在设备的不同位置最远的距离电柜有50米。运行一段时间后发现靠近电柜的传感器工作正常最远端的传感器偶尔会误动作。用万用表量最远端传感器的电源电压发现只有21V左右。原因是线缆太长线径太细电流流过时产生了压降。传感器的标称工作电压是24V±10%也就是21.6V到26.4V21V已经低于下限了。解决方案把传感器电源线加粗从0.5mm²换成1.0mm²同时在设备远端加了一个小型的24V电源就近给远端传感器供电。改完之后电压恢复到23.5V以上问题解决。经验传感器供电线缆的压降是一个容易被忽略的问题。线缆越长、电流越大、线径越细压降越明显。设计的时候要算一下压降 电流 × 线缆电阻 × 2来回两根线。如果压降超过1V就得考虑加粗线径或者就近供电。6. 从传感器到程序一个完整的信号链路案例6.1 案例背景气缸推料机构假设有一个简单的推料机构气缸把工件从输送带推到加工位加工完成后气缸缩回。需要检测的信号有工件到位光电开关PNP漫反射式气缸伸出到位磁性开关1两线制气缸缩回到位磁性开关2两线制加工位有工件接近开关PNP电感式PLC用西门子S7-1200DI模块是漏型输入。6.2 硬件接线和参数设置光电开关棕色接24V蓝色接0V黑色接DI0.0。漫反射式检测距离30cm灵敏度调到刚好能检测工件。磁性开关1和2两线制一端接24V另一端接DI0.1和DI0.2。因为两线制有漏电流在DI0.1和DI0.2上各并联一个4.7KΩ的泄放电阻到0V。接近开关棕色接24V蓝色接0V黑色接DI0.3。电感式检测距离8mm屏蔽型埋入金属支架安装。6.3 程序逻辑设计程序分几个部分输入滤波所有输入信号都做20ms的延时确认。边沿检测工件到位信号用上升沿触发“开始推料”命令。互锁逻辑气缸伸出和缩回互锁防止同时动作。超时报警气缸动作后如果3秒内没有到位信号报警停机。核心代码SCL// 输入滤波 FOR #i : 0 TO 3 DO IF Input[#i] THEN FilterTimer[#i](IN : TRUE, PT : T#20ms); IF FilterTimer[#i].Q THEN FilteredInput[#i] : TRUE; END_IF; ELSE FilterTimer[#i](IN : FALSE); FilteredInput[#i] : FALSE; END_IF; END_FOR; // 工件到位上升沿 IF FilteredInput[0] AND NOT Workpiece_Prev THEN Start_Push : TRUE; END_IF; Workpiece_Prev : FilteredInput[0]; // 气缸控制 IF Start_Push AND FilteredInput[2] THEN // 缩回到位 Extend_Valve : TRUE; Retract_Valve : FALSE; Start_Push : FALSE; END_IF; IF FilteredInput[1] THEN // 伸出到位 Extend_Valve : FALSE; // 延时后自动缩回 Retract_Timer(IN : TRUE, PT : T#2s); IF Retract_Timer.Q THEN Retract_Valve : TRUE; END_IF; END_IF; IF FilteredInput[2] THEN // 缩回到位 Retract_Valve : FALSE; Retract_Timer(IN : FALSE); END_IF; // 超时报警 IF Extend_Valve OR Retract_Valve THEN Timeout_Timer(IN : TRUE, PT : T#3s); IF Timeout_Timer.Q THEN Alarm : TRUE; END_IF; ELSE Timeout_Timer(IN : FALSE); END_IF;这段代码看起来简单但包含了输入滤波、边沿检测、互锁、超时报警这几个核心要素。实际项目中还需要加上手动模式、复位逻辑、报警确认等功能但核心思路是一样的。6.4 调试步骤和注意事项调试的时候我通常按这个顺序来单独测试每个传感器用手或者工件触发传感器看PLC输入指示灯是否亮程序里对应的变量是否变“1”。测试气缸动作手动模式下单独控制伸出和缩回确认气缸动作正常磁性开关信号正常。测试自动流程切换到自动模式放一个工件看整个流程是否顺畅。测试异常情况故意挡住传感器、拔掉气管、模拟工件卡住看报警是否正常触发。注意事项调试的时候一定要把设备的速度调慢确认逻辑无误后再提速。气缸的调速阀要调好伸出和缩回的速度不能太快否则磁性开关可能来不及响应。如果气缸动作时有抖动可以在程序里加一个“动作确认”延时等气缸稳定后再检测信号。7. 几个容易被忽略的细节和独家建议7.1 传感器线缆的屏蔽和接地传感器的信号线如果和动力线比如电机线、变频器输出线走同一个线槽很容易受到干扰。我见过一个项目变频器一启动附近的传感器就误动作。后来把传感器线缆换成屏蔽线屏蔽层在PLC端单点接地问题就解决了。屏蔽线的接法有讲究屏蔽层只能在PLC端接地传感器端悬空。如果两端都接地会形成地环路反而引入干扰。接地电阻要小于4Ω最好接到电柜的接地铜排上。7.2 传感器的防护等级现场环境千差万别有的地方有水、有油、有粉尘。传感器的防护等级IP等级要选对。IP67可以短时间浸水IP68可以长时间浸水IP69K可以承受高压高温冲洗。如果现场有切削液飞溅至少选IP67。如果经常用水冲洗得选IP68或IP69K。我见过一个项目食品加工线上的传感器用了IP65的结果每天冲洗的时候水从线缆接口渗进去没多久就坏了。后来换成IP69K的不锈钢外壳传感器才彻底解决。7.3 传感器的备件管理传感器是易损件现场一定要有备件。但备件不是随便买几个就行要注意型号要一致不同型号的传感器检测距离、输出类型、接线方式可能都不一样混用容易出问题。数量要合理常用的传感器至少备2-3个不常用的备1个。存放要规范传感器要放在干燥、防静电的柜子里光纤头要套上保护帽避免灰尘进入。我个人的习惯是项目验收的时候按传感器总数量的10%采购备件交给客户的设备管理员。同时把每个传感器的型号、参数、安装位置整理成一张表贴在电柜门内侧方便以后更换。7.4 程序里的“传感器诊断”高级一点的PLC程序可以加一些传感器诊断功能比如断线检测如果传感器信号在应该动作的时候没有动作或者在不应该动作的时候一直动作就报警。寿命预测统计传感器的动作次数接近标称寿命时提前报警。信号质量监测对于模拟量传感器监测信号是否在合理范围内如果超出范围就报警。这些功能在大型项目里很有用可以减少非计划停机时间。但在小型项目里可能会增加程序复杂度需要权衡。8. 从传感器到系统信号链路的全局视角写到这里我想把话题稍微拉高一点。传感器只是整个PLC系统的最前端但它决定了整个系统的“感知能力”。如果传感器选错了、装错了、接错了后面的程序写得再好也是白搭。一个完整的信号链路是这样的物理量 → 传感器 → 信号调理 → PLC输入模块 → 程序处理 → 输出控制 → 执行机构每一环都可能出问题。物理量本身不稳定比如工件尺寸公差大传感器选型不当检测距离不够信号调理不到位没有滤波PLC输入模块配置错误源型/漏型搞反程序处理有bug边沿检测丢失输出控制逻辑错误互锁没做执行机构响应慢气缸速度太慢。任何一个环节出问题最终表现都是“设备不动”或者“设备乱动”。所以排查故障的时候不要一上来就盯着程序看。先确认传感器信号是否正常再确认PLC输入指示灯是否正常最后才看程序。这个顺序能帮你快速定位问题避免在程序里绕圈子。我个人的经验是80%的现场故障在传感器和接线15%在程序逻辑5%在PLC硬件本身。所以把精力花在传感器和接线上回报率最高。9. 关于《PLC练法》这个系列的一点个人体会《PLC练法》写到第三篇我越来越觉得PLC编程这件事技术本身并不难难的是对现场的理解。你可以在电脑上仿真一个完美的程序但到了现场一个光电开关的安装角度、一个磁性开关的锁紧力矩、一个光纤放大器的阈值设定都可能让整个系统崩溃。我刚开始做项目的时候也喜欢在程序里炫技用各种复杂的数据结构和算法。后来发现现场最需要的不是复杂的程序而是稳定、可靠、好维护的程序。而稳定可靠的前提是信号干净、接线规范、传感器选型正确。所以如果你正在学习PLC我的建议是先花时间把传感器搞明白再去研究编程技巧。传感器是PLC的“眼睛”和“耳朵”眼睛看不清、耳朵听不准大脑再聪明也没用。这个系列后续还会继续写可能会涉及通信、运动控制、SCADA这些话题。但无论写什么我都会坚持一个原则从现场出发讲人话讲干货。如果你在看这篇文章的时候能想到自己项目里的某个传感器能解决一个实际问题那这篇就没白写。最后再分享一个小技巧每次项目调试完成后花半个小时把所有的传感器检查一遍。看看螺丝有没有松、线缆有没有磨损、镜头有没有脏、指示灯有没有异常。这半个小时可能帮你省下未来几十个小时的故障排查时间。