
干过自动化现场的人基本都遇到过这种需求一条产线跑着跑着客户要求把“宽度”也纳入自动检测或者让你用PLC测一个脉冲信号到底“宽”了多少。“宽度对比PLC”这个词在工程里其实被说得很宽泛它既可能是产品物理尺寸的宽度测量对比也可能是脉冲时间宽度的测量与判断。这两类需求我都实际做过踩过的坑也不少今天一次性把硬件选型、测量原理、西门子和三菱的实操写法以及调试时那些教科书上不会写的细节都摊开讲清楚。1. 先把“宽度对比”这个词掰开物理宽度和时间宽度两种场景1.1 物理宽度检测产线上最常见的尺寸把关物理宽度检测说白了就是让PLC代替卡尺在线测量产品某个方向的尺寸再把测到的值和标准值做比较。最常见的是纸箱、板材、型材、管材这类有固定截面的产品生产线不停机产品连续通过靠人工抽检根本做不到全检漏检一次就可能让一整批不合格品流出去。这类需求的典型构成是传感器激光测距仪、超声波位移传感器、光电对射开关组 PLC模拟量输入模块或高速计数器 一个比较判断逻辑。传感器把物理距离或遮挡转换成模拟量信号4-20mA或0-10VPLC读取后换算成实际宽度值再和设定的上下限比较输出“合格/超宽/偏窄”三档结果超差时联动剔除气缸或者声光报警。还有一个变种是透光遮挡式用一排光电开关按固定间距排列产品通过时遮住几个光点PLC根据“被遮住的光点数量和间距”推算宽度。这种方案成本低、响应快但分辨率受光电间距限制适合精度要求不高的粗检。1.2 脉冲宽度测量信号特性的时间维度另一类“宽度对比”比的是时间——一个脉冲信号高电平持续了多长时间。这个需求在设备状态监测、执行机构到位检测、通讯波形判断里都很常见。比如电磁阀的动作响应时间、气缸到位信号的持续时间、伺服使能信号的脉冲长度、外部控制器发来的启动脉冲是否合规等。脉冲宽度测量要解决的核心问题是高电平从什么时候开始、什么时候结束中间持续了多少时间。这里涉及的已经不是模拟量转换而是PLC对时间基准的捕捉能力。用普通扫描周期去读输入点误差可能达到几十毫秒根本不能用必须靠高速计数器、输入中断、或者像S7-1200那样用硬件时基配合计数通道来实现。1.3 两种场景的底层逻辑差异物理宽度是“空间宽度”脉冲宽度是“时间宽度”两者唯一的共同点是都有一个“测量值”和“标准值”做比较。但处理思路完全不同对比项物理宽度检测脉冲宽度测量信号类型模拟量电流/电压或数字量组合数字量方波信号核心硬件模拟量输入模块 / 开关组高速计数器 / 输入中断量纲mm、cmms、μs精度瓶颈传感器线性度、安装角度时基频率、PLC响应速度主要误差源标定误差、温度漂移扫描周期、中断延迟、抖动搞明白自己面对的是哪种“宽度”再动手选型。经常有朋友上来就问“PLC能不能做宽度对比”我一般先反问你要比的是产品宽度还是脉冲宽度这两个东西的玩法和硬件配置完全不一样。2. 硬件怎么配传感器、模拟量通道和高速计数器的选择2.1 物理宽度检测的传感器选型物理宽度检测传感器是重中之重。精度要求高、测量范围大的场合优先选激光位移传感器模拟量输出量程、线性度都能做到很好中等精度场合用超声波位移传感器成本比激光低不少但要注意被测物材质和表面状态对超声波反射的影响如果只是做合格判定不需要连续数值那就直接上对射式光电开关阵列。传感器输出信号的选择也讲究。4-20mA电流环抗干扰能力比0-10V电压信号强在电柜里有变频器、伺服驱动器这些干扰源时尽量选电流输出型。模拟量输入模块的通道数量也要提前算好别忽略备用通道现场加了传感器却找不到空余通道的情况我遇到过太多次。2.2 脉冲宽度测量的硬件基础脉冲宽度测量核心就是高速计数器。西门子S7-1200自带HSC高速计数通道三菱FX3U有C235系列的硬件高速计数器这些通道可以脱离扫描周期独立计数配合外部时基信号就能精确测量时间宽度。额外说一个关键点PLC输入端子的硬件滤波时间。很多PLC输入端默认带RC滤波时间常数从0.1ms到几毫秒不等这是为了滤除触点抖动和干扰。但对于脉宽测量滤波时间过大会把窄脉冲“吃掉”或者让边沿严重延迟导致测量结果偏大或偏小。S7-1200可以在模块属性里调整输入滤波时间三菱部分型号需要在特殊数据寄存器或参数里设置。这个细节最容易忽略也是精度问题的常见根源。2.3 一个选型要点对照表场景推荐方案分辨率/精度注意事项大尺寸(300mm)高精度宽度检测激光位移传感器模拟量模块0.01-0.1mm注意安装距离和测量光斑中尺寸中等精度超声波位移传感器模拟量模块0.1-1mm被测物表面需能反射声波粗检/到位检测光电开关阵列数字量输入取决于间距响应快、成本低毫秒级脉宽测量输入中断高速定时器1ms三菱T246/西门子OB40微秒级脉宽测量高速计数器外部时基取决于时基频率需要用外部固定频率脉冲做时基2.4 接线时容易忽略的两个问题第一个是模拟量信号的屏蔽和接地。宽度检测传感器信号线必须用屏蔽双绞线屏蔽层单端接地千万别把屏蔽层在PLC端和传感器端都接地形成地环路后干扰反而更大。曾经遇到过现场模拟量信号波动±0.5%排查两天最后发现就是屏蔽层两端接地造成的。第二个是脉冲信号的电平匹配。如果外部设备输出的是NPN开集电极信号而PLC高速计数器输入是PNP类型或者正好相反脉冲根本数不进去或者计数异常。选型前一定确认传感器和PLC输入极性兼容。至于PLC输出晶体管区分NPN和PNP的问题在接线前也要一并确认这直接关系到驱动继电器和中间继电器的方式。3. 测量原理的取舍采样、计时与计数的精度上限3.1 模拟量瞬时值法逻辑最简单但动态响应要当心物理宽度检测的常规思路是模拟量模块周期性刷新通道值PLC在OB1里读取当前值换算成宽度再做比较。逻辑确实简单但模拟量输入模块的转换周期通常有几毫秒到几十毫秒如果产品在生产线上快速移动传感器扫描到的“宽度”可能已经不是产品真正的宽度而是某个瞬间的弦长或者位置偏差后的虚假读数。这种情况下不能让PLC在OB1里“逮到什么算什么”而是要用传感器的峰值保持功能或者PLC里自己做最大值采样——在产品通过期间连续读取多个采样值取最大值作为实际宽度再进行对比判断。这个“取最大值”的逻辑我在后面完整案例里会展开。3.2 定时器测宽最朴素但被扫描周期卡脖子脉冲宽度测量最直觉的做法是用定时器输入点变高时启动定时变低时读取定时器当前值差值就是脉宽。这个思路本身没错但普通定时器是跟着扫描周期走的一个扫描周期可能10ms、20ms定时器值的刷新也是这个节奏所以测量精度最高也就是一个扫描周期。如果你的PLC扫描周期是15ms那脉宽测量结果就有±15ms的误差对几十毫秒级别的脉冲来说基本没法用。要突破扫描周期限制就得靠“中断”和“硬件计数器”。三菱用输入中断高速定时器西门子用硬件中断OB40系统时间戳这样测量动作由信号边沿直接触发不依赖OB1的循环扫描精度才能上去。3.3 高速计数器法把计数器当作“时间尺子”高速计数器的本质是一个不受扫描周期影响的硬件计数器。如果给计数器输入一个已知频率的时基脉冲比如10kHz方波再用被测信号作为计数器门控——高电平期间允许计数低电平期间停止计数——那么计数器累加的数字就是高电平持续期间经过了多少个时基脉冲用这个数字除以时基频率就是高电平的持续时间。这个方案的精度不再取决于扫描周期而是取决于时基频率。10kHz时基分辨率0.1ms100kHz时基分辨率0.01ms。我在S7-1200上常用的做法是用PLC自带的PWM输出口产生一个固定频率的方波输出之后在外部短接到高速计数器输入再用被测信号作为HSC的Gate门控信号这样不依赖外部仪器就能实现微秒级脉宽测量。这个土办法成本为零在现场测试台上特别好使。3.4 误差到底从哪来三点必须同时控制住一是输入滤波时间。输入端RC滤波会滞后边沿上升沿被延迟下降沿也可能被延迟如果两个边沿延迟不一致测出来的脉宽就偏差了。所以测脉宽时输入滤波必须调到最小允许值。二是传感器或外部设备的响应时间。光电开关、接近开关的响应时间从几微秒到几毫秒都有响应时间越慢边沿越“钝”测量结果越不可靠。选择信号源器件时响应时间必须小于你允许的误差。三是时基稳定性。如果时基脉冲来自PLC的PWM输出PWM的频率是CPU硬件生成的稳定性通常很好如果时基来自外部信号发生器要注意信号发生器自身精度。别到时基本身就是歪的测量结果再精确也白搭。4. S7-1200实战用PWM时基加HSC外部门测脉宽并做对比输出4.1 组态准备HSC和PWM怎么配S7-1200这一套我实测下来最稳定。先做硬件组态在设备组态里选中CPU进入属性找到“高速计数器(HSC)”启用HSC1。操作模式选择“计数”计数输入选择I0.0不同CPU对应输入点不同。启用Gate功能选择“外部门控”Gate输入选择I0.1高电平有效。计数方向设为增计数。在数字量输入属性里把I0.0和I0.1的输入滤波时间调到最小比如0.1μs具体看模块支持。启用某个PWM输出通道比如Q0.0配置为PWM模式频率设为10kHz或100kHz占空比50%。接着在程序里做两件事调用CTRL_PWM指令启动PWM输出让Q0.0持续输出方波再调用CTRL_HSC指令使能HSC1。外部接线也很简单Q0.0用一根短导线接到I0.0被测信号接到I0.1。4.2 测量的程序逻辑外部门控加计数值读取S7-1200的HSC在外部Gate为高时开始对I0.0上的时基脉冲计数Gate变低后停止计数计数值保持住直到下次Gate再次变高才清零重计这个行为可以在组态里设置。所以OB1里只需要做两件事周期读取HSC1当前值检测到I0.1下降沿后把当前计数值锁存到结果变量里。下面是一段SCL示意代码// OB1中循环执行 #PWM_Enable : TRUE; // 确保PWM时基输出已启动 #HSC_Enable : TRUE; // 确保HSC1已使能 // 读取HSC1当前计数值 CTRL_HSC_DB.CV : 0; CTRL_HSC_DB.HSC : 1; CTRL_HSC_DB.EN : TRUE; CTRL_HSC_DB(); // 调用CTRL_HSCCV输出当前值 #ActualCount : CTRL_HSC_DB.CV; // 检测被测信号I0.1下降沿 #R_TRIG_Signal(CLK : Input_Signal, Q #FallingEdge); IF #FallingEdge THEN #MeasuredCount : #ActualCount; // 锁存Gate关闭时的计数值 // 换算脉宽计数值 * 时基周期 // 时基频率10kHz周期0.0001s计数值100就代表10ms #MeasuredWidth : INT_TO_REAL(#MeasuredCount) * 0.0001; END_IF;这段代码里我用一个上升沿检测器R_TRIG来识别“被测信号从高变低”的瞬间。实际上如果HSC的Gate正好用I0.1Gate低电平后计数值已经冻结所以下降沿时读取的计数值就是完整高电平期间的时基脉冲数。换算公式脉宽(秒) 计数值 ÷ 时基频率(Hz)10kHz时基下计数值500就代表50ms脉宽100kHz时基下计数值5000代表50ms脉宽分辨率提高10倍。4.3 宽度对比和结果输出有了脉宽数值剩下的就是对比判断。假设工艺要求高电平持续时间为20ms到80ms之间算合格代码逻辑非常直接#Width_Min : 0.020; // 最小脉宽20ms #Width_Max : 0.080; // 最大脉宽80ms IF (#MeasuredWidth #Width_Min) AND (#MeasuredWidth #Width_Max) THEN #Width_OK : TRUE; Q_WidthOK : TRUE; // 输出合格信号 Q_WidthNG : FALSE; ELSE #Width_OK : FALSE; Q_WidthOK : FALSE; Q_WidthNG : TRUE; // 输出不合格信号 END_IF;这个“合格区间”的上下限推荐用HMI或触摸屏上的变量来设置不要写死在程序里。现场工艺经常调整比如供货商换了一批电磁阀动作时间从50ms变成了30ms如果上下限写死改一次程序就得停机下载一次非常耽误事。把上下限做成HMI变量后工艺人员现场就能调。4.4 实测中遇到的几个坑第一个坑是时基信号串扰。Q0.0输出的PWM方波如果和被测信号线在同一个线槽里并行走方波边沿可能通过分布电容耦合到被测信号上导致HSC多计数几个脉冲。解决办法是时基信号线用屏蔽线且远离被测信号线。第二个坑是Gate电平的毛刺。如果被测信号本身有抖动Gate会在高和低之间快速切换计数器会累加出一些子虚乌有的宽度的脉冲。解决办法是给被测信号源加上拉电阻或RC滤波但是注意RC会影响边沿要权衡或者从源头上解决触点抖动问题。第三个坑是CTRL_HSC使能顺序。必须先使能HSC再让Gate输入生效。如果使能前Gate已经是高电平HSC可能不按预期启动计数要复位一次或者调整组态里的初始化行为。我习惯在程序启动的第一个扫描周期就把HSC使能然后等100ms再打开PWM输出让所有硬件状态稳定下来。5. 三菱FX系列实战输入中断加高速定时器实现脉宽对比5.1 三菱的硬件机制中断指针和高速定时器三菱FX3U系列做脉宽测量没有S7-1200那么方便的“外部Gate”功能但可以用输入中断加高速定时器组合实现优点是接线少不需要外部时基源缺点是精度受限于定时器时基通常是1ms。FX3U的X0到X5支持输入中断在GX Works2里配置中断指针时可以分别选择某个输入点的上升沿中断和下降沿中断。此外FX3U有T246到T249这几个高速累计定时器时基为1ms累计值可以在中断里读取和复位。这两个功能组合起来正好构成一个脉宽测量链上升沿启动计时下降沿停止并读取。5.2 中断程序实现上升沿启动、下降沿读取假设被测信号接到X0我们要测的是X0高电平持续的时间结果存放在D0毫秒不合格信号输出到Y0。梯形图示意如下// 上升沿中断子程序在GX Works2中选择X0的上升沿中断指针例如I001 RST T246 // 复位高速定时器 OUT T246 K1000 // 启动1ms累计定时器预置1000ms防溢出 // 注意K1000只是上限如果脉宽超过1000ms会停止累加需按场景调整 // 下降沿中断子程序选择X0的下降沿中断指针例如I101 MOV T246 D0 // 把定时器当前值移动到D0单位ms RST T246 // 复位定时器这个方案里定时器从X0上升沿开始累加每隔1ms加1到X0下降沿时停止并读值。D0里的值就是高电平的毫秒数。逻辑非常干净不受扫描周期影响因为定时器的启动和停止都由硬件中断完成。然后是宽度对比判断在主程序OB1里就比较D0和上下限值输出合格信号。这部分和上一节的对比逻辑一样只是比较的数从“计数值”换成了“毫秒值”。5.3 当心T246的溢出和启动扫描周期T246是累计型定时器预置值决定它能累加到的上限。如果预置K1000最多计1000ms脉宽超过1秒时定时器会停在1000不再增加这时D0读到的就是“满量程”要区分是真实的1000ms脉宽还是超过了量程。建议把预置值设得比实际可能的最大脉宽大20%以上并在程序里对满量程值做特殊处理比如判为“超宽不合格”。另外T246的读取要放在下降沿中断里不要放在主程序里。因为主程序扫描有周期如果下降沿发生在两次扫描之间主程序读到定时器值的时间点大概率已经晚了几个毫秒精度就没了。数据在中断里第一时间锁存主程序只负责比较这是三菱脉宽测量程序的标准做法。5.4 和西门子方案的精度差异怎么选项目三菱FX3U中断定时器S7-1200 PWMHSC精度1ms0.01-0.1ms接线复杂度简单无需外部时基需要PWM输出短接到HSC输入适用场景毫秒级脉宽、气缸到位检测微秒级脉宽、精确时间测量程序复杂度低中实际项目中如果只是判断一个电磁阀得电时间有没有超过100ms三菱方案绰绰有余如果要做编码器信号或通讯波形的细微分析那就必须上S7-1200的HSC方案。选型不是越贵越好而是匹配需求精度。6. 模拟量方案完整案例产品宽度在线检测与剔除逻辑6.1 案例需求设定先设定一个具体场景一条纸箱生产线产品宽度标准值150mm允许偏差±2mm产线速度每分钟120个要求在线全检超差产品自动剔除触摸屏上实时显示测量值和统计数量。我用的方案是激光位移传感器量程0-300mm输出4-20mA接到S7-1200的模拟量输入模块产品通过传感器正下方时PLC连续采样多个值取最大值作为本次产品的实际宽度再做偏差判断不合格时触发剔除气缸。为什么取最大值而不是平均值因为纸箱在流水线上运行时传感器扫描位置可能不是纸箱正中边缘进入测量区域和离开测量区域时测到的宽度会偏小。只有传感器正好对准纸箱最宽处时读数才是真实的宽度。连续采样取最大值相当于让PLC自动“找到”最宽的那个瞬间这是市面上大多数宽度检测仪的通用做法。6.2 模拟量标定INT到REAL的转换与分段偏移量模拟量模块读进来的原始值是一个整数西门子一般是0到27648对应4-20mA。这个值必须先转成REAL再做归一化和缩放才能得到毫米值。典型代码// 读取原始值整数 #RawValue : AI_Width; // 模拟量通道地址例如IW64INT类型 // INT转REAL #RawReal : INT_TO_REAL(#RawValue); // 归一化4-20mA对应0.0到1.0 // 零点对应55304mA满量程对应2764820mA #NormValue : (#RawReal - 5530.0) / (27648.0 - 5530.0); #NormValue : MAX(MIN(#NormValue, 1.0), 0.0); // 限幅 // 缩放为实际宽度0-300mm #Width_Value : #NormValue * 300.0;这里有个很多新手会踩的坑直接用整数做缩放运算结果丢了小数不说还容易溢出。必须先把INT转成REAL再做运算。再说分段偏移量。如果传感器的线性度不够好或者安装位置有偏差整个量程只有一个缩放系数误差很可能超差。我常用的办法是分段标定把量程分成几段每段用独立的斜率和偏移量。// 分段标定示例0-100mm用K1/B1100-300mm用K2/B2 IF #Width_Value 100.0 THEN #Width_Calibrated : #Width_Value * 1.0 0.5; // 第一段系数和偏移 ELSE #Width_Calibrated : #Width_Value * 1.02 - 1.5; // 第二段系数和偏移 END_IF;“分段偏移量”不是天生的而是标定时根据实际误差推出的修正量。具体做法拿几个已知宽度的标准件分别测一遍算出每一点的偏差然后根据偏差趋势决定分几段、每段的系数和偏移。这个工作不能省标定精度直接决定检测精度。6.3 连续采样取最大值和剔除逻辑产品通过期间怎么判断“产品在传感器下方”一般用对射光电开关产品挡住光电时启动采样光电恢复停止采样。所以整体逻辑是// 当产品到位信号例如I0.2为真时连续读取模拟量并取最大值 IF Product_Present THEN #CurrentWidth : #Width_Calibrated; IF #CurrentWidth #MaxWidth THEN #MaxWidth : #CurrentWidth; END_IF; ELSE // 产品离开本次测量结束做判断 #FinalWidth : #MaxWidth; IF (#FinalWidth #StdWidth - #Tolerance) AND (#FinalWidth #StdWidth #Tolerance) THEN #Result_OK : TRUE; ELSE #Result_OK : FALSE; END_IF; // 剔除气缸延时动作这里加一个根据输送速度计算的延时 #Reject_Timer(IN : NOT #Result_OK, PT : #RejectDelay); Q_Reject : #Reject_Timer.Q; // 复位最大值准备下一个产品 #MaxWidth : 0.0; END_IF;剔除气缸的延时很有讲究。产品从传感器到剔除位的距离是固定的输送带速度也是基本恒定的所以剔除信号要在不合格产品刚好到达剔除位时触发。实际操作中要现场测量这个延时用秒表测一下产品从传感器到剔除位的时间然后输入到HMI变量里别在程序里写死。6.4 触摸屏上显示什么才最实用触摸屏别只显示“合格/不合格”操作工真正需要的是当前测量值、最近100个数据的分布趋势、合格率、剔除计数。尤其那个趋势图能直观反映产线状态——宽度缓慢漂移往往说明上游设备出了问题趁早发现能避免大量废品。我在这个案例里用了“历史数据表”功能把每次测量的宽度值和时间写入数据块触摸屏用趋势图控件读取效果比单纯数字好得多。这个功能不需要额外硬件就是PLC数据块加触摸屏趋势控件成本为零。7. 调试现场最常踩的坑抖动、干扰、标定与迟滞7.1 光电信号抖动导致的宽度误判有一次在现场调试时产品宽度检测偶尔会把一个合格品判成不合格而且没有规律。排查了很久最后用示波器看光电开关的信号发现产品边缘经过时光电信号不是干净的跳变而是有几个毫秒的抖动。这个抖动正好让“产品到位”信号在短时间内反复通断PLC的采样窗口被切断最大值采样只采到一半就结束了算出来的宽度自然偏小。解决办法分两步。第一步是在传感器端处理光电开关的灵敏度调低一点让信号更干净。第二步是在PLC端加滤波到位信号延时接通、延时断开也就是软件消抖。延时时间一般5到20ms既能滤掉抖动又不会明显影响测量节奏。7.2 PLC里常用的几种滤波消抖方法根据场景不同我常用的消抖方法有四种延时确认法输入信号变化后必须保持新状态超过设定时间才认为变化有效适合机械触点和光电信号。连续采样平均法模拟量连续读N次去掉最大最小后取平均适合模拟量小幅波动。软件中值滤波连续读奇数个值取中间值适合偶发尖峰干扰。重复判定法连续N次扫描都读到相同状态才更新输出本质是N次确认。这几种方法我都用过实际项目里延时确认法最常用因为简单直观、参数好调。复杂一点的场合比如变频器干扰严重的现场就得中值滤波或平均滤波配合延时确认一起用。7.3 一次历时两天的干扰排查过程说一个印象很深的案例。一套宽度检测系统模拟量信号在产线启动后出现周期性波动幅度大约相当于±1mm时好时坏。第一天我先怀疑传感器换了新的没用第二天排查接线重新走屏蔽线、改接地还是有一点点波动。最后实在没办法拿手持示波器卡在模拟量模块端子上发现波动频率和变频器载波频率对上了确定是变频器干扰。解决方式不是把干扰彻底消灭而是降低干扰对测量结果的影响一是模拟量模块的积分时间调大一点积分时间越长对高频干扰抑制越强但响应变慢二是程序里对模拟量做了“连续采样取平均”用5个采样值的平均值做判断三是把传感器信号线和变频器输出线彻底分开走拉开距离。三管齐下波动从±1mm降到了±0.1mm以内。这个案例的教训是干扰排查要按“传感器-接线-模块-程序”逐级排除不要一上来就怀疑程序也不要在没有数据的情况下瞎猜。记录每次现象、每次改动和时间点排查效率会高很多。7.4 迟滞区间给对比逻辑加一道安全垫宽度对比判断最容易出现的问题是测量值在上限附近晃动时结果一会儿合格一会儿不合格导致剔除气缸频繁动作气路损耗大、气缸寿命短。解决办法不是加大允许公差而是引入迟滞比较。比如合格上限是152mm不合格触发值为152mm但从不合格恢复到合格需要降到151.5mm以下。这样测量值在151.8到152.2之间晃动时不会频繁跳变系统稳定得多。代码实现也简单// 迟滞比较进入不合格状态用高阈值恢复正常用低阈值 IF #Result_OK THEN // 当前状态是合格允许偏差窗口正常 IF (#FinalWidth #Limit_High) OR (#FinalWidth #Limit_Low) THEN #Result_OK : FALSE; END_IF; ELSE // 当前状态是不合格需要回到“恢复阈值”内才转回合格 IF (#FinalWidth #Recover_High) AND (#FinalWidth #Recover_Low) THEN #Result_OK : TRUE; END_IF; END_IF;迟滞量一般取允许公差的10%到20%。别设太大太大了会把真正合格的产品卡在恢复区外面反而误判。宽度对比这个功能说到底就是一个“测准”加“比准”的过程。物理宽度检测的难点在标定和动态采样脉冲宽度测量的难点在时基和中断响应而两类场景共同的难点都是现场的干扰和抖动。把这些基础打牢无论面对西门子、三菱还是其他品牌PLC思路都是相通的。再分享一个最后的小技巧无论做哪种宽度对比都建议把测量原始值、处理后的数值、上下限设定值、测量时间戳一起记录到数据块里。调试时翻历史数据比现场拿万用表量半天高效得多。数据本身就是最可靠的排查工具。