01 / Control topology
點擊方塊編輯參數 → 執行模擬Feedback: PMSM iabc → ADC → Clarke → Park(θe) → Current PI d/q
02 / PWM Timer & ADC timing
白線為所選 simulation time;游標以 plant step 為解析度。Valley k:套用上一筆 CCR → ADC[k] → Clarke/Park → PI/SVPWM → pending CCR[k+1],於下一個 valley 生效。PWM 線依實際離散比較器繪製。
03 / Waveform instruments
04 / Loop Bode Analysis
PI 使用與引擎相同的先輸出後積分:C(z)=Kp+Ki·Ts/(z−1)。電流環包含 exact ZOH RL plant 與 z⁻¹ 運算延遲;ZOH 已包含在離散模型中,不重複加半週期延遲。
ZOH 離散化 · 交越與裕度定義
模型、時間基準與操作說明
使用方式:選擇上方方塊 → 調整右側參數 → 按「執行模擬」。參數修改不會冒充已更新的波形;結果區保留該次快照,黃色提示表示需要重跑。可匯出目前顯示結果的降採樣 CSV(高速時序另含獨立列類型)。
模型:三相兩電平 inverter、floating neutral,v_an = v_aO − mean(v_abcO)。切換電壓由 center-aligned 比較器產生,額外疊加週期平均 dead-time pole error:Δv_xO = −Vdc·Td·fpwm·sgn(i_x),再扣除中性點誤差。這是 switching waveform + dead-time average disturbance 的混合模型;不模擬互補 gate blanking、二極體壓降或寄生元件。
電氣與機械方程:dId/dt=(Vd−Rs·Id+ωe·Lq·Iq)/Ld;dIq/dt=(Vq−Rs·Iq−ωe·(Ld·Id+ψf))/Lq;Te=1.5p[ψf·Iq+(Ld−Lq)Id·Iq];J·dωm/dt=Te−TL−B·ωm。以 midpoint RK2 積分;每一步固定 switching 狀態。Clarke 採 amplitude-invariant 定義,Park q 軸為 −sin / cos,θe=p·θm。
控制:Speed PI 輸出 Te*raw [N·m] → Torque Limit → Te*lim → 1/Kt → iq*raw → Current Limit → iq* → Current FOC。Kt=1.5pψf,由極對數 p 與磁鏈即時計算;一般 plant 仍包含磁阻轉矩。Speed PI 慢迴路,Current PI 每 PWM 週期一次;可切換 dq decoupling 與 back-calculation anti-windup。向量限制 |Vdq|≤m·Vdc/√3,SVPWM 用 min/max common-mode injection,CCR 量化為整數。ADC 固定於 carrier valley / PWM period boundary 同步取樣,FOC 使用 hold 值;運算延遲固定一個完整控制週期,新 duty/CCR 在下一個 valley 更新為 active。速度與角度是理想感測,無 observer。
Timer:ARR=round(f_timer/(2·f_requested)),實際 fPWM=f_timer/(2·ARR)。每個 PWM 週期使用偶數個積分步(由「最少 steps/period」與 L/R、電角速度上限自動加密);ADC event 固定在 phase step 0(valley)。Timer tick 與 plant step 分開;switching edges 的時間解析度仍受 plant step 限制,增加 ARR 不會自動提升積分解析度。高速波形保留最後 8 個 PWM 週期,總覽最多約 6,000 點,可能無法呈現所有 switching edge,請用高速圖檢視。
初始狀態固定為靜止、零電流。負載為指定時間後的常數扭矩。模型沒有磁飽和、熱、損耗或硬體保護,數值發散會停止並顯示錯誤。極限參數可能無法追上目標轉速,請檢查電壓與電流限制。首次開啟需要網路載入正式固定版本 CDN;不需要 Python 安裝或後端。
Libraries: Pyodide 0.29.2 官方文件 · Plotly.js 官方文件。本檔內含 UI、worker 與 NumPy 引擎全部原始碼。