検証レポート

このシミュレータが正しく計算しているか、を確かめた記録

このページは手で書いた主張ではなく、実際に走らせた結果だよ。tools/make_report.jsindex.html の実装をそのまま読み込んで検査を回し、出てきた数字でこのページを書き出している。 実装を変えて再生成すれば、数字も判定もその場で変わる。

72 / 72
項目が一致(不一致なし)  / 別途 node verify.test.js の単体検算は 62 件すべて通過
何を確かめていて、何を確かめていないか。ここでやっているのは大きく4つ—— ①答えの分かっている数値例と突き合わせる(外部基準)②状態空間から取り出した極零を閉じた形の式と比べる(解析解) ③同じ物理を別々に書いた二つの実装(周波数側と時間側)を突き合わせる(相互検証)④電源として当たり前のことが 起きているかを見る(物理の整合)。いずれも「計算どうしの整合」であって、実機と合うことの証明ではない という点は最後に改めて書く。

A. 外部の答えとの突き合わせ

教科書的な数値例(12V→5V/2A, fsw 400kHz, L 10µH, Ceff 44µF, ESR 10mΩ, ランプ 1.5Vpp, Type-III: 零点 3k/6k・極 150k/250k)は答えが分かっている。道具が独立にその答えへ辿り着くかを見る。この道具は ESR と rL を状態空間に含むので、損失ゼロの理想式とは少しずれる。ずれの向きまで説明できることを確認する。

確かめたこと期待実測許容
デューティ比 D0.41670.4167<0.01%0.1%一致
LC共振 f_LC [Hz]7587.07587.4<0.01%0.3%一致
ESR零点 f_z,ESR [Hz]3.617e+53.617e+5<0.01%0.3%一致
検出ゲイン Kv0.16000.1600<0.01%<0.01%一致
変調ゲイン Fm [1/V]0.66670.6667<0.01%<0.01%一致
クロスオーバ fc [Hz]
理想式 25.0kHz。ESR減衰を含むぶん僅かに低い
25000249080.37%0.5%一致
位相余裕 PM [°]
理想式 62.1°。ESR が二次系に減衰を足すぶん高め side に出る=向きも正しい
62.1062.460.36±0.6一致
原点極 fp0 [Hz]872.0872.30.04%0.2%一致
C1 [F]1.781e-81.781e-80.02%0.3%一致
C2 [F]5.199e-95.199e-9<0.01%0.3%一致
C3 [F]4.379e-104.379e-10<0.01%0.3%一致
R2 [Ω]1489.11489.60.03%0.2%一致
R3 [Ω]204.08204.08<0.01%0.2%一致
R4 [Ω]1904.81904.8<0.01%0.2%一致
E系列への丸め (R=E96, C=E24)R2 1.50k / R3 205 / R4 1.91k / C1 18n / C2 5.1n / C3 430p一致
丸め後 fz1 [Hz]30583058<0.01%0.5%一致
丸め後 fz2 [Hz]58955895<0.01%0.5%一致
丸め後 fp1 [Hz]1.522e+51.522e+5<0.01%0.5%一致
丸め後 fp2 [Hz]2.527e+52.526e+5<0.01%0.5%一致
丸め後の整定出力 [V]4.98804.9885<0.01%0.2%一致

B. 解析解との突き合わせ

状態空間の行列から数値的に取り出した極・零点を、閉じた形の式と比べる。行列を書き間違えていれば、ここがずれる。

