Julia package for modelling, simulating, and testing induction-machine control strategies, providing reusable machine models, observers, discrete controllers, estimators, and standalone benchmark simulators for a squirrel-cage induction machine under field-oriented control (FOC).
The package contains both continuous ModelingToolkit systems and discrete/hybrid controller implementations. It also serves as the machine-control backend for ElectricMachineWinch.jl.
Hybrid FOC — the package core. A hand-written induction-machine plant stepped alongside hand-written discrete controllers and observers on a fixed-step loop, close to how a real embedded implementation behaves. Plain Julia over concrete Float64.
Scalar V/f and symbolic FOC — ModelingToolkit systems used mainly for plant validation. Everything symbolic lives in a package extension.
Julia 1.12 is required. The MTK-backed model builders are gated behind a package extension:
using InductionMachineDrives # hybrid FOC simulators only
using ModelingToolkit, OrdinaryDiffEq, InductionMachineDrives # + the symbolic system buildersFirst, install git (or Git for Windows) and Julia. Git for Windows provides a Bash terminal. In the Bash terminal, in a folder of your choice, type:
git clone https://github.com/c-nicomar/InductionMachineDrives.jl.git
mv InductionMachineDrives.jl InductionMachineDrives
cd InductionMachineDrives
bin/install # checks Julia 1.12, restores manifest, instantiates workspace
bin/run_julia # REPL with the right project and environment variablesIn the REPL, menu() lists the hybrid FOC examples and menu2() the ModelingToolkit ones.
A single script can also be run directly:
julia scripts/run_foc_current_hybrid_steps.jlYou can find the documentation at InductionMachineDrives.
- Architecture — sign conventions, controllers, estimators, simulators
- Package overview — purpose and supported workflows
- MTPA integration — constrained-MTPA speed controller
- 160 kW FOC F1 simulation — field weakening, voltage/current limits
MIT License. Copyright (c) 2026 Carolina Nicolás and contributors. See LICENSE for details.
- ElectricMachineWinch.jl - package that combines a winch model and an electric machine model
- KiteModels.jl - fast, numeric models of kite power systems
- KiteControllers.jl - controllers and path planners for kite power systems