Skip to content
Snippets Groups Projects
Commit 9b59712d authored by Fredrik Bagge Carlson's avatar Fredrik Bagge Carlson
Browse files

Updates to julia1

parent af0cb1b5
No related branches found
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ end ...@@ -9,7 +9,7 @@ end
module LabProcesses module LabProcesses
using ControlSystems, LabConnections.Computer, Parameters, DSP using ControlSystems, LabConnections.Computer, Parameters, DSP, LinearAlgebra
include("utilities.jl") include("utilities.jl")
......
...@@ -27,16 +27,16 @@ function run_control_2DOF(P::AbstractProcess,sysFB, sysFF=nothing; duration = 10 ...@@ -27,16 +27,16 @@ function run_control_2DOF(P::AbstractProcess,sysFB, sysFF=nothing; duration = 10
rf = sysFF == nothing ? r[:,i] : Gff(r[:,i]) rf = sysFF == nothing ? r[:,i] : Gff(r[:,i])
e = rf-y[:,i] e = rf-y[:,i]
ui = Gfb(e) ui = Gfb(e)
ui + bias(P) ui .+ bias(P)
end end
simulation = isa(P, SimulatedProcess) simulation = isa(P, SimulatedProcess)
initialize(P) initialize(P)
for (i,t) = enumerate(0:h:duration) for (i,t) = enumerate(0:h:duration)
@periodically h simulation begin @periodically h simulation begin
y[:,i] = measure(P) y[:,i] .= measure(P)
r[:,i] = reference(t) r[:,i] .= reference(t)
u[:,i] = calc_control(i) # y,r must be updated before u 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]) control(P, [clamp.(u[j,i], inputrange(P)[j]...) for j=1:nu])
end end
end end
......
...@@ -48,7 +48,7 @@ const beam_system, nice_beam_controller = define_beam_system() ...@@ -48,7 +48,7 @@ const beam_system, nice_beam_controller = define_beam_system()
struct BeamSimulator <: SimulatedProcess struct BeamSimulator <: SimulatedProcess
h::Float64 h::Float64
s::SysFilter 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 end
struct BallAndBeam <: PhysicalProcess struct BallAndBeam <: PhysicalProcess
...@@ -96,7 +96,7 @@ bias(p::BallAndBeamSimulator) = 0 ...@@ -96,7 +96,7 @@ bias(p::BallAndBeamSimulator) = 0
function control(p::AbstractBeamOrBallAndBeam, u::AbstractArray) function control(p::AbstractBeamOrBallAndBeam, u::AbstractArray)
length(u) == 1 || error("Process $(typeof(p)) only accepts one control signal, tried to send u=$u.") 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 end
control(p::AbstractBeamOrBallAndBeam, u::Number) = send(p.control,u) control(p::AbstractBeamOrBallAndBeam, u::Number) = send(p.control,u)
control(p::BeamSimulator, u::Number) = p.s(u) control(p::BeamSimulator, u::Number) = p.s(u)
...@@ -104,7 +104,7 @@ control(p::BallAndBeamSimulator, u::Number) = error("Not yet implemented") ...@@ -104,7 +104,7 @@ control(p::BallAndBeamSimulator, u::Number) = error("Not yet implemented")
measure(p::Beam) = read(p.measure) measure(p::Beam) = read(p.measure)
measure(p::BallAndBeam) = [read(p.measure1), read(p.measure2)] 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") measure(p::BallAndBeamSimulator) = error("Not yet implemented")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment