☰
34页MTBF计算书拆解:从失效率到可靠性预计
2026/10/29 13:12:16 网站建设 项目流程

简介:《MTBF计算书(MTBF计算示例)》是一份面向电子硬件设计、可靠性工程及质量验证人员的实用案例文档,围绕平均故障间隔时间(MTBF)的评估流程,给出可对照学习的计算范本。文档以金属膜电阻器为主要对象,结合常州智电电子有限公司的实例,完整展示基本失效率、环境系数、质量系数、应力系数等参数的取值依据,并运用 λp=λbπEπCVπQ 逐步计算工作失效率,涵盖R1、R10、R11等多组位号及型号数据。资源包共1个PDF文件,大小约187KB,正文约34页,以表格化清单和计算过程为主,便于按元件类别查阅与复核。目前已有1649人学习,适合需要理解MTBF建模、开展元器件失效率估算或编写可靠性计算书的技术人员参考,也可作为产品可靠性评审与设计验证的辅助材料。

1. MTBF 不是平均寿命:34 页计算书到底在算什么

很多人第一次看到 MTBF 这个词,会下意识把它读成“这台设备平均能用多久”。于是一份写着几十万小时的计算书摆在面前,第一反应是“这机器能用几十年?”。偏差就在这里:MTBF 描述的不是寿命终点,而是稳态工作期内两次故障之间的平均间隔,它的倒数就是失效率 λ——一个描述“每小时坏掉的概率”的量。这份 34 页的 MTBF 计算书做的事很朴素:把一块多路输出开关电源上几百个器件,按种类逐行查表取基本失效率,乘上一串环境、质量、应力修正系数,算出每行的工作失效率,再全部相加。它不预测哪天会坏,它回答的是这套设计的失效率预算是多少。

2. 串联模型:为什么整机失效率就是所有器件相加

2.1 恒定失效率假设:计算只在浴盆曲线底部成立

可靠性工程里有一条著名的浴盆曲线:左端是早期失效期,失效率随时间去递减,对应产线上的老化筛选;中间是一段长长的平坦区,失效率近似常数;右端是耗损失效期,随磨损、电解液干涸、镀层疲劳而快速上升。

所有基于手册的 MTBF 计算,都只在中间那段平坦区有效。这也是为什么计算书的表头必须写清楚工况:输入 80VDC、输出满载、环境温度 25℃。这些条件不是为了好看,它们是把器件「钉」在平坦区某一点上的坐标。一旦你把环境温度改成 70℃、把负载从 100% 拉到 120%,平坦区的位置就变了,整份计算书要重算。

恒定失效率这个假设一旦成立,数学上就非常好办:器件的寿命服从指数分布,生存函数是 R(t) = e^(-λt)。指数分布有「无记忆性」——已经正常跑了 1000 小时的器件,接下来 1 小时的失效概率和全新的一模一样。这个性质在物理上当然不严谨,但在电子元器件进入稳定期后的确是个足够好的近似,而且它让整机可靠性可以从零件可靠性直接推出来。

2.2 从 R(t)=e^(-λt) 到 λ_total=Σλ_i

推导只有两步,但每一步都藏着工程假设。

第一步,单个器件的生存概率是 R_i(t) = e^(-λ_i·t)。第二步,假设整机是「串联可靠性框图」——任何一个器件失效,整机就失效,没有冗余、没有旁路。那么整机存活等价于所有器件同时存活:

R_system(t) = Π R_i(t) = Π e^(-λ_i·t) = e^(-(Σλ_i)·t)

对照指数分布的标准形式,立刻得到 λ_system = Σλ_i,于是 MTBF = 1 / λ_system。

这个推导的杀伤力在于:它把「整机可靠性」这个很虚的概念,变成了一次加法。你不需要理解电源环路怎么补偿、PWM 怎么调制,只需要把每一行的 λp 加起来取倒数。计算书的最后一页通常就一行字——总失效率多少、MTBF 多少小时,背后的全部依据就是这一个加法。

