From 9b59712d4ad53f23a1903ebcb687ca0607570e2f Mon Sep 17 00:00:00 2001 From: baggepinnen <cont-frb@ulund.org> Date: Fri, 7 Dec 2018 16:54:59 +0100 Subject: [PATCH] Updates to julia1 --- src/LabProcesses.jl | 2 +- src/controllers.jl | 8 ++++---- src/interface_implementations/ballandbeam.jl | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/LabProcesses.jl b/src/LabProcesses.jl index bc3b32b..b2f1a68 100644 --- a/src/LabProcesses.jl +++ b/src/LabProcesses.jl @@ -9,7 +9,7 @@ end module LabProcesses -using ControlSystems, LabConnections.Computer, Parameters, DSP +using ControlSystems, LabConnections.Computer, Parameters, DSP, LinearAlgebra include("utilities.jl") diff --git a/src/controllers.jl b/src/controllers.jl index a6d21b1..55eb8c4 100644 --- a/src/controllers.jl +++ b/src/controllers.jl @@ -27,16 +27,16 @@ function run_control_2DOF(P::AbstractProcess,sysFB, sysFF=nothing; duration = 10 rf = sysFF == nothing ? r[:,i] : Gff(r[:,i]) e = rf-y[:,i] ui = Gfb(e) - ui + bias(P) + ui .+ bias(P) end simulation = isa(P, SimulatedProcess) initialize(P) for (i,t) = enumerate(0:h:duration) @periodically h simulation begin - y[:,i] = measure(P) - r[:,i] = reference(t) - u[:,i] = calc_control(i) # y,r must be updated before u + y[:,i] .= measure(P) + r[:,i] .= reference(t) + u[:,i] .= calc_control(i) # y,r must be updated before u control(P, [clamp.(u[j,i], inputrange(P)[j]...) for j=1:nu]) end end diff --git a/src/interface_implementations/ballandbeam.jl b/src/interface_implementations/ballandbeam.jl index 9ae3da6..a9e04e2 100644 --- a/src/interface_implementations/ballandbeam.jl +++ b/src/interface_implementations/ballandbeam.jl @@ -48,7 +48,7 @@ const beam_system, nice_beam_controller = define_beam_system() struct BeamSimulator <: SimulatedProcess h::Float64 s::SysFilter - BeamSimulator(;h::Real = 0.01) = new(Float64(h), SysFilter(beam_system, h)) + BeamSimulator(;h::Real = 0.01, bias=0) = new(Float64(h), SysFilter(beam_system, h)) end struct BallAndBeam <: PhysicalProcess @@ -96,7 +96,7 @@ bias(p::BallAndBeamSimulator) = 0 function control(p::AbstractBeamOrBallAndBeam, u::AbstractArray) length(u) == 1 || error("Process $(typeof(p)) only accepts one control signal, tried to send u=$u.") - send(p.control,u[1]) + control(p,u[1]) end control(p::AbstractBeamOrBallAndBeam, u::Number) = send(p.control,u) control(p::BeamSimulator, u::Number) = p.s(u) @@ -104,7 +104,7 @@ control(p::BallAndBeamSimulator, u::Number) = error("Not yet implemented") measure(p::Beam) = read(p.measure) measure(p::BallAndBeam) = [read(p.measure1), read(p.measure2)] -measure(p::BeamSimulator) = vecdot(p.s.sys.C,p.s.state) +measure(p::BeamSimulator) = dot(p.s.sys.C,p.s.state) measure(p::BallAndBeamSimulator) = error("Not yet implemented") -- GitLab