From 309b365ac1242db50c4b3e9b3a40209288723149 Mon Sep 17 00:00:00 2001 From: Fredrik Bagge Carlson <cont-frb@ulund.org> Date: Thu, 24 Aug 2017 22:20:28 +0200 Subject: [PATCH] Update FRAlab --- src/FRTN35_lab1.jl | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/FRTN35_lab1.jl b/src/FRTN35_lab1.jl index 4134330..623de70 100644 --- a/src/FRTN35_lab1.jl +++ b/src/FRTN35_lab1.jl @@ -1,8 +1,8 @@ using BallAndBeam, ControlSystems, JLD, LabProcesses # @load "workspace.jld" # Run this command to restore a saved workspace -bias = 0.01 # Change this if your process drifts over time -P = LabProcesses.Beam(0.01) # Replace for BeamSimulator to run simulations +Bias = 0.01 # Change this if your process drifts over time +P = LabProcesses.Beamr(0.01, Bias) # Replace for BeamSimulator(0.01) to run simulations h = sampletime(P) settling_time = 1 @@ -55,20 +55,25 @@ plot([y u r], lab = ["y" "u" "r"]) # If you have time, estimate ARX model ===================================================== prbs = PRBSGenerator() -duration = 10 -y = zeros(0:h:duration) -u = zeros(0:h:duration) -LabProcesses.initialize(P) -for (i,t) = enumerate(0:h:duration) - y[i] = measure(P) - u[i] = prbs()-0.5 #+ 0.5*u[max(1,i-1)] - control(P, u[i]) +function prbs_experiment(;amplitude = 1, duration = 10) + y = zeros(0:h:duration) + u = zeros(0:h:duration) + LabProcesses.initialize(P) + for (i,t) = enumerate(0:h:duration) + @periodically h begin + y[i] = measure(P) + u[i] = amplitude*(prbs()-0.5) + control(P, u[i]) + end + end + LabProcesses.finalize(P) + y,u,times end -LabProcesses.finalize(P) +y,u = prbs_experiment(duration = 10, amplitude = 1) plot([u y]) -na = 6 # Order of A polynomial -nb = 5 # Order of B polynomial +na = 3 # Order of A polynomial +nb = 2 # Order of B polynomial arxtf = arx(h, y, u, na, nb) # Estimate trasfer function with ARX method mag, phase, ω = bode(arxtf, logspace(-1,3,200)) -- GitLab