但串联假设本身就是一条设计取舍。真实的电源里,输出侧的滤波电容坏掉可能只是纹波变大,未必立刻停机;某一路输出的整流管击穿,其他路也许还能工作。串联模型故意不承认这种「部分降级」,把所有器件都当成单点故障。这是保守估计,也是它能被评审接受的原因——宁可算低,不能算高。

2.3 数量比单个器件的品质更致命

因为 λ 是线性相加的,一个器件再可靠,乘上几百个也会变成可观的分量。这份文档里最能说明问题的是 PCB 那一行:金属化孔 480 个,单个孔的基本失效率只有 0.00017(单位 10⁻⁶/h),听起来可以忽略,可 480 × 0.00017 = 0.0816,加上基板本身的 0.0011,再乘上环境、质量、复杂度系数,整行贡献 0.16880。这个数字比很多有源器件都大。

反过来看那些「单件失效率高」的选手:铝电解电容某些行的行合计能到 0.5 量级,继电器、光耦也在 0.2 以上。它们数量少,但一颗顶几百个电阻。

这就是为什么可靠性预计不能只盯着「关键器件」看。真正决定 MTBF 的,是「单件失效率 × 数量」这个乘积在整张表里的分布。经验上,一张元器件表里排名前 10 的行,往往贡献了 70% 以上的总失效率。做设计改进时,先砍这 10 行,收益最大。

3. π 系数体系:基本失效率为什么要乘一串修正因子

3.1 λb 从哪来:查表法是一种工程折中

看表格你会发现一个规律:同一类器件,λb 的取值少得可怜。金属膜电阻反复出现 0.005、0.009、0.01 这几个数,安规电容是 0.0018、0.0031,整流管是 0.016、0.036、0.051。

这不是偷懒,而是手册法的核心设计:把海量的现场失效数据和实验室加速试验数据,按「器件大类 + 额定功率/耐压档位」聚合成一张离散的基准表,λb 就是这张表里某个档位的代表值。同档位内的差异(比如同样是 1/4W 金属膜电阻,阻值从 10Ω 到 1MΩ)交给后面的应力系数去修正,不放进 λb。

这套做法的好处是可复现:两个人拿到同一份 BOM、同一套表格,算出来的结果应该一模一样。代价是精度——它描述的是「这一类器件」的统计平均,而不是「这一颗」的真实寿命。所以计算书里每一行都要标注查的是哪张表(表 5.1.4.2-5、表 5.1.6.5-1 这类编号),编号就是可追溯性的锚点。

λb 的物理含义是「在标准参考条件下的失效率」。参考条件通常是:环境温度 25℃、电应力比 0.1~0.5、质量等级中等。所有偏离参考条件的地方,都要用 π 系数补回来。

3.2 πE 环境系数:同一颗电阻在不同场景下的寿命差

πE 是整串系数里影响最大的一个。它描述器件所处的宏观环境:地面固定机房、地面移动设备、舰船舱内、机载、航天……每一档对应一个数值,这份文档里 GF1 对应的值是 1.8(电阻类)或 2.5 或 2.4(其他类别表格)。

环境不只是温度。它囊括了振动、湿度、盐雾、温度循环、气压。同一颗金属膜电阻,装在恒温机柜里和装在带风机、有振动的户外机箱里,膜层的裂纹扩展速率能差好几倍,这就是 πE 要表达的东西。

这里有一条容易踩的坑:πE 在不同器件大类下取自不同的表格,数值不同。电阻表里 GF1 是 1.8,MOS 管的表里 GF1 可能是 2.0,电解电容的表里是 2.4。它们同名同义,但不能互相套用。计算书里每一行的 πE 后面都跟着一个表号,就是为了防这个。

3.3 πQ 与 πL:采购等级和成熟度怎么进公式

πQ 是质量系数,对应器件的筛选等级和认证等级。文档里出现 A2、B2、A4 这类代号,A 系列通常意味着更严的筛选和更低的失效率,B 系列次之。落到数值上,A2 可能是 0.3,A4 可能是 0.25,B2 是 1.0 或 1.6。差距是几倍。

