西门子S7-1200模拟量输入全解析:接线、量程转换与抗干扰实战 做自动化这些年模拟量这块算是绕不开的坎。不管你是搞压力、液位、温度还是流量最后都得把现场传感器那个 4-20mA 或 0-10V 的信号送进 PLC再变成画面上的数值。我手里接过很多用西门子 S7-1200 做控制的项目被问得最多的问题排第一的绝对是“模拟量怎么读不准”排第二的是“量程怎么转换”。这篇文章把我这些年实际调试 S7-1200 模拟量输入的经验完整梳理一遍从硬件接线、博途组态到程序里的量程转换、断线检测再到现场抗干扰的排查技巧一次讲清楚。适合刚接触 S7-1200 的电气工程师也适合那些用了一段时间但总在某些细节上翻车的维护人员。1. 摸清模拟量应用的基本盘1.1 S7-1200 模拟量从哪里来很多人第一次拿到 S7-1200发现 CPU 上不仅有数字量输入输出有的型号还带了模拟量输入但又不完全一样容易懵。这里先把这个底摸清楚。S7-1200 系列里1211C、1212C、1214C 这些带“C”的 CPU有一部分型号集成了两路模拟量输入地址从 IW64 开始。比如我常用的 1214C DC/DC/DC它在 CPU 本体上就带有 2 路 0-10V 的模拟量输入地址就是 IW64 和 IW66。这个设计在小型项目里非常方便比如只接一路压力变送器、一路温度变送器连扩展模块都省了。但 CPU 自带的模拟量输入也有局限首先是只有电压信号输入0-10V不支持 4-20mA 电流信号这就比较尴尬了。因为现场传感器输出 4-20mA 的比例太高了两线制变送器一大堆总不能每个都加一个电阻转电压。其次是通道数不够项目稍大一点四五路模拟量是常态CPU 自带的肯定不够用。所以大部分情况下还是要扩展模拟量模块。S7-1200 的模拟量输入模块主要是 SM1231 系列常见的有 4 通道和 8 通道版本根据精度不同又分为 13 位、14 位、16 位。比如 SM1231 AI 4×13bit就是 4 通道 13 位分辨率支持 0-10V、0-20mA、4-20mA 等信号SM1231 AI 8×16bit 则是 8 通道 16 位分辨率精度更高适合对测量精度有要求的场景。另外还有专门接热电阻的 SM1231 RTD 模块和接热电偶的 SM1231 TC 模块PT100、PT1000 这类温度传感器直接接进去不需要额外变送器。顺带提一句模拟量输出模块是 SM1232 系列如果项目里需要 PLC 输出 0-10V 或 4-20mA 去控制变频器、比例阀、电动阀这些执行机构就要用到它。很多新手以为模拟量输出也是 CPU 自带的其实 S7-1200 CPU 本体基本不带模拟量输出个别订货号除外基本都是靠扩展模块实现。这里给个选型上的建议如果项目只有两三路 4-20mA 输入优先考虑“SM1231 4AI 电流模式”一步到位不用折腾电压转换如果项目模拟量点数超过 8 路建议分成两个模块扩展而不是硬塞一个 8 通道模块这样单个模块故障时影响面小一些排查起来也更方便。1.2 信号类型和量程先搞清楚再动手模拟量信号那么多到底选哪种4-20mA、0-20mA、0-10V、±10V、热电阻、热电偶各自有各自的使用场景搞不清楚会出现很隐蔽的问题。先说最常用的 4-20mA 电流信号。它是两线制变送器的标准信号为什么工业现场这么偏爱它因为电流信号在传输过程中不受线路电阻的影响只要回路没有开路电流就不会因为线长而衰减。而且 4mA 作为零点还有一个重要作用——区分断线。如果零点从 0mA 开始那传感器断线时电流也是 0mA和正常零位没法区分改成 4mA 做零点后电流只要小于 4mA比如只有 2mA 或直接变 0mA基本可以判定信号回路出了问题。同时4mA 这个最小电流也刚好够驱动变送器内部的电子电路工作所以两线制变送器不需要额外供电信号线和电源线共用两根线又省了一根线的钱。再说 0-10V 电压信号。它常见于变频器、伺服驱动器这类设备的模拟量输出因为这些设备内部集成了电压输出电路直接给 0-10V 很省事。但电压信号有一个明显的先天不足——容易受干扰。线稍微长一点电压就会因为线路阻抗和电磁干扰产生波动所以电压信号适合短距离、控制柜内部或同一电控柜内设备之间的信号传输不适合拉到几十米外的现场。还有 0-20mA 信号它和 4-20mA 相比少了那个“4mA 零位”早期一些仪表还在用现在新项目里已经很少见了。如果模块组态时选错了范围比如组态成 4-20mA但传感器输出的是 0-20mA就会出现读数在零位附近不对的怪现象这一点在调试时要特别留意。热电阻和热电偶这种温度信号又是另一套玩法。PT100 热电阻的阻值随温度变化必须通过模块内部恒流源激励和 ADC 采样转换成温度值因此要搭配 RTD 模块使用接线方式分两线制、三线制、四线制。三线制最常用它通过两根线补偿导线电阻带来的误差。热电偶则是利用两种不同金属接触面产生的热电势测温度需要接 TC 模块并且要考虑冷端补偿。这两种信号本质上已经不是“模拟量电压/电流”的概念了但博途里仍然把它们放在模拟量模块的范畴里组态方式也类似所以放在一起讲方便有个整体概念。2. 硬件选型、接线与组态躲开那些看不见的坑2.1 选模块的几条硬标准选模拟量模块的时候别光看通道数以下几个点必须过一遍不然现场会吃苦头。第一是通道数要留余量。很多项目设计阶段是在办公室拍的脑袋8 路输入就选了个 8 通道模块结果到了现场发现还要多接一路流量计模块插槽全占满只能再加一个扩展模块。要我说模拟量点数超过 6 路直接选两个 4 通道模块比选一个 8 通道模块灵活得多单点故障影响面也小。第二是分辨率的实际意义。13 位和 16 位看起来差不少但实际反映到工程量上差距有多大算一笔账如果测量范围是 0-100℃13 位分辨率对应约 100/8192 ≈ 0.012℃ 的步进16 位对应约 100/32768 ≈ 0.003℃。对于压力、液位这类过程量13 位已经完全够用但对于需要高精度控制的场合比如实验室数据采集16 位才有意义。所以不用盲目追求高精度够用就行省下来的预算可以买好一点的屏蔽电缆效果反而更明显。第三是模块是否带通道诊断功能。SM1231 系列部分模块支持断线诊断、超限诊断这在现场维护时非常有用。如果预算允许建议选择带诊断功能的模块。比如 4-20mA 模式下模块能检测出回路断线然后通过 IO 地址输出一个特殊值PLC 程序里直接判断这个值就能锁定故障点不需要拿万用表一根一根去量。第四就是地址问题了。S7-1200 的 I/O 地址是自动分配的CPU 自带的模拟量输入是 IW64、IW66扩展模块第一个插槽的模拟量地址从 IW96 开始第二个插槽在第一个模块地址基础上递增。注意这个地址不是随便编的是博途根据模块插入顺序自动分配的。所以上电下载程序之前一定要打开博途的设备视图确认每一个通道的实际地址我就是因为地址没核对吃过亏程序里用了 IW96实际组态出来却是 IW112结果读上来的数一直是 0查了半天才发现。2.2 现场接线的经验之谈模拟量接线是现场问题最多的环节很多“信号不稳定”“读数乱跳”的根源都在接线这里接线规范了后面能省掉一大半调试时间。先说两线制变送器的接法。两线制变送器只有两根线正极接 24V 电源正负极接模拟量模块的通道正端模块的通道负端通常标 M 或 COM接 24V 电源的 0V。这样信号电流从变送器出来流过模块内部的取样电阻再回到电源负极形成完整回路。四线制变送器就不同了它需要单独的电源供电信号线是另外两根正端接模块通道正负端接模块公共负端“M”。这里特别容易犯的错是把四线制变送器的信号负端直接接到电源 0V造成共模电压过高轻则读数不准重则烧毁模块模拟量输入通道。再强调一遍屏蔽电缆的问题。模拟量信号线必须用屏蔽双绞线屏蔽层在 PLC 端单端接地不要在传感器端也接地否则会形成接地环路产生循环电流信号反而会被干扰。变频器多、电机多的现场模拟量信号线一定要避开动力电缆不要同桥架敷设更不要和动力线绑在一起走线管。我见过一个项目变频器输出线和 4-20mA 信号线走了同一个电缆沟结果变频器一启动液位读数就在 30% 到 80% 之间来回跳后来把信号线单独走管、屏蔽层重新接地问题立刻消失。电压信号接线相对简单0-10V 信号正接通道正负接公共端但同样要注意共地。如果 PLC 的 M 和变频器的模拟量输出负端不共地电压就会被“抬高”或“压低”导致读数严重偏移。遇到这种情况要么强制拉一条等电位线把两个地连起来要么加一个信号隔离器。2.3 博途里的测量类型与量程配置硬件接好了接下来要在博途里把模块配置对这一步错了后面程序写得再好也是白搭。在博途设备视图中双击模拟量模块打开属性窗口能看到“测量类型”和“测量范围”两个关键参数。测量类型选择电压Voltage还是电流Current测量范围则要对应实际信号比如 0-10V、0-20mA、4-20mA。这一步看似简单实际出错率很高尤其是模块出厂默认是 0-10V如果你接的是 4-20mA 信号却忘了改测量范围读出来的原始值会非常小而且零位严重偏移。还有一个容易被忽略的设置是“积分时间”或“滤波频率”。S7-1200 的模拟量模块支持设置干扰频率抑制比如 50Hz 或 60Hz。国内工频是 50Hz就选 50Hz模块内部的 ADC 会用积分采样把工频干扰滤掉一部分。这个设置在 CPU 属性里的模拟量输入通道上名叫“Input filter”可以取默认值也可以根据现场干扰情况调整。注意滤波越强信号响应越慢后续做 PID 控制的时候如果发现调节迟钝先回来看滤波设置。每组态一个通道博途都会自动分配一个 I/O 地址比如 IW96、IW98。把地址记下来后面程序要用。模块配置完成后一定要“编译”并“下载”到 PLC配置才会生效。很多初学者改完组态忘记下载程序里怎么读都是原来的旧值还以为模块坏了。3. 程序实现的核心量程转换原理与指令实战3.1 那个绕不开的 27648 到底怎么来的程序编写的第一步先要搞懂 S7-1200 模拟量输入模块给出的原始值到底是一个什么数字。很多人不看手册直接用 0-32767 去换算结果发现量程总差那么一点点其实就是没搞懂这个 27648。S7-1200 模拟量模块的输出是一个 16 位有符号整数理论上取值范围是 -32768 到 32767但西门子标准并没有把这个范围全部拿来当测量范围而是定义 0 到 27648 对应 0% 到 100% 的量程双极性信号则是 -27648 到 27648 对应 -100% 到 100%。这个 27648 是怎么来的它是十六进制 0x6C00。西门子在设计模拟量模块时特意留出了一部分余量让信号即使超过 100%比如 110% 或 -5%也有对应的数字可以表示方便做超限诊断。举个例子某压力变送器量程 0-10bar输出 4-20mA接到 S7-1200 模拟量模块。在 4mA 时模块输出一个接近 5530 的原始值在 20mA 时原始值为 27648。如果此时你用 0-32767 去换算4mA 时算出来是 0.84bar20mA 时算出来是 8.44bar和真实值差了不止一点。千万不要用 32767 或者 32768 去换算这是新手最容易踩的坑。那为什么 4mA 对应的是 5530 而不是 0因为模块内部按 0-20mA 对应的 0-27648 来采样4mA 就是 27648×4/20 ≈ 5529.6取整后约 5530。在组态选择 4-20mA 模式后模块会有相应的偏移处理但如果你的程序还是按 0-27648 映射就要手动把 5530 这个偏移消掉。这个细节就是“读数不准”最常见的根源之一。3.2 NORM_X 与 SCALE_X 的用法和公式理解了 27648 之后量程转换其实就一句话把模块读到的原始值按照线性比例映射到实际的工程量范围。S7-1200 里最标准的做法就是用 NORM_X 和 SCALE_X 这两个指令配合使用。NORM_X 是做“标准化”把输入 VALU 从 MIN 到 MAX 的范围映射到 0.0 到 1.0 的实数。SCALE_X 是做“缩放”把 0.0 到 1.0 的实数映射到 MIN 到 MAX 的工程量范围。两者几乎是天生一对配合起来逻辑非常清晰。举个例子有一个 0-100℃ 的温度变送器输出 0-20mA接到了模块通道地址是 IW96。程序是这样写的NORM_X (INT_TO_REAL) VALUE : IW96 MIN : 0 MAX : 27648 OUT : #norm_temp此时 #norm_temp 是 0.0 到 1.0 之间的实数然后再用 SCALE_XSCALE_X (REAL) VALUE : #norm_temp MIN : 0.0 MAX : 100.0 OUT : #temp_real最后 #temp_real 就是实际的温度值单位 ℃数据类型是 Real。如果是 4-20mA 信号不能直接把 MIN 设成 0因为 4mA 对应的是 5530而不是 0。正确的做法是把 NORM_X 的 MIN 设为 5530MAX 设为 27648。这样 4mA 时标准化结果是 0.020mA 时是 1.0后续 SCALE_X 出来的工程量和传感器量程完全一致。当然你也可以不用指令直接在程序里写一个实数运算公式工程值 (原始值 - 5530) / (27648 - 5530) × (量程上限 - 量程下限) 量程下限这种方法本质上跟 NORM_X SCALE_X 是一样的但用指令的代码可读性更好而且 MIN/MAX 参数可以做成 HMI 可调变量以后换传感器量程不用改程序只改画面参数就行。我喜欢把 MIN 和 MAX 做成 PLC 变量特别是设备经常换量程的项目省了不少麻烦。3.3 4-20mA 断线检测的两种做法4-20mA 信号有一个天然优势就是可以判断断线程序里一定要用起来不要浪费这个诊断机会。第一种做法是利用模块自带的断线诊断能力。在博途模块属性中将测量范围选择为 4-20mA 后部分 SM1231 模块支持启用“断线检测Wire Break”。启用后如果模块检测到回路电流小于约 1.2mA也就是基本没电流了模块会输出一个特殊值通常是十六进制 0x7FFF也就是十进制 32767。程序里只要判断这个原始值大于 30000就认为断线了可以置一个故障位在 HMI 上弹报警。第二种做法是逻辑判断法。正常 4-20mA 信号4mA 对应原始值约 5530考虑传感器可能有点误差以及模块采样精度问题可以设定一个阈值比如原始值小于 5000 就判定为信号异常或断线。这里的 5000 对应的电流大约是 3.6mA已经低于 4mA 的零点了再低下去基本可以肯定是回路出了问题。这种做法不依赖模块的扩展诊断功能所有 S7-1200 都支持通用性更强。我个人的习惯是两种方法同时用先判断原始值是否大于 30000模块断线诊断触发再判断是否小于 5000信号低于正常范围只要有其中一个条件满足就报警。有一点要特别注意0-20mA 和 0-10V 信号无法通过电流/电压大小来区分断线和正常零位这是它们的固有缺点。如果现场必须用这类信号又想检测断线那只能靠信号源一侧加装断线检测继电器或者用带 HART 协议的仪表通过数字通信判断成本会高不少。4. 两个典型实例压力变送器与变频器反馈4.1 压力变送器测水压的完整实现场景是这样的一台液压设备需要实时监控系统压力量程 0-1.6MPa传感器输出 4-20mA两线制接入 S7-1200 的 SM1231 模块。首先是接线。变送器正极接 24V 电源正变送器负极接模块通道 0 的正端比如 X模块通道 0 的负端M接 24V 电源 0V。这样信号回路就形成了24V 正 → 变送器 → 模块通道 → 电源 0V。然后是博途组态。在设备视图双击 SM1231 模块把通道 0 的测量类型改为“电流”测量范围改为“4-20mA”确认通道地址假设是 IW96。编译后下载到 PLC。接着是程序。我在 OB1 里新建几个中间变量命名为 raw_pressureInt、norm_pressureReal、pressure_valueReal、pressure_faultBool。核心代码段如下// 第一步读取原始值 #raw_pressure : IW96; // 第二步断线/信号异常判断 IF #raw_pressure 30000 OR #raw_pressure 5000 THEN #pressure_fault : TRUE; ELSE #pressure_fault : FALSE; END_IF; // 第三步量程转换 NORM_X (VALUE : INT_TO_REAL(#raw_pressure), MIN : 5530.0, MAX : 27648.0, OUT : #norm_pressure); SCALE_X (VALUE : #norm_pressure, MIN : 0.0, MAX : 1.6, OUT : #pressure_value);这段程序的作用是先从 IW96 读回原始整数然后判断信号是否正常最后用 NORM_X SCALE_X 把 4-20mA 映射为 0 到 1.6MPa 的实数。在 HMI 上显示 #pressure_value 时注意选择数据类型为 Real并且设置小数位数比如 2 位小数显示出来就是 1.25MPa 这种直观数值。我还习惯在这个基础上加一个量程上限报警当 #pressure_value 1.5 时输出一个预报警当 1.6 时输出一个超限报警。这样操作人员在压力还没到极限的时候就能提前发现趋势比单纯等机械安全阀动作要主动得多。4.2 变频器频率/电流反馈的读取与滤波变频器和 S7-1200 的组合非常常见。除了通过通信读取运行数据外很多时候也用模拟量方式读取变频器的输出频率或输出电流反馈。这种方式接线简单、兼容性好不依赖通信协议调试起来反而更快。先说明下场景一台 ABB 变频器驱动一台风机变频器有一个模拟量输出端子出厂默认输出 0-10V对应 0-50Hz。需要把这个频率反馈送到 S7-1200 里显示和参与逻辑判断。接线时变频器的 AO 端子比如 AO1接 PLC 模拟量输入模块通道 1电压模式变频器的 AO 负端GND必须与 PLC 模块的公共负端 M 相连保证共地。然后变频器参数里把 AO 对应的输出量设为“输出频率”输出范围设为 0-10V 对应 0-50Hz。博途组态里把 SM1231 通道 1 的测量类型设为“电压”量程范围设为“0-10V”通道地址例如是 IW98。程序里的转换跟前面类似但这里有一个关键点电压输入模式下原始值 0 对应 0V27648 对应 10V不需要考虑 5530 那个偏移所以 NORM_X 可以简化为 MIN0、MAX27648。然后 SCALE_X 的 MIN0.0、MAX50.0就得到 0-50Hz 的频率值。变频器反馈遇到最多的问题是信号干扰。变频器本身就是个大干扰源它的输出侧是 PWM 波谐波非常丰富如果模拟量线缆屏蔽没做好反馈数值会跳得很厉害。我在现场处理过一个案例同样的接线读数从 25Hz 到 35Hz 无规律乱跳用万用表量变频器 AO 端子电压又很稳定这就是感应干扰。解决办法是把屏蔽层在 PLC 侧接地同时把模拟量线缆和变频器动力线分开至少半米距离如果还不行就上信号隔离器在变频器 AO 端和 PLC 模块之间串一个 0-10V 隔离器问题基本能解决。另外如果变频器反馈用于 PID 闭环控制滤波设置就要小心。比如风机频率反馈跟随设定值变化如果硬件滤波太强反馈滞后PID 容易振荡滤波太弱反馈噪声大PID 输出也会抖。建议先把硬件滤波设成默认值或 50Hz 抑制然后程序里加一个滑动平均滤波采样窗口取 5-10 个周期就足够不要取太多否则响应速度跟不上。5. 常见问题排查与调试心得5.1 信号跳变、不准、漂移的排查顺序现场模拟量出问题不要一上来就怀疑模块和程序按照我下面的顺序排查能省下大量时间。第一步看现象、查仪表。先确认传感器/变送器本身有没有故障用万用表串到信号回路里测量实际电流对于 4-20mA或者并接到信号端测量电压对于 0-10V。这一步能判断是信号源的问题还是后级处理的问题。有一次现场压力值偏大我拿万用表一量电流确实偏大再查发现变送器取压口被堵了一半属于工艺问题跟 PLC 没关系。第二步看模块通道状态。打开博途的在线监控查看模拟量模块的通道原始值。如果万用表测出来信号正常但原始值异常那问题出在模块接线、模块组态或者模块本身。先把万用表和模块串在一起对比确认原始值和实际毫安数吻合如果不吻合就要检查接线是否牢固、端子是否氧化、模块供电是否正常。第三步看程序转换逻辑。信号和原始值都对但工程量和实际不符那就是量程转换部分的公式写错了。最典型的就是前面说的 5530 偏移没处理或者把 0-20mA 信号按 4-20mA 来转换。另外还要检查 NORM_X 和 SCALE_X 的 MIN/MAX 参数类型对不对有的新手把 MIN 设成整数 0MAX 设成实数 27648.0指令数据类型不匹配编译时可能直接报错。第四步看干扰与共地。如果原始值在正常范围内但波动很大或者明显叠加了一个周期性波动多半是干扰问题。排查方式包括屏蔽层是否单端接地、信号线是否与动力线共槽、PLC 与传感器是否共地、模块附近的接触器/变频器动作时读数是否异常。我见过最快定位干扰的方法把变频器停机看读数是否立刻稳定。如果停机就稳定启动就跳变那干扰源基本锁定在变频器。再用排除法一点点确认是传导干扰还是辐射干扰传导就处理接地和布线辐射就拉开距离。5.2 模拟量滤波的设置原则模拟量滤波这块很多人要么完全不管要么闭着眼睛配一个很大的一阶惯性时间结果做控制的时候被自己坑了。S7-1200 的模拟量模块本身提供硬件滤波选项方面就是前面说的“Input filter”它实际上是通过积分时间去抑制干扰频率。但这个滤波是一把双刃剑滤波强了信号平滑但响应慢滤波弱了响应快但噪声大。对于温度、液位这类变化缓慢的过程量滤波可以适当加强因为这些量本身就不需要快速响应平滑后的数据更容易控制对于压力、流量这类变化较快的量尤其涉及 PID 控制时滤波就不能太大否则反馈信号跟不上实际变化控制器会出现明显的滞后振荡。程序层面的软件滤波比硬件滤波更灵活。最简单的是取平均值比如新建一个长度为 10 的数组每次扫描把最新原始值放进去移出最旧的一个然后求平均。这种做法对随机噪声抑制效果好而且参数调整方便。一阶惯性滤波也很常用公式是 y(n) α × x(n) (1-α) × y(n-1)α 越大滤波越弱、响应越快α 越小滤波越强、响应越慢。实际调试时我一般从 α0.2 开始调根据曲线调整。如果是 PID 控制回路我的原则是先用小滤波甚至不滤波跑开环确认执行机构动作正常再逐步加大滤波观察曲线。千万不要一上来就把滤波拉满否则曲线看着挺平但系统其实已经严重滞后你还没发现。还有一个技巧HMI 上显示用的模拟量可以加滤波但参与 PID 控制的原始值尽量用轻微滤波或不滤波显示和控制在程序里分别处理。5.3 调试时值得长期保留的小习惯这些习惯是我这些年调试 S7-1200 项目积累下来的不一定写在哪本手册里但对日常维护特别有帮助。第一个习惯是在程序里始终保留一个“原始值”监控变量。不管最终用不用它每路模拟量在 PLC 变量表里都建一个对应的 raw 值变量接到 IW 地址上。现场故障时打开监控表先看原始值就能快速判断到底是信号问题还是转换问题不需要临时改程序。这个变量不光调试时有用设备交付后维护人员也能靠它快速定位故障。第二个习惯是把每个模拟量通道对应的“传感器量程、信号类型、接线方式、组态设置”做成一页纸的台账贴在控制柜门内侧。别小看这个动作设备运行半年后换了一个维护人员没有这张表光靠图纸查半天都搞不清楚通道对应关系。数字化一点的也可以把信息写在博途的模块注释里但纸质台账在断电检修时更好用。第三个习惯是在 HMI 上做一个调试页面列出所有模拟量通道的原始值、工程量、断线状态。调试阶段在触摸屏或者 WinCC 上直接看这些数据比接电脑打开博途在线监控方便得多。交付时不用删除这个页面对操作人员和维护人员都是一个有用的诊断工具。第四个习惯是多留备用通道。选型时已经建议过留余量这里再强调一点调试好的程序里备用通道同样要做量程转换但不接传感器。一旦现场有通道损坏或新增测点直接把传感器换到备用通道程序里把地址改一下即可不用额外写程序、不用停机太久。还有一个关于量程参数的小技巧把量程上限、下限做成 PLC 变量在 HMI 上可以修改。这样换传感器量程时不用改程序重新下载直接在触摸屏上把上限从 1.6 改成 2.5当天就能恢复生产。这个做法在一些经常调整工艺参数的设备上特别实用。最后再分享一个小习惯凡是现场模拟量出问题我永远先做两件事——拿万用表量信号源、打开监控表看原始值。这两步能排除掉八成的问题。剩下一成是接线最后一成才是程序。这句话听起来简单但真到了现场很多人第一反应是改程序结果越改越乱。希望这篇经验能帮你少走点弯路。