NETLIST STUDIO GUIDE

FirmwareとFeedback

生成C++、実機I/O、8ファイルのBundle、Feedbackと実機の境界を理解します。

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

正本と生成物を分ける

種類役割更新方法
.netgrid.json回路、制御graph、I/O、timingの編集正本Netlist Studioで保存
Firmware BundleHAL非依存C++17とintegration雛形Projectから再生成
Feedback実行artifactSPICE deck、WASM、manifest、結果実行ごとに一時生成
Graphの表示/演算結果のprojection元datasetから再計算

Projectを変更したあとに古いBundleや結果を使わないでください。WASMや解析結果はProject本文の正本ではありません。

実機I/Oを設定する

実機I/O設定で次を1項目ずつ確認します。

設定選択肢/意味必ず確認すること
numeric profilefloat32既定、またはfloat64MCU、演算精度、実行時間
input codeName測定入力のC++名ADC値やsensor値との対応
sampled-value output1つの数値を出力safeValue、単位、範囲
hardware-pwm outputDuty/frequency/polarityPWM node、activeHighsafeDuty
complementary PWM上下Gateの1組dead time、両極性、both-off

ADC channel、timer、PWM channel、MCU pin、Gate driver、電圧/電流scaleは回路netから自動推定されません。ProjectのRefIDと実機pin名が似ていても、同じものとは扱わず、integration側で明示的に対応付けます。

safeValuesafeDutyは、停止、未初期化、通信断、watchdog時に採用する設計値です。単に0を入れるのではなく、実回路で安全側になる極性と電力状態を確認します。

生成C++を確認する

図7-1 Firmware authoring画面の全体
図7-1 Firmware authoring画面の全体
制御graph、生成C++、実機I/OとBundle操作を表示したFirmware画面全体。主要領域に番号が付いている
  1. 制御graph: 選択したblockと生成sourceの対応を確認します。

  2. 生成C++: activeな方式、保護領域、診断を確認します。

  3. I/O/Bundle: numeric profile、mapping、安全値を確定してから書き出します。

  4. ファームウェアC++を開きます。

  5. キャンバス上のブロックを選び、対応するparameters、演算、state updateのsource範囲を確認します。

  6. Blocks方式では、許可された数値parameterまたはCustomCpp保護領域だけを編集します。

  7. プレビュー診断を確認し、変更を確定します。

  8. C++ ビルドのみでsource policy、C++17、WASM ABIを確認します。

生成器が管理する構造を変更した下書きは適用されません。C++方式へ切り替える場合はC++版として編集を使用します。Blocks版とC++版は別々に保存され、activeな方式だけがBuild/Runの正本です。

Standalone C++では、dynamic allocation、thread、filesystem、network、process、任意host importなどを使えません。回路やpinへ直接アクセスするコードをcoreへ埋め込まず、Platform境界へ分離します。

図7-2 I/O mappingとBundle書き出し状態
図7-2 I/O mappingとBundle書き出し状態
生成C++、実機I/O mapping、Firmware Bundleの完了操作を拡大した画面

画面に表示されたcodeName、入出力方式、safe valueが回路上のRefIDと設計資料に一致していることを確認します。Bundle完了だけでMCU固有driverや安全処理が完成したことにはなりません。

Firmware Bundleを書き出す

  1. 実機I/O設定を確定します。
  2. model diagnosticsのerrorと未保存C++ draftを解消します。
  3. ファームウェア一式を書き出すを実行し、空の保存先を選びます。
  4. 次の8ファイルがあることを確認します。
netgrid_controller.hpp
netgrid_controller.cpp
netgrid_platform.hpp
integration_example.cpp
firmware-manifest.json
control-source-map.json
CMakeLists.txt
README.md

firmware-manifest.json version 4には、C++17、numeric profile、sample time、graph/behavior hash、I/O、安全値、PWM契約、使用block definition、各fileのSHA-256が含まれます。ファイルを編集した後はmanifest hashが一致しなくなるため、元Bundleと変更版を区別します。

