Appendix B — Test OM.jl

Position Control with friction. Using Pole Placement + PD.

Author

B.1 Response Analysis

Code
# import Pkg; Pkg.add("OMJulia")
using OMJulia
Code
using OMJulia.API: API
Code
omc = OMJulia.OMCSession();
[ Info: Path to zmq file="/tmp/openmodelica.icpmoles.port.julia.z0WV3KM0Lj"
Code
modelfile = joinpath(@__DIR__,
  "modelica",
  "ControlChallenges",
  "package.mo")
API.loadFile(omc, modelfile)

classname = "ControlChallenges.BlockOnSlope_Challenges.Examples.WithFriction"
ModelicaSystem(omc,modelfile, classname)

fmuPath = API.buildModelFMU(omc, classname)
"/tmp/jl_Bdmswi/ControlChallenges.BlockOnSlope_Challenges.Examples.WithFriction.fmu"
Code
using FMI, DifferentialEquations, Plots

fmu = loadFMU(fmuPath);
simData = simulateME(
    fmu,
    (0.0, 5.0);
    recordValues=["blockOnSlope.x", 
    "blockOnSlope.xd", 
    "blockOnSlope.usat"],
    showProgress=false);
unloadFMU(fmu);
plot(simData, states=false, timeEvents=false)