这解释了为什么「同等规格,价格差三倍」在元器件采购里是常态:你买的不只是参数,还有筛选等级。做可靠性预算时必须提前确认 BOM 里实际用的是哪一级,否则计算书和实物对不上,评审一抽查就会暴露。

πL 是成熟度系数,看的是这颗器件投产多久、有没有批量使用历史。文档里 PWM 芯片那一行 πL = 1.0,意思是已经足够成熟。新产品、新料号在早期阶段 πL 会大于 1,随着使用时间拉长逐渐降到 1。这是个很「软」的参数,但它承认了一个事实:可靠性数据本身也在积累,没人能对新器件给出确定的失效率。

3.4 πS / πCV 与 πT:降额设计和结温怎么落到数字上

应力系数是设计工程师唯一能直接控制的参数。

πS(或电容的 πCV)由电应力比 S 查表得到,S = 实际工作应力 / 额定应力。文档里绝大多数电阻写「应力系数 S=0.1」,意思是实际耗散只有额定功率的十分之一。这是很典型的降额策略:功率电阻降额到 50%~60%,电阻降额到 10%~30%,电解电容的电压降额到 50%~80%。

注意电解电容那些行:S 从 0.3、0.4、0.5 一路到 0.8,对应的 πCV 从 1.9、1.3、2.2 变化。降额越狠,系数越小,这不是线性关系,而是查表得到的非线性曲线。S=0.8 那一档的系数明显偏高,说明电容长期工作在接近额定电压的状态,失效率会陡增。

πT 是温度应力系数,背后是 Arrhenius 模型:化学反应速率近似正比于 exp(-Ea/kT),Ea 是激活能,k 是玻尔兹曼常数,T 是绝对温度。所以温度每升 10℃,某些失效机理的速率翻倍——这就是「10℃ 法则」的来源。计算书里的温度不是环境温度,而是器件的实际工作温度:PWM 芯片填的是 Tj = 58℃,电感填的是 THS = 45℃,变压器 THS = 60℃,接插件 THS = 50℃。这些数字必须来自热测试或热仿真,不能拍脑袋填 25℃。

3.5 复合模型:为什么电容、MOS、光耦的公式长得不一样

翻完这 34 页,你会发现公式栏里至少有七八种不同的组合:

器件类别典型公式多出来的因子说明了什么
金属膜电阻λb·πE·πCV·πQ膜层退化,只受环境、功率应力、质量影响
整流管λb·πE·πQ·πA·πS2·πr增加应用系数、二次应力、额定电流系数
MOS 管λb·πE·πQ·πA·πK·πr用种类系数 πK 区分工艺,无 πS2
光耦λb·πE·πQ·πT·πC温度直接进公式,发光二极管退化主导
继电器λb·πE·πQ·πC1·πCYC机械动作次数 πCYC 是关键变量
变压器λb·πE·πQ·πK绕组和绝缘老化,无电应力项
PCB(N·λb1 + λb2)·πE·πQ·πC结构式,孔数 N 直接进公式

差异来自失效物理不同。电阻主要是膜层氧化和刻痕处的热点迁移,所以温度和功率应力是主因;MOS 管是栅氧击穿和热载流子注入,跟工艺种类、电流额定值强相关;继电器是机械磨损,动作次数直接决定寿命,所以 πCYC 必须单列;PCB 的失效点是金属化孔的孔壁镀层热疲劳,孔数越多风险越高,所以公式是「每个孔的失效率 × 孔数 + 基板失效率」。

最特殊的是 PWM 芯片那一行,文档专门写了一段推导:「计算较为复杂故计算如下(按照单片双极与 MOS 模拟电路)」:

λp = [C1·πV·πT + (C2 + C3)·πE] · πQ · πL

C1 是电路复杂度失效率(0.346),C2 是芯片复杂度(0.030),C3 是封装复杂度(0.045)。πV = 1.79,πT = 1.33,πE = 2.5,πQ = 0.25,πL = 1.0。代进去:

