去年冬天接了个电话,一个做饮料灌装的老哥说他们那条线产量对不上,灌装量老是少个几十毫升。第二天我过去看,一台 DN25 的涡轮流量计,出厂脉冲当量写着 0.1 L/P,信号线接在西门子 S7-1200 的普通 DI 点上,程序里拿计数器累加。他说一天下来累计少两三百升。我拿示波器夹了一下脉冲线,波形糊得跟心电图似的,脉宽大概 1ms 左右,而 PLC 那边输入滤波还挂在默认的 6.4ms 档。这就不是流量计不准,是脉冲压根没被完整地看见。从那以后我养成一个习惯,谁问我脉冲流量的事,我第一句都反问:你这个脉冲,从表屁股出来到 PLC 数到,一路上到底经过了几道关卡?
先说清楚,「脉冲流量」这三个字在不同圈子里不是一个意思
做流体的人说脉冲流量,指的是管道里流速周期性波动那种脉动流,跟心脏泵血似的,跟流量计本身没多大关系,那是流体力学的事。做自动化的人说脉冲流量,十有八九指的是流量计输出的脉冲信号,一个脉冲代表多少体积,这是仪表信号层面的事。还有一拨做网络的,说脉冲流量指的是突发流量、burst,一秒钟涌进来平时一小时的量,跟管道、跟流量计八竿子打不着。这三个东西唯一的共同点是「脉冲」两个字。我这篇只聊中间那个,也就是流量计脉冲输出这条链路,如果你问的是另外两个,那当我自说自话。
K 系数和脉冲当量,是同一个数的两种说法
涡轮、电磁、齿轮、涡街这些流量计,出厂标定完都会给一个 K 系数,单位一般写成 脉冲/升,或者 P/L。比如一台 LWGY 系列的涡轮表,标定证书上写 K=105.6 脉冲/升。而你去翻它说明书,参数栏里写的可能是「脉冲当量 0.01 L/P」。这俩是一回事,脉冲当量 = 1 ÷ K,105.6 的倒数是 0.00947,厂家圆整成 0.01 而已。我见过有人把这两个数当成两个独立参数去设,结果差了十倍,还在那儿纳闷为什么总量差了这么多。
记住两个公式就够了,第一个算瞬时:Q(L/min) = 频率(Hz) × 60 ÷ K。K=100 脉冲/升的时候,你量到 200Hz,那流量就是 200×60÷100 = 120 L/min。第二个算累计:体积(L) = 脉冲总数 ÷ K。这两个公式我建议写张纸条贴在柜门上,比记什么口诀都强。
脉冲当量不是越小越准,这句话我说三遍
很多人有个直觉,脉冲当量越小,一个脉冲代表的体积越少,那肯定越准。错得挺离谱的。如果脉冲一个都不丢,K=100 和 K=1000 算出来的累计量精度是一样的,因为累计就是在数脉冲,跟当量大小没关系。真正的差别在两头。
往小那头看,是死区的问题。假设脉冲当量 1 L/P(K=1),你现场流量 1 L/min,那就是一分钟才蹦一个脉冲,0.017Hz。PLC 想算瞬时流量,等一分钟才拿到一个数据点,HMI 上显示的瞬时值就是一片 0 或者乱跳,操作工看了想砸屏。要想在 1 L/min 这种小流量下还有像样的瞬时值,比如至少 10Hz,那 K 得做到 600 脉冲/升,脉冲当量约 0.0017 L/P。
往大那头看,是频率上限。电磁流量计 DN50,量程 0-30 m³/h,也就是满量程 8.33 L/s。脉冲当量设 0.01 L/P(K=100),满量程频率 833Hz,还行。你要是贪心设成 0.001 L/P(K=1000),满量程就是 8333Hz。国产电磁流量计很多脉冲输出上限标 5kHz,有的老型号只有 1kHz,超过就给你截断,或者干脆输出乱七八糟。这时候丢的脉冲不是几个,是成片成片地丢,累计误差反而比大当量的时候大得多。
| 脉冲当量 | K(脉冲/升) | 60 L/min 时频率 | 1 L/min 时频率 |
|---|---|---|---|
| 1 L/P | 1 | 1 Hz | 0.017 Hz |
| 0.1 L/P | 10 | 10 Hz | 0.17 Hz |
| 0.01 L/P | 100 | 100 Hz | 1.7 Hz |
| 0.001 L/P | 1000 | 1000 Hz | 17 Hz |
这张表你可以拿自己现场的流量范围去套。左边够不够小流量用,右边有没有顶到设备和 PLC 的上限,一目了然。
脉宽和输入滤波,是丢脉冲的头号嫌疑人
回到开头那台涡轮表。脉宽 1ms 是什么意思呢,就是脉冲高电平只维持 1 毫秒,然后回落。西门子 S7-1200 的板载 DI 点,输入滤波默认是 6.4ms 那一档,也就是比 6.4ms 短的信号它直接给你当抖动滤掉。你拿 1ms 的脉宽去喂 6.4ms 的滤波,能数到一半都算运气好。改法很简单,把输入滤波改成 0.2ms 或者 0.4ms,但注意改了以后抗干扰能力下降,线缆屏蔽要跟上。
三菱的 FX3U 是另一套逻辑,它的输入滤波时间由 D8020 这个寄存器控制,0 到 60ms 可调,出厂默认 10ms。你要是拿 X0 到 X5 这几个高速输入点用,那没事,它能吃到 100kHz;但你要是图接线方便随便找了个 X10 往后的普通点,10ms 的滤波配上 1ms 脉宽,那基本就是白干。所以别嫌麻烦,先查清楚自己用的到底是高速计数点还是普通 DI 点,这个区别比什么参数都重要。
还有一个容易被忽略的,是脉冲输出形式。集电极开路输出(NPN 或者 PNP)的信号,是要靠外部上拉电阻才能拉出高电平的,常见取值 4.7kΩ 到 10kΩ。我见过有人上拉电阻用了 100kΩ,那上升沿被 RC 拖得软塌塌的,PLC 那边看成了一堆毛刺。要是中间还加了光耦隔离,PC817 这种普通货色传输速率也就 10kHz 上下,你 833Hz 的信号过它没问题,8333Hz 就够呛了,得换 6N137 那一类的高速光耦。
我现在的做法:先做一遍「脉冲预算」
被我坑过几次以后,我总结了个笨办法,就是像做预算一样先卡两头。第一头,找出你现场需要能测到的最小流量,按 5 到 10Hz 反推 K 的下限,也就是 K ≥ 期望频率 × 60 ÷ 最小流量(L/min)。第二头,取你现场可能出现的最大流量,按 PLC 计数上限的三分之一、以及流量计脉冲输出上限的三分之一,反推 K 的上限。这两头卡完,中间那一段才是你能选的脉冲当量范围,往往窄得让人意外,但至少不会选完才发现用不了。
举个我自己经手的例子。一条小试线,流量范围 0.5 到 20 L/min,PLC 用的是 1214C,高速计数点单相能到 100kHz,但我不想把余量吃满,就按 10kHz 算上限,那 K ≤ 10000 × 60 ÷ 20 = 30000,这头其实很宽松。小流量那头,0.5 L/min 想要 10Hz,K ≥ 10 × 60 ÷ 0.5 = 1200。所以 K 落在 1200 到 30000 之间,实际我选了 K=2000,脉冲当量 0.0005 L/P,满量程 20 L/min 时频率 667Hz,小流量 0.5 L/min 时 16.7Hz,两头都舒服。
干扰这块,说几句我踩过的实话
脉冲信号本质就是个方波,跟变频器、伺服、接触器这些玩意儿待在一个柜子里,太容易被欺负。我遇到过最邪门的一次,是屏蔽层两端都接地了,结果形成地环路,脉冲数反而比实际多出百分之几。后来改成只在 PLC 侧单端接地,问题就没了。所以屏蔽线这条规矩——单端接地、信号线和动力线间距至少 20cm、尽量别和电机线捆一个线槽——听着老生常谈,但真出事的时候查来查去就出在这。
还有干簧管输出的脉冲水表,这个我得单独说一句。干簧管是机械触点,寿命有限,而且抖动明显,水管里有气泡的时候还会乱跳。信号进 PLC 之前加一级施密特触发器,比如 74HC14,能滤掉不少毛刺。但如果你现场脉冲频率本身就不高,我个人更倾向于直接换成霍尔或者光电输出的表,省心,贵那点钱比起停机排查的时间不值一提。