Platformへ接続する

  1. netgrid_platform.hppで、アプリが要求するinput/output契約を確認します。
  2. integration_example.cppで、sample取得、Controller::step()、出力反映の順序を確認します。
  3. ADC値を物理単位へscaleし、入力codeNameへ対応付けます。
  4. controllerの全出力がfiniteで範囲内であることを確認してから、同一tickの値をatomicに反映します。
  5. PWMはshadow/preload相当の周期境界更新を使います。
  6. fault時、watchdog時、初期化前にsafe outputへ移る実機処理を別途実装します。

PWM同期sampleでは、ADC sample取得、controller step、PWM shadow更新の順序とphaseを実機timerへ対応付けます。Netlist StudioはADC channel、timer、pinを決めません。

Feedbackを実行する

  1. activeなcontroller方式と保存済みsourceを確認します。
  2. probe/actuator binding、sample time、durationを確認します。
  3. model diagnosticsとfeedback diagnosticsのerrorを解消します。
  4. ビルドしてシミュレーションを実行します。
  5. 完了したdatasetのProject fingerprintと現在のProjectが一致することを確認します。

Feedbackでは、制御sourceの初期値と範囲を再検証し、全出力がfiniteかつ範囲内の場合だけ同一tickのlatchへ反映します。暗黙のclampで不正なcontroller出力を隠しません。

Feedback結果を読む

結果では、probe、actuator、Scopeを共通時間軸へ統合します。Buck例では次を確認します。

図7-3 Feedback実行完了後の全体
図7-3 Feedback実行完了後の全体
Buck closed-loop Feedback完了後の回路と結果summary全体。回路、summary、定常推定に番号が付いている
  1. 回路: 結果を生んだpower stage、probe、actuatorを再確認します。
  2. 結果summary: 出力電圧、peak current、Duty指令を確認します。
  3. 定常推定: 測定窓、ripple、適用Duty、PID内部系列を確認します。
  • 出力電圧とインダクタ電流。
  • Gate commandまたは上下Gate。
  • PIDのraw/limited/applied Duty。
  • startup最大値、定常平均、偏差、ripple、peak current。
  • 相補PWMでは上下同時ON時間と最小both-off時間。
図7-4 Feedback波形の定常summary
図7-4 Feedback波形の定常summary
出力電圧23.889V、インダクタ電流、Duty、定常区間の詳細summary

画面例では末尾20%の測定窓で出力平均23.889 V、Duty指令平均50.536 %です。この数値は固定fixtureの結果であり、別の部品値やmodelを使った回路の合格値として流用しません。

PID内部系列はapplicationがaccepted probe系列から再生するprojectionであり、権威あるsimulation artifactそのものではありません。C++単独方式のprivate stateは推測しません。

回路、制御graph、numeric profile、I/O、timing、active sourceを変更した場合は、以前の結果を古い状態として扱います。plotの並べ替えだけではbehaviorを変更しません。

シミュレーションと実機の差

シミュレーションで省略/理想化されやすいもの実機で必要な確認
switch/diodeの損失と温度依存junction温度、heatsink、SOA
Gate driver遅延と電源UVLO、source/sink電流、Miller耐性
配線、ESR、ESL、EMIlayout、loop面積、filter、測定方法
ADC/timer量子化とjitterresolution、trigger、latency、clock drift
faultと電源投入順序fuse、current limit、interlock、watchdog
modelの定格外挙動datasheet、derating、破壊mode

最初の実機bring-upは、回路有識者によるreview、絶縁された計測、電流制限、低エネルギー条件、非常停止、safe Duty確認を完了してから行います。50 Vの学習値をそのまま実機へ適用しません。

完了チェック

  • Project、Firmware Bundle、Feedback artifactの正本関係を説明できる。
  • float32float64と実機I/O設定を確認した。
  • 8ファイルのBundleとmanifest hashを確認した。
  • ADC/timer/pinが自動推定されないことを理解した。
  • Feedbackのstale条件とPID projectionの境界を理解した。
  • シミュレーション外の定格、保護、bring-up手順を別途設計する必要を理解した。