NETLIST STUDIO GUIDE

制御回路

Buckを一から構成し、PWM、PID、閉ループ、dead timeを段階的に確認します。

PDF版をダウンロードSHA-256 9b97453016ec

この章の境界

この章のControl、独自ブロック、Firmware、Feedbackはexperimentalです。まずシミュレーションだけで操作し、生成されたC++、I/O割当、安全値、回路モデル、解析条件を確認します。

⚠️ この章の50 V Buckは学習用シミュレーション条件です。この記載だけで実機を製作、通電、接続しないでください。感電、発火、蓄積エネルギー、半導体破壊を防ぐ定格・絶縁・保護設計は別途必要です。

制御Projectでは、次の流れを作ります。

回路の測定点 → CircuitProbeInput → PID → PWM → CircuitActuatorOutput → 回路の制御source
                                      └──────────────→ Scope

回路のみでは制御電圧/電流sourceは設定した初期値の固定DCとして計算されます。時間ごとに指令を変えるには制御を含むFeedbackを使います。

練習3: Buck回路を配置する

最初は50 kHz、目標24 Vの非同期Buckモデルを作ります。盤面の位置ではなく、次の電気的接続を正本にしてください。

部品値/model接続と役割
V001 DC電源50 V+をDC bus、-をGND
M001 N-MOSFETNMOS_POWER_DEFAULTDrainをDC bus、Sourceをswitch node
VCTRL001 制御電圧出力初期0 V、範囲010 VMOSFETのGate–Source間を駆動
D001 Schottky diodeD_SCHOTTKY_POWERAnodeをGND、Cathodeをswitch node
R0021 Ωswitch nodeから出力側へのseries要素
IP001 Iプローブ-R002L001の間へ直列配置
L001470u Hswitch node側から出力nodeへ直列配置
C001100u F、初期電圧0出力nodeからGND
R001 load20 Ω出力nodeからGND
VP001 Vプローブlabel出力電圧出力nodeをGND基準で測定
図6-1 Buck回路と制御I/Oの全体
図6-1 Buck回路と制御I/Oの全体
Buck回路とI/O bindingを表示したワークスペース全体。power stage、測定点、binding設定に番号が付いている
  1. power stage: 電源、MOSFET、diode、L、C、load、GNDの電力経路を確認します。
  2. probe/actuator: IP001VP001VCTRL001の位置と向きを確認します。
  3. binding設定: 選択した測定点または制御出力をどのControl blockへ公開するか確認します。

接続を検証する

  1. DC bus、switch node、output node、GNDの4つを順に強調表示します。
  2. IP001が電流経路へ直列に入り、別配線で迂回されていないことを確認します。
  3. VP001がoutput nodeへ接続されていることを確認します。
  4. VCTRL001の初期値が指令範囲内で、最小値が最大値より小さいことを確認します。
  5. SPICE入力でV001M001VCTRL001D001R002IP001L001C001R001を確認します。

MOSFETやdiodeの向きが逆の場合は、値を調整する前に回転と端子を修正します。通常TRANでVCTRL001を固定DCとして使ってもPWM動作にはならないため、その結果を閉ループ動作と解釈しないでください。

回路と制御グラフをbindingする

  1. 回路上のVP001を選び、Inspectorのフィードバック入力として使用を有効にします。
  2. 対応するCircuitProbeInputが作成されたことを確認します。
  3. VCTRL001を選び、Inspectorのbinding状態とCircuitActuatorOutputを確認します。計測・制御paletteから新しい専用制御出力を配置した場合は、対応ブロックも同じ操作で作成されます。
  4. 上部で制御へ切り替えます。
  5. 入力ブロックがVP001、制御先ブロックがVCTRL001を指していることを確認します。
図6-2 probe/actuator bindingの設定
図6-2 probe/actuator bindingの設定
Buck回路のprobeとactuatorをControlへbindingするインスペクター

