Package

Module-level bindings declared directly in src/InductionMachineDrives.jl, including the four extension stubs and the backward-compatible alias.

InductionMachineDrives.InductionMachineDrives — Module
InductionMachineDrives

Reproduction of an induction-machine (IM) AWES ground-station bench simulation, originally a Simulink model. It offers two modelling paths.

Hybrid FOC path — the package core, and the only part with no dependencies. A hand-written induction-machine plant is integrated with fixed-step RK4 while hand-written discrete controllers and observers run alongside it at a fixed sample time Ts, which is close to how a real embedded implementation behaves. Everything is concrete Float64; nothing is symbolic. Entry points:

The discrete blocks these simulators are built from are exported too, so they can be driven directly from an external loop — for instance as the machine control backend of ElectricMachineWinch.jl. Each follows the same convention: a *State / *Params / *Output struct trio plus a *_step! function that mutates the state and returns a fresh output (current_controller_step!, rotor_flux_observer_step!, load_torque_kalman_step!, outer_torque_flux_f1_step!, outer_speed_flux_f1_step!, outer_speed_flux_mtpa_step!).

Scalar V/f and symbolic FOC path — ModelingToolkit systems used for basic plant validation. These live in the InductionMachineDrivesMTKExt package extension and only acquire methods once both triggers are loaded:

using ModelingToolkit, OrdinaryDiffEq, InductionMachineDrives

Calling build_scalar_im_system, simulate_scalar_im, build_foc_current_im_system or simulate_foc_current_im without both raises a MethodError listing zero methods; that is the intended signal, not a bug.

Sign convention

The mechanical equation used throughout the plant, the estimators and every feedforward term is

J * dω/dt = Te + TL - B * ω

so electromagnetic torque Te and load torque TL are both positive when they accelerate the machine toward positive speed, while friction B*ω opposes motion. A positive TL therefore helps positive acceleration, which is why load feedforward enters the speed loop with a negative sign.

source
InductionMachineDrives.build_scalar_im_model — Function
build_scalar_im_model(; kwargs...)

Deprecated alias for build_scalar_im_system, kept so scripts written before the rename keep working. It is the very same function object, so it carries the same methods and the same extension requirement: both ModelingToolkit and OrdinaryDiffEq must be loaded before it has any methods. Prefer build_scalar_im_system in new code.

source