確かめたこと期待実測許容
ω0 = √det(A) vs 1/√(LC) [rad/s]47673.147673.1<0.01%<0.01%一致
Q = ω0/(−tr A) vs R√(C/L)5.23205.2320<0.01%<0.01%一致
Gvd(0) vs Vi [V/duty]12.000012.0000<0.01%0.01%一致
ESR零点(状態空間の分子の根)vs 1/(rC·C) [rad/s]
左半平面なので符号を反転して比較
2.273e+62.273e+6<0.01%0.2%一致
Boost RHP零点(状態空間の分子の根)vs (D'²R − rL)/L [rad/s]
よく見る D'²R/L は rL を無視した形。rL を引いた厳密形と突き合わせると一致する
2666.72666.7<0.01%0.2%一致
もう一方の根 vs ESR零点 −1/(rC·C) [rad/s]-70922.0-70922.0<0.01%5%一致
零点が右半平面と左半平面に1つずつあるs = +2666.7 と -70922.0 rad/s一致

C. 時間領域と周波数領域の突き合わせ(独立実装どうし)

この道具は同じ物理を二回、別々に書いている。周波数側は状態空間の行列 (buckSS/boostSS) を (jωI−A)⁻¹B で評価し、時間側は微分方程式 (deriv) を RK4 で積分する。そこで時間領域の電力段にデューティ比の正弦波を注入し、出力の振幅と位相を最小二乗で取り出して、解析解 Gvd(jω) と比べる。どちらかに書き間違いがあれば一致しない。

確かめたこと期待実測許容
Buck 200Hz ゲイン [V/duty]12.008212.0082<0.01%1%一致
Buck 200Hz 位相 [°]-0.38-0.383.742e-5±0.5一致
Buck 1kHz ゲイン [V/duty]12.208012.2080<0.01%1%一致
Buck 1kHz 位相 [°]-1.92-1.921.840e-4±0.5一致
Buck 5kHz ゲイン [V/duty]20.648620.6487<0.01%1%一致
Buck 5kHz 位相 [°]-15.38-15.385.369e-4±0.5一致
Buck 7.59kHz ゲイン [V/duty]56.520556.57060.09%1%一致
Buck 7.59kHz 位相 [°]-93.48-93.480.01±0.5一致
Buck 20kHz ゲイン [V/duty]1.99411.99560.07%1%一致
Buck 20kHz 位相 [°]
期待値は Gvd(jω) に ZOH(保持による Ts/2 の遅れ)を掛けたもの
-180.49-180.570.08±0.5一致
Boost 100Hz ゲイン [V/duty]51.474151.4744<0.01%2%一致
Boost 100Hz 位相 [°]-38.44-38.444.225e-4±1.5一致
Boost 500Hz ゲイン [V/duty]9.91079.90950.01%2%一致
Boost 500Hz 位相 [°]148.45148.460.01±1.5一致
Boost 2kHz ゲイン [V/duty]1.75941.74750.67%2%一致
Boost 2kHz 位相 [°]
期待値は Gvd(jω) に ZOH(保持による Ts/2 の遅れ)を掛けたもの
113.79113.730.05±1.5一致

D. 物理としての整合

式が合っているかとは別に、電源として当たり前のことが起きているかを見る。

確かめたこと期待実測許容
閉ループの整定先 = Vbg/Kv [V]4.98854.9885<0.01%0.3%一致
整定時のデューティ比 = Vo/Vin0.41570.4157<0.01%1%一致
昇圧: D を増やした直後に出力が一度下がる(逆応答)初期の落ち込み -128.1 mV一致
昇圧: 最終的には出力が上がる13.761 V → 16.164 V一致
L を増やすとインダクタ電流リップルが減る729 mA → 364 mA (L 10→20µH)一致
負荷を重くすると RHP零点が低い方へ動く424 Hz → 119 Hz (R 5→2.5Ω)一致
遅れによる位相の目減り = −2π·fc·Td [°]-33.32-33.324.934e-5±0.5一致
遅れを入れても fc は動かない [Hz]
|e^(−jωTd)|=1 なのでゲインは不変
24683.924683.9<0.01%0.01%一致

E. 数値の健全性

刻み幅や格子の粗さで答えが変わっていないか。変わるなら、それは物理ではなく計算の都合。

確かめたこと期待実測許容
RK4 の刻みを1/4にしたときの波形の最大差 [V]
nSub 20 → 80。差が小さい=刻み幅は十分
0.0000002.654e-122.654e-12±0.002一致
格子を4倍にしたときの fc [Hz]24683.924683.9<0.01%0.1%一致
格子を4倍にしたときの PM [°]62.72062.7200.000±0.05一致
全プリセットの時間応答に NaN / Inf が無い14 本すべて有限一致
自動配置が破綻した設計を黙って返さないLC共振より下の fc を3通り試して、すべて警告あり一致

F. 公開されている設計例との突き合わせ

ここまでは自分の中での整合だった。外の資料に載っている「答えつきの設計例」に、この道具が独立に辿り着けるかを見る。部品値と結果が両方書いてある例を2つ使った。

確かめたこと期待実測許容
ANP-16 例1: LC共振 [Hz]22900228770.10%0.5%一致
ANP-16 例1: ESR零点 [Hz]2.400e+62.411e+60.48%2%一致
ANP-16 例1: クロスオーバ [Hz]
資料は「100kHz を少し超える」という書き方。目標は fs/9 = 100kHz
1.000e+51.090e+58.99%12%一致
ANP-16 例1: 位相余裕 [°]
★出力コンデンサがセラミック1個=この道具のモデルがそのまま当てはまる例
70.070.30.3±3一致
ANP-16 例1(積極版): 位相余裕 [°]
資料は「保守版から10°下がる」=70−10。零点を動かした時の変化の向きと量が合う
60.057.22.8±3一致
SLVA301: LC共振 [Hz]320032020.07%0.5%一致
SLVA301: 変調ゲイン Vin/Vramp23.5323.53<0.01%0.1%一致
SLVA301: 分圧比 Kv0.139200.13920<0.01%0.1%一致
SLVA301: 第1零点(資料 step4)[Hz]245524550.01%1%一致
SLVA301: 第1極(資料 step5 = 20kHz)[Hz]20000200040.02%1%一致
SLVA301: 第2零点(資料 step8)[Hz]30433043<0.01%1%一致
SLVA301: 第2極(資料 step9)[Hz]2.059e+52.059e+5<0.01%1%一致
SLVA301: クロスオーバ [Hz](3種を3枝のまま)
資料は「約17kHz」
170001527510.15%12%一致
SLVA301: 位相余裕 [°](3種を3枝のまま)
★出力コンデンサを枝ごとに持てるようにして一致した。以前は単一C近似で 32.2° と外していた
60.056.93.1±4一致
同じ回路を単一C+単一ESRへ潰した場合PM 33.0° / fc 14.23kHz = 資料から 27° ずれる(混載を1種にまとめてはいけない例)一致
SLVA301: R2=7.5k の最適化版のクロスオーバ [Hz]
資料が「20kHz を狙って R2 を上げる」と書いている版
20000200150.08%5%一致

F. 検証していないもの

上の表に出てこないものは、確かめていないということ。並べておく。

いちばん大事な限界。ここに並んでいるのは全部計算どうしの整合だよ。 式の書き間違い・実装のズレ・数値の粗さは、この方法でかなり潰せる。でも 「モデルそのものが現物と合っているか」は、実機で測る以外に確かめようがない。 平均化モデルという前提が正しいかどうかは、この表の外側にある。実際の設計では、 メーカーの平均化モデル、スイッチングシミュレーション、そして実機のループ測定と負荷ステップを、 同じ条件で突き合わせて判断してほしい。
← ワークベンチへ 計算手順を読む →