表示中のRefID、物理量、入力/出力方向が回路上の対象と一致していることを確認します。似た名前の別RefIDへ自動で付け替わることはありません。

RefIDを変更、削除、複製した場合はbindingを再確認します。回路の見た目が同じでも、別RefIDへ黙って接続されることはありません。

PWMだけのopen-loopを作る

閉ループへ進む前に、固定Dutyで経路を1段ずつ確認します。

  1. ConstantPWMScopeを配置します。
  2. Constant.out → PWM.dutyを接続し、Constantを0.5にします。
  3. PWM.out → CircuitActuatorOutput.inを接続します。
  4. Constant.out → Scope.inも接続し、labelをDuty指令、step表示、単位%にします。
  5. PWMを次の値へ設定します。
図6-3 固定Dutyのopen-loop PWM
図6-3 固定Dutyのopen-loop PWM
ConstantからPWM、actuator、Scopeへ接続したopen-loop制御graph全体。入力、PWM、出力に番号が付いている
  1. Duty指令: Constantの0.5をPWMへ入力します。
  2. PWM: 50 kHz、0〜10 VのGate波形へ変換します。
  3. actuator/Scope: 回路制御出力へ渡す経路と観測経路を分けて確認します。
PWM設定
frequency50000 Hz
low/high0 V/10 V
initial phase0
Duty updateperiod-boundary
図6-4 open-loop PWMの設定
図6-4 open-loop PWMの設定
PWM blockのfrequency、low、high、phase、Duty updateを表示した設定パネル

Feedbackのsample timeを1us、durationを10msにします。PWMではfrequency × sampleTime <= 0.1が必要です。この例は50000 × 0.000001 = 0.05で条件内です。

モデル診断にerrorがなければビルドしてシミュレーションを1回実行し、Gate command、出力電圧、インダクタ電流、Dutyを確認します。理想BuckのVout≈Vin×Dutyは最初の目安ですが、起動過渡、model、series抵抗、diode降下、rippleがあるため完全一致は要求しません。

PIDで閉ループにする

  1. Constantをもう1つ配置し、labelを目標24V、値を24にします。
  2. PIDを配置します。
  3. open-loopのConstant 0.5 → PWMを削除します。
  4. 次の接続を作ります。
目標24V.out ─────────────→ PID.setpoint
VP001のCircuitProbeInput.out → PID.measurement
PID.out ─────────────────→ PWM.duty
PID.out ─────────────────→ Scope.in
PWM.out ────────────────→ VCTRL001のCircuitActuatorOutput.in
図6-5 PID closed-loopの制御graph
図6-5 PID closed-loopの制御graph
setpoint、measurement、PID、PWM、actuatorを接続したclosed-loop制御graph全体。信号経路に番号が付いている
  1. setpointとmeasurement: 目標24 VとVP001の測定値をPIDへ入れます。
  2. PIDからPWM: PID出力をDuty指令としてPWMへ渡します。
  3. 診断と出力: Scope、actuator、右側のPID診断を確認します。

最初の学習値として、次を入力します。

PID設定
Kp0.01
Ti10ms
Td0
Tf100us
出力最小/最大0.050.95
積分初期値0.505
derivativemeasurement
anti-winduppredictive conditional
updateevery tick
図6-6 PID設定と診断
図6-6 PID設定と診断
PIDのKp、Ti、出力範囲、anti-windupと診断を表示した設定パネル

全fieldを確定し、PID診断を読みます。空欄、入力途中の-1e、最小値以上の最大値、非finite値がある間はBuild/Runへ進みません。

閉ループシミュレーションを実行する

  1. 実機I/O設定で数値形式、入力、出力方式、安全値を確認します。
  2. Feedbackがsample time 1us、duration 10msであることを確認します。
  3. model diagnosticsとfeedback diagnosticsのerrorを0にします。
  4. ビルドしてシミュレーションを実行します。
  5. 完了後に結果または波形を開きます。

