Data flow diagram: MCAF R5 RC11

Symbol | Program variable | Description
--- | --- | ---
\( \omega_{m,\rm pert} \) | `motor.testing.sqwave.velocity` | MCAF firmware contains amplitude of velocity command perturbation — note: used only in OM_FORCE_VOLTAGE
\( I_{dq,\rm pert} \) | `motor.testing.sqwave.idq` | MCAF firmware contains amplitude of current command perturbation (d- and q-axis components)
\( V_{dq,\rm pert} \) | `motor.testing.sqwave.vdq` | MCAF firmware contains amplitude of voltage command perturbation (d- and q-axis components)
V6 | `motor.testing.overrides : 4 (zero = "on")` | "Valve" to enable data flow into reciprocal voltage
\( R_V \) | `motor.rVdc` | reciprocal of DC voltage
\( \omega_{m,\rm cmd} \) | `[not stored in MCAF]` | MCAF R5: Output of ADC channel; see adc_compensation.c MCAF_AcquireADCMuxChannel
V1 | `motor.testing.overrides : 1 (zero = "on")` | "Valve" to enable data flow into velocity command
\( \omega_{m,\rm ref0} \) | `motor.velocityControl.velocityCmd` |
\( \omega_{m,\rm ref} \) | `motor.velocityControl.velocityCmdRateLimited` | rate-limited velocity command
V2 | `motor.testing.operatingMode = OM_NORMAL and startup complete` | "Valve" to enable data flow into current command
\( I_{dq,\rm ref0} \) | `motor.idqCmdRaw` | Desired dq-frame currents, prior to perturbation
\( I_{dq,\rm ref} \) | `motor.idqCmd` | Desired dq-frame currents
\( I_{dq,\rm err} \) | `[not stored in MCAF]` |
V3 | `motor.testing.operatingMode = OM_FORCE_CURRENT or greater` | "Valve" to enable data flow into voltage command
\( V_{dq0} \) | `motor.vdqCmd` | Desired dq-frame (synchronous) voltages prior to perturbation
\( V_{dq} \) | `motor.vdq` | Desired dq-frame (synchronous) voltages
V4 | `[Not implemented in MCAF R5]` | "Valve" to enable data flow into alphabeta voltage command
\( V_{\alpha\beta} \) | `motor.valphabeta` | Desired alphabeta-frame (stationary) voltages
\( V_{abc0} \) | `motor.vabc` | Desired phase voltages
\( D_{abc0} \) | `motor.dabcUnshifted` | Duty cycle outputs prior to ZSM and clipping
V5 | `[Not implemented in MCAF R5]` | "Valve" to enable data flow into output duty cycle
\( D_{abc1} \) | `motor.dabc` | Duty cycle outputs after ZSM and clipping
\( \theta_e \) | `motor.thetaElectrical` | electrical angle
cs | `motor.sincos` | sine and cosine of electrical angle
\( I_{ab} \) | `motor.iabc` | measured motor phase currents
\( I_{\alpha\beta} \) | `motor.ialphabeta` | alphabeta-frame (stationary) measured current
\( I_{dq} \) | `motor.idq` | dq-frame (synchronous) measured current
commutation override | `motor.testing.overrides : 2 (zero = normal commutation from estimator)` | determines source of commutation angle
\( \omega_{e,\rm override} \) | `motor.testing.overrideOmegaElectrical` | Commutation override electrical frequency
\( \hat{\theta}_r \) | `motor.estimator.theta` | Estimated electrical angle
\( \hat{\omega}_m \) | `motor.omegaElectrical` | Estimated electrical frequency (note: in MCAF the equivalent electrical and mechanical frequencies are represented by the same integer values and are interchangeable during computations.)
\( \theta_{\rm ofs} \) | `motor.startup.thetaError` | Commutation angle offset