[0.346 × 1.79 × 1.33 + (0.030 + 0.045) × 2.5] × 0.25 × 1.0 = [0.8237 + 0.1875] × 0.25 = 0.2528056

文档写的结果就是 0.2528056,乘 2(两片芯片)得 0.5056111。这说明集成电路用的是「复杂度加权 + 封装加权」的复合模型,而不是简单的系数连乘——因为它内部有几千个晶体管,没法按分立器件那样一颗颗算。

提示:这张公式表就是整份计算书的「源码」。看懂每类器件为什么用这套公式,比记住某个具体数值有用得多。

4. 从 34 页表格到可复现代码:一行数据要装哪些字段

4.1 数据模型:一行 BOM 行需要携带哪些信息

把这张表抽象成数据结构,字段其实很固定。核心是六类:身份(位号、型号)、分类(决定查哪张表、用哪个公式)、数量、基本失效率、一组命名系数、以及备注里的温度与应力条件。

from dataclasses import dataclass, field @dataclass class Row: ref: str # 位号,如 "R1" 或 "CD5-CD8" part: str # 型号/规格,如 "RN1/2WS 1M" category: str # 器件类别,决定公式和查表 n: int # 数量 N lambda_b: float # 基本失效率,单位 1e-6/h pi: dict = field(default_factory=dict) # 各项修正系数 note: str = "" # 温度、应力比等工况备注

category是最关键的字段,因为它同时决定了两件事:查哪张 λb 表、用哪个公式。n放在这里而不是放在公式里,是因为它属于行级属性——同一型号的多个位号可以合并成一行,用 n 表示。

note看起来可有可无,实际是最容易被审计追问的地方。写「应力系数 S=0.3;环境温度 25℃;环境系数 GF1;质量系数 B2」这一串,等于给出了这行数据全部的外部输入,别人拿同样的条件能复现出同样的数字。缺了它,这行就失去了证据价值。

4.2 计算引擎:分类派发与公式表

有了数据结构,计算就是一张派发表。每类器件对应一个纯函数,输入行对象,输出单件失效率。

FORMULAS = { "resistor": lambda r: r.lambda_b * r.pi["E"] * r.pi["CV"] * r.pi["Q"], "diode": lambda r: r.lambda_b * r.pi["E"] * r.pi["Q"] * r.pi["A"] * r.pi["S2"] * r.pi["r"], "mosfet": lambda r: r.lambda_b * r.pi["E"] * r.pi["Q"] * r.pi["A"] * r.pi["K"] * r.pi["r"], "capacitor": lambda r: r.lambda_b * r.pi["E"] * r.pi["CV"] * r.pi["Q"], "opto": lambda r: r.lambda_b * r.pi["E"] * r.pi["Q"] * r.pi["T"] * r.pi["C"], "relay": lambda r: r.lambda_b * r.pi["E"] * r.pi["Q"] * r.pi["C1"] * r.pi["CYC"], "transformer": lambda r: r.lambda_b * r.pi["E"] * r.pi["Q"] * r.pi["K"], } def row_lambda(r: Row) -> float: """返回整行合计失效率:单件失效率 × 数量""" return FORMULAS[r.category](r) * r.n def mtbf(rows) -> float: lam_total = sum(row_lambda(r) for r in rows) # 单位 1e-6/h return 1e6 / lam_total # 小时

这里有个必须注意的点:FORMULAS里返回的是单件失效率,乘 n 的动作放在row_lambda里统一做。文档原表更粗糙一些——它的 λp 列直接给的就是整行合计值,比如 R1 那一行 0.02880,是 0.005 × 1.8 × 1 × 1.6 × 2 得来的。如果在汇总时再乘一次 N,结果就会翻倍。

验证一下:

r1 = Row("R1", "RN1/2WS 1M", "resistor", 2, 0.005, {"E": 1.8, "CV": 1.0, "Q": 1.6}) print(row_lambda(r1)) # 0.0288,与文档的 0.02880 一致 cap = Row("CD5-CD8", "3300uF 电解", "capacitor", 4, 0.0393, {"E": 2.4, "CV": 0.3, "Q": 2.2}) print(row_lambda(cap)) # 0.24900,与文档一致

