For classical control theory there is GitHub - JuliaControl/ControlSystems.jl: A Control Systems Toolbox for Julia
For optimal control there is GitHub - JuliaControl/RobustAndOptimalControl.jl: Robust and optimal design and analysis of linear control systems
For model predictive control there is GitHub - JuliaControl/ModelPredictiveControl.jl: An open source model predictive control package for Julia.
And a lot more smaller packages.
Hybrid control is not yet very well supported by MTK. We just use MTK to create the model, and then use the integrator interface of DifferentialEquations to run the continues model timestep per timestep, the controller is a discrete time controller and calculates the new plant inputs on each timestep.
Please ask more specific questions to explain what you are missing.
Here is an example (with video) for a four tank system using Dyad: Control design for quadruple tank · DyadControlSystems
Please, be aware that Dyad is a commercial software, free for academic use. You can do the same without Dyad, using MIT licensed packages only, but then you have less nice tutorials and a little bit extra work.
You can find a small controller example (not using MTK) that I wrote here: GitHub - OpenSourceAWE/WinchControllers.jl: Digital controllers for winches This example also includes some generic controller components: Generic Components · WinchControllers.jl
To draw the control block diagrams I use https://www.drawio.com/
While creating a basic controller in Simulink is faster, doing the same with Julia is satisfying: I translated a Simulink model of a wind turbine + estimator + controller from Simulink to Julia, and the code was:
- much more readable, mainly 35 differential algebraic equations
- about 5000 times faster
- the linearisations around different operating points much more accurate