脉冲流量计接PLC总丢脉冲?K系数、上拉电阻、高速计数这几个坑我全踩过
一、先把「脉冲流量」这四个字拆开,它至少指三件事
仪表圈说的脉冲流量,是流量计每流过一升水往外吐多少个方波;运维圈说的脉冲流量,是 QPS 从 200 突然冲到 8000 那种突发;液压圈说的脉冲流量,是柱塞泵出口那种忽大忽小的脉动流。这三个东西除了名字里都带「脉冲」,几乎没有半点关系。我做仪表现场这几年,被问到的九成是第一种,所以这篇只聊流量计的脉冲信号。你要是想找的是后两种,现在划走就行,别浪费时间。
之所以要先说这个,是因为我在某乎上答过一个问题,底下十几条评论在吵架,一半人聊的是流量计,一半人聊的是秒杀活动的流量洪峰,鸡同鸭讲了三百多层楼。
二、脉冲 vs 4-20mA vs Modbus,我为什么说脉冲在总量计量上没对手
| 对比项 | 脉冲输出 | 4-20mA | Modbus RTU |
|---|---|---|---|
| 承载的信息 | 只有累积量 | 只有瞬时量 | 两者都有 |
| 传输本质 | 数字事件计数 | 模拟电流 | 数字报文 |
| 典型分辨率 | 一个脉冲=2.22mL(YF-S201) | 12位ADC约0.024m³/h(0-100量程) | 看寄存器位数 |
| 零点漂移 | 无 | 线性累加进总量 | 无 |
| 刷新速度 | 实时 | 实时 | 100-500ms轮询 |
| 长距离抗干扰 | 差,得用24V电平 | 好,公认 | 好 |
| 断线检测 | 基本没有 | 低于3.6mA报警 | 有超时机制 |
| 单点成本 | 低 | 中 | 中高 |
这张表我前后给人发过不下二十次。重点看第四行。4-20mA 传的是瞬时值,PLC 拿到之后必须自己按时间做积分才能得到总量,而积分一旦落在模拟域,零点漂移就变成一个恒定偏差,一天一天往总量里加。
去年秋天我在一个乡镇污水处理厂改加药系统,碰到过真事:DN80 的电磁流量计没做空管调零,零点偏了大概 0.05mA,换算成流量是 0.3 m³/h 的虚假读数。单看不多,一个月跑下来两百多方水凭空进了报表,加药泵跟着多投了十几公斤药剂。后来那台表加装了脉冲输出做比对,瞬间就露馅——没水流的时候,脉冲口真的一个脉冲都没有,而 4-20mA 那边还在稳稳输出 4.08mA。
所以我的观点可能有点反直觉:脉冲输出不是低端方案,它是唯一把「积分」这件事放在数字域里完成的方案。模拟量的每一次采样都带着独立误差,脉冲的误差只有「丢脉冲」这一种,而且是可检测、可复现的。
三、决定你能不能接上的,是这四个参数
买表之前,只要有四个参数没问清楚,后面必然返工。
第一个是 K 系数,也叫仪表系数,单位通常是 pulses/L(脉冲/升)。YF-S201 这种几十块的霍尔水流传感器标称 450 pulses/L,换算成脉冲当量就是 1÷450≈2.22mL。涡轮流量计一般直接给脉冲当量,比如 1 脉冲=0.1L。有些电磁流量计让你自己设,E+H 和西门子的脉冲当量都能在菜单里改,可设范围一般对应最大 5-10kHz 的输出频率。
第二个是最大输出频率。这个最容易被忽略。YF-S201 的官方公式是 F(Hz)=7.5×Q(L/min),你跑到 30 L/min 就是 225Hz。如果流量计最大流量对应 3000Hz,而你的 PLC 输入点只能认 50Hz,那这表买回来就是个摆设。
第三个是输出类型。NPN 集电极开路、PNP 集电极开路、推挽、干簧管无源触点,这四种接法完全不一样。干簧管无源的可以直接接 DI 点,但机械触点抖动是真事,我见过一次动作出三个计数的。
第四个是电平。5V 输出和 24V 输出的抗干扰能力不是一个级别,5V 信号走 30 米以上基本就是在赌博。
四、接线:上拉电阻算错,波形直接烂掉
集电极开路输出必须外接上拉电阻,这个电阻怎么选,是有算法的,不能拍脑袋拿个 10k 就上。
上拉电阻决定两件事:一是驱动电流够不够让 PLC 输入光耦可靠导通,二是上升沿够不够陡。24V 系统配 4.7kΩ,电流是 24÷4700≈5.1mA,绝大多数 PLC 输入点导通阈值在 3-7mA,够用。但如果你图省事在 5V 系统上也挂 4.7kΩ,电流只有 1.06mA,很多光耦根本打不开,表现就是「有时候能计数,有时候不计数」,最难查。5V 系统老老实实用 1kΩ,5mA。
上升沿的问题更隐蔽。100 米双绞屏蔽线的分布电容大概 5-10nF,如果上拉电阻用 10kΩ,RC 时间常数就是 10k×10n=100μs。这个数字什么概念?1kHz 信号的整个周期才 1000μs,100μs 的上升时间会让方波变成圆角梯形,PLC 高速计数器的施密特触发器在边沿上晃一下,就可能多算或者少算。
屏蔽层的处理我也踩过坑。正确做法是控制柜侧单端接地,传感器侧悬空。两头都接地会形成地环路,变频器一启动,脉冲计数就发疯。
五、PLC 侧:普通输入点和高速计数差两个数量级
这是丢脉冲的头号原因,没有之一。
普通数字量输入点是靠 PLC 扫描周期去读的。S7-1200 默认输入滤波 6.4ms,扫描周期假设 10ms,那理论上最多能数到 50Hz,实际留余量得控制在 20Hz 以内,也就是 2.7 L/min 以下(按 YF-S201 算)。超过这个数,丢脉冲是必然的,不是偶发。
所以只要你的最大流量对应频率超过 50Hz,就必须上高速计数器。S7-1200 的 HSC 单相最高 100kHz,三菱 FX3U 单相 100kHz、AB 相 50kHz,这些参数在选型手册里都写着,别嫌麻烦,去看一眼。
还有个中间方案是用边沿中断计数,每个脉冲触发一次中断。这个方案能用,但脉冲频率上到 1kHz 以上,CPU 的时间全花在进出中断上了,主程序会被拖慢,得不偿失。我一般只在 200Hz 以下的场合才考虑。
六、算瞬时流量,公式不难,坑在零点
用高速计数器读累积脉冲,再开一个 100ms 的定时中断,每次中断做差,瞬时流量这么算:
Q(L/min) = ΔP × 600 ÷ K
其中 ΔP 是这 100ms 里新增的脉冲数,K 是 pulses/L。举个例子,K=450,100ms 内数到 22 个脉冲,那 Q = 22×600÷450 = 29.3 L/min,正好在 YF-S201 的量程上限附近。
真正的坑不在公式,在低流量时的分辨率。同样是 K=450,流量 0.5 L/min 时,100ms 内只有 0.375 个脉冲,四舍五入就变成了 0 或者 1,瞬时流量会一直在 0 和 1.33 之间跳。这时候要么把中断周期拉长到 1s,要么瞬时值做个滑动平均,别硬扛。
另一个坑是脉冲当量设太大。有些电磁流量计为了迁就后端的低速计数器,把脉冲当量设成 1 脉冲=10L,结果小流量时半天不出一个脉冲,计量精度直接崩掉。脉冲当量的选择原则是:在你预期的最大流量下,输出频率不要超过接收端上限的 70%。
七、现场标定:K 系数别只信铭牌
铭牌上的 K 系数是出厂水标定的,介质换成污水、药剂、牛奶,这个值就变了。涡轮流量计的叶轮受粘度影响很大,粘度上去,K 值能偏 3%-8%。
我现在习惯的做法是拿一个 20L 的标准桶,或者干脆用电子秤称重,现场跑三遍取平均。实测 K = 总脉冲数 ÷ 实际容积。上次在一台 LWGY-15 上,铭牌标 1 脉冲=0.02L,实测出来是 0.0207L,偏差 3.5%,一个月下来差了好几吨水。
标定还有个前提:低流量段的线性度。涡轮流量计在量程 20% 以下线性度会明显变差,误差能到 ±3%,而额定精度是 ±0.5%。如果你要用在夜间小流量计费的场合,老老实实选电磁流量计,量程比能做到 1:100 以上,贵是有道理的。
八、丢脉冲按概率排序,大概是这样
- 用了普通 DI 点没用 HSC,占我遇到的一半以上;
- 上拉电阻选错,尤其是 5V 系统还用 4.7kΩ 的;
- 输出类型判断错,把 NPN 集电极开路当推挽接;
- 干簧管机械抖动,需要软件去抖,小于 1ms 的脉冲直接忽略;
- 线长超过 50 米还没屏蔽,或者跟变频器输出线走同一个线槽;
- 脉冲当量设太小导致低频分辨率差(这个严格说不算丢脉冲,但表现很像)。
排查顺序建议从第二种往第一种倒着来,因为改电阻最快,改程序最慢。
九、最后说点个人的
脉冲输出这套东西,这些年一直被人当成低端方案,因为它便宜、接线土、看起来不像高科技。但我干得越久越觉得,它在总量计量上被低估了。
它不好用的地方很明确:不能传瞬时值,断线了没人告诉你,长距离得靠 24V 硬扛。可只要你的核心需求是「这个月到底用了多少方水」,脉冲就是最干净的那条路——信号在源头就已经是数字了,中间没有任何一次转换能偷偷给你加零点几毫安。
真要说的话,做仪表这行最贵的从来不是那几个参数,是那些一年才暴露一次的系统性偏差。