两行都对上了。这种「抽样反算」是检查一份可靠性计算书有没有抄错行的最快办法,比逐页核对高效得多。

4.3 用 PWM 芯片那一行反推公式是否正确

集成电路那一行的公式是结构式的,不适合套进上面的派发表,单独写一个函数更清楚:

def pwm_lambda(c1, c2, c3, pi_v, pi_t, pi_e, pi_q, pi_l): """ 单片双极/MOS 模拟电路失效率模型,返回值单位 1e-6/h c1: 电路复杂度失效率 c2: 芯片复杂度 c3: 封装复杂度 """ core = c1 * pi_v * pi_t # 电压应力 + 结温,构成主项 pkg = (c2 + c3) * pi_e # 复杂度项受环境影响 return (core + pkg) * pi_q * pi_l single = pwm_lambda(0.346, 0.030, 0.045, 1.79, 1.33, 2.5, 0.25, 1.0) print(single) # 0.2528055555555556 print(single * 2) # 0.5056111111111111

输出与文档记载的 0.2528056、0.5056111 完全吻合,说明这个模型的参数拆分是对的。

这个式子值得多看两眼。注意c1 * pi_v * pi_t这一项占了主导(0.8237 对 0.1875),意味着集成电路的失效率主要由「电路有多复杂 × 电压应力 × 结温」决定,封装只占小头。所以选型时,把一颗大芯片换成两颗小芯片,未必能降低失效率——复杂度项的平方效应会把这个便宜吃回去。

另外注意 πT = 1.33 对应的结温是 58℃,而环境温度写的是 25℃。中间差的 33℃ 来自芯片自身的功耗和热阻。填表时如果直接拿 25℃ 去查 πT,会得到偏小的系数,算出来的 MTBF 偏乐观。这是文档里最容易出错、也最难被发现的一个数。

5. 常见问题排查:算出来的 MTBF 为什么对不上账

5.1 现象:换了个输入电压重算,MTBF 掉了三分之一

这份文档有个细节:同一块板,先用 80VDC 输入算一遍,再用 100VDC 输入算一遍,两套完整的表格。很多人第一反应是「重复劳动」。

原因在于,输入电压变了,器件的工作点就变了。R11/R12 那一行,80V 版本写的是 0.22Ω,100V 版本写的是 0.75Ω——阻值都改了,说明这是两块不同的配置或者不同的工作状态。更普遍的是电应力比 S 变化,S 一变,πCV、πS2 全部跟着变,乘出来的结果自然不同。

解决办法不是二选一,而是两套都保留,并在封面注明条件。交付时给最坏情况那个值作为承诺值,另一套作为设计余量的证据。评审时被问「到底报哪个」,答案是:报最差工况下的那个,但要能说清为什么另一个工况更好。

5.2 现象:同一型号的器件,两行的 λp 差了一倍

文档里 R24/R26/R28/R31 等 7 个位号合并成一行,型号写「1K2」,N = 7;R9、R14 等 9 个位号合并成另一行,型号写「1K」,N = 9。这两行的 λb 相同、π 系数相同,但行合计差了不是 9:7 的比例。

原因通常是数量填错。合并行时人工数位号,很容易漏掉带字母后缀的(比如 R31A),或者把重复位号数了两遍。

解决办法是别靠人工数。用 BOM 按「型号 + 厂商 + 规格」做一次 group by,数量由程序统计,人工只负责核对分组对不对。另外,合并行必须在备注里列出全部位号,像文档那样写「R9,14,19,27,29,57,58,59,62」,事后能一个个点回去。

5.3 现象:整机 MTBF 算出来比同行高一个数量级

先查单位。λb 的单位是 10⁻⁶/h,也就是每百万小时多少次失效。有些表格用 FIT(1 FIT = 10⁻⁹/h),差 1000 倍。混用一次,结果就离谱。