同じmodelと検証用topologyでは、8〜10 msの出力平均23.7〜24.3 V、startup最大40 V未満、出力ripple 0.3 Vp-p以下が回帰目安です。手作業で部品、配線、model、PIDを変えたProjectへ、この数値を合格保証として流用しないでください。

中止した実行の未完成結果は採用されません。回路、制御graph、I/O、timingを変更すると以前のFeedback結果は古い状態になるため、同じ条件で再実行してください。

結果を診断する

共通時間軸で、最低限次を表示します。

系列見ること
出力電圧目標、startup overshoot、定常偏差、ripple
インダクタ電流peak、ripple、異常な増加
Gate command0/10 Vの遷移、edge数
PID指令Dutycontrollerが要求した比率、飽和
PWM適用Duty周期境界で実際に適用された比率

PID指令と適用Dutyは、period-boundaryのため瞬間的に一致しない場合があります。指令が上限または下限へ張り付く場合は、極性、measurement、目標、初期値、Kp/Tiを順に確認します。電流が増加し続ける場合は、結果を採用せず回路と制御を停止して見直します。

PWM同期PIDへ進む

基本の閉ループが理解できた後だけ、PwmSynchronizedSampleとtriggered PIDを追加します。

  1. measurementをPwmSynchronizedSample.inへ接続します。
  2. PWM Dutyを同期sampleのdutyへfan-outします。
  3. value → PID.measurementupdate → PID.updatedt → PID.dtを接続します。
  4. sample phaseを0.75、PID updateをtriggeredにします。
  5. 例としてKp 0.01、Ti 10ms、Td 1ms、Tf 100usを使います。
図6-7 PWM同期PIDの階層全体
図6-7 PWM同期PIDの階層全体
PWM同期samplingを階層化した制御graph全体。階層、同期信号、公開portに番号が付いている
  1. 標準階層: 関連するblockを階層内へまとめ、breadcrumbで現在位置を確認します。
  2. 同期経路: PWMのDutyとmeasurementからvalueupdatedtを作ります。
  3. 公開port: 階層外と接続する入出力の名前と方向を確認します。
図6-8 階層の公開port
図6-8 階層の公開port
PWM同期階層の公開portと外部接続部分を拡大した制御graph

公開portは見た目の位置ではなく、port名、方向、signal typeで外部接続を定義します。階層化後もsetpoint、measurement、Duty、updateの意味が変わっていないことを確認します。

sample phaseは0以上1未満です。50 kHz、base tick 1 µs、duration 10 msではcontroller sampleは10001点、同期updateは500回が目安です。PWM同期はswitching rippleの同じ位相を測るための方法であり、電流制限や実機ADC timingを自動設計する機能ではありません。

相補PWMとdead time

half-bridgeへ拡張する場合はComplementaryPWMを使い、上下Gateを別の制御先へ一対一でbindingします。turn-on delayは各PWM周期より短くし、例として上下各400nsを設定できます。

  • turn-offは即時、反対側のturn-onだけを遅延します。
  • 遅延中はboth-offとし、上下同時ONを許可しません。
  • safe stateはboth-offです。
  • 変換後は出力平均、overlap 0、最小both-off時間、温度と損失を再評価します。

dead timeを設定しただけでshoot-through防止が実機保証されるわけではありません。driver遅延、MOSFETのturn-off、Miller効果、配線寄生を実測してください。

完了チェック

  • Buckのpower stage、測定点、Gate制御sourceを一から配置した。
  • 固定DC sourceとFeedbackで動的に更新されるsourceの違いを説明できる。
  • ConstantからPWMへのopen-loopを先に確認した。
  • setpoint → PID ← measurement → PWM → actuatorの閉ループを作った。
  • 指令Dutyと適用Duty、出力電圧、インダクタ電流を同じ時間軸で確認した。
  • PWM同期、相補PWM、dead timeの制約と実機との差を説明できる。