再查质量系数。全部填 B2 是最常见的「偷懒优化」——B 系列系数大,算出来的失效率高,看起来保守;可如果实物采购的是 A 系列,你就是把成本花在了没算进去的地方。反过来,全填 A2 讨好了数字,实际装的是 B 级料,这是自欺欺人。

最后查环境系数。GF1 是地面固定环境里最好的一档。如果设备实际要装在振动平台上,必须换成对应的档次,不能因为「我们装在机柜里」就默认 GF1。

5.4 现象:温度那一栏全都填 25℃

25℃ 是环境温度,不是器件温度。文档里的做法很规范:PWM 填 Tj = 58℃,电感和变压器填 THS = 45~60℃,接插件填 THS = 50℃,而且每一处都写了「环境系数 GF1、质量系数 B2」作对照。

填错温度的后果是不对称的:温度填低,πT 查出来的值偏小,失效率被低估,MTBF 虚高。而电解电容这类器件对温度极其敏感,寿命大致每升 10℃ 减半,这个偏差能轻易让总失效率差出两三成。

解决办法是把热测试数据作为计算书的前置输入。没有实测数据,至少要有热仿真结果;两样都没有,就按最恶劣的机箱内温升做保守假设,并在备注里写明「假设值,待热测试后更新」。

5.5 现象:明明有冗余设计,算出来还是串联结果

如果电源做了 1+1 冗余,两个模块并联供电,整机可靠性显然比串联模型算出来的高。但计算书的公式里没有冗余项。

原因很简单:这份文档算的是单模块的 MTBF,冗余是系统级的事,要在上一层用并联模型另算。并联的可靠性是 R = 1 - (1-R₁)(1-R₂),跟串联完全不是一回事。

解决办法是分清层级。元器件级用串联相加,模块级看有没有冗余,系统级再考虑共用部件(比如共用市电、共用散热)。把三层混在一起算,结果既不可信也无法评审。

6. 预计值与实测值:手册法的边界和那份文档的真正价值

手册法的天花板在哪,从这份文档里能看得很清楚。

它给出的数字,本质上是「同类器件在统计意义上的平均表现」叠加「本设计的应力条件修正」。它算不出一颗电容的电解液是哪家配的、一批焊点的空洞率是多少、某次来料变更有没有引入隐患。这些都超出模型边界。所以常有人说「算出来 50 万小时,现场一年坏了 3%」,两边都没错——前者是预计值,后者是现场表现,中间隔着批次差异、使用习惯、维修策略。

真正让这份 34 页文档有价值的,不是最后那个 MTBF 数字,而是它的可追溯结构。每一行都写了查的哪张表、填的什么系数、依据什么工况,等于把设计时的每一个假设都摊开在纸面上。半年后有人问「为什么当初认为这颗电容没问题」,你翻到那一行,看到 S=0.3、THS=45℃、πCV=1.9,就能回答。没有这份文档,那些假设就只存在于某个人的记忆里。

如果要做实测验证,思路是从预计值反推试验方案。假设总失效率算出 λ_total,要在 90% 置信度下验证 MTBF 下限,用定时截尾的卡方公式:

MTBF_lower = 2T / χ²(2r + 2, 1 - α)

T 是总试验时间,r 是失效数,α 是置信水平。反过来给定目标 MTBF 和允许的失效数,就能反解出需要多少台样品跑多少小时。这一步经常被跳过,结果试验做完了才发现样本量根本不足以支撑结论。

比较务实的做法是分层看待:元器件级用手册法做设计预算,模块级做 HALT(高加速寿命试验)找薄弱环节,系统级靠现场数据回归。三者互相校验,谁也别想单独说话。

从那以后我每次拿到一份可靠性预计表,都会先做一件事:随机抽三行,把系数乘法自己按一遍,再核对这些行的温度来源有没有实测支撑。这个习惯帮我抓到过好几次数量填错和温度照抄的问题——数字对不对是次要的,能不能复现才是关键。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询