From ffba76e231bb70f48ba20ca677422835fd57dd40 Mon Sep 17 00:00:00 2001 From: Jacob Wikmark <jacob@wikmark.se> Date: Wed, 7 Mar 2018 18:52:11 +0100 Subject: [PATCH] cosmetic edits --- src/DoubleTank.jl | 11 ++++------ src/tankdemo.jl | 2 +- src/tanklabgui.jl | 51 +++++++++++++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/DoubleTank.jl b/src/DoubleTank.jl index 04e5113..c65da02 100644 --- a/src/DoubleTank.jl +++ b/src/DoubleTank.jl @@ -28,7 +28,7 @@ function LabConnections.Computer.send(n::Void, a::Number) nothing end -@with_kw mutable struct PID#{T<:AbstractProcess} +@with_kw mutable struct PID b::Float64 = 1.0 K::Float64 = 1.0 h::Float64 = 0.05 @@ -36,21 +36,15 @@ end Td::Float64 = 1.0 y_old::Float64 = 0.51 N::Int64 = 10 - #process::T P::Float64 = 0 I::Float64 = 0 D::Float64 = 0 Tot::Float64 = 0 end -#function PID(b, K, h, Ti, Td, y_old, N, process) - #PID(b, K, h, Ti, Td, y_old, N, process, 0.0, 0.0, 0.0, 0.0) function PID(b, K, h, Ti, Td, y_old, N) PID(b, K, h, Ti, Td, y_old, N, 0.0, 0.0, 0.0, 0.0) end -#function PID() - #PID(process = process) -#end function (p::PID)(r, y, onv=(1,1,1)) #The PID should operate entirely on normalized values @@ -214,6 +208,9 @@ function calibrate(p::DoubleTank) nothing end +function calibrate(p::DoubleTankSimulator) + print("Simulator can't be calibrated!\n") +end function measure(p::DoubleTank) #This should give an array of two values in the range [0,1] diff --git a/src/tankdemo.jl b/src/tankdemo.jl index 3b7c7bf..0511ef6 100644 --- a/src/tankdemo.jl +++ b/src/tankdemo.jl @@ -46,4 +46,4 @@ end g1, r1, tp = makegui(R) -webio_serve(page("/", r1), 8011) +webio_serve(page("/", r1), 8013) diff --git a/src/tanklabgui.jl b/src/tanklabgui.jl index 7555e90..48d2d56 100644 --- a/src/tanklabgui.jl +++ b/src/tanklabgui.jl @@ -5,9 +5,9 @@ function makegui(P, plottingframerate = 10, guiframerate = 10) boundslower = (-2,2) maxplotlength = 800 gui = GUI() - ptfr = 3.8 #the accuracy here isn't very important + ptfr = 3.8 #pump to flow ratio, approximate - #This allows external access to the r value + #This allows external access to the r value, the rbox string is parsed into this value rcont, dummygraphic1 = @construct for r in slider(0.0:0.01:1.0) Node(:div) @@ -17,15 +17,18 @@ function makegui(P, plottingframerate = 10, guiframerate = 10) w0, dummygraphic2 = @construct for u in slider(0:0.01:1, label=" um"), run in button("Run"), #This should only exist in the simulated version - K in slider(0:50, label="K"), - Ti in slider(0:50, label="Ti"), - Td in slider(0:50, label="Td"), + cali in button("Calibrate"), + K in slider(0:0.1:50, label="K"), + Ti in slider(0:0.1:50, label="Ti"), + Td in slider(0:0.1:50, label="Td"), mode in togglebuttons(["Manual", "Automatic"], label=""), tankno in togglebuttons(["Upper", "Lower"], label=""), pOn in togglebuttons(["On", "Off"], label="P"), iOn in togglebuttons(["On", "Off"], label="I"), dOn in togglebuttons(["On", "Off"], label="D"), - rbox in textbox(" r ") + rbox in textbox(" r "), + expcsv in button("Export Data") + if !endswith(rbox, ".") && rbox != "0" try obs(r).val = parse(Float64, rbox) @@ -76,7 +79,12 @@ function makegui(P, plottingframerate = 10, guiframerate = 10) end end #-----------------------------------------------# - + # And this should only exist in the real version# + on(obs(cali)) do val + calibrate(P) + end + #-----------------------------------------------# + LabGUI.set!(gui, widgets) add!(gui, rcont) add!(gui, w0) @@ -89,22 +97,27 @@ function makegui(P, plottingframerate = 10, guiframerate = 10) p_element = make_grid(2,1) - p_element = setindex_(p_element, dom"div"(widgets[:pOn]), 1, 1) - p_element = setindex_(p_element, dom"div"(widgets[:K]), 2, 1) + p_element = setindex_(p_element, dom"div"(gui.widgets[:pOn]), 1, 1) + p_element = setindex_(p_element, dom"div"(gui.widgets[:K]), 2, 1) i_element = make_grid(2,1) - i_element = setindex_(i_element, dom"div"(widgets[:iOn]), 1, 1) + i_element = setindex_(i_element, dom"div"(gui.widgets[:iOn]), 1, 1) i_element = setindex_(i_element, dom"div"(widgets[:Ti]), 2, 1) d_element = make_grid(2,1) - d_element = setindex_(d_element, dom"div"(widgets[:dOn]), 1, 1) - d_element = setindex_(d_element, dom"div"(widgets[:Td]), 2, 1) - - settings_element = setindex_(settings_element, dom"div"(widgets[:run]), 1, 1) - settings_element = setindex_(settings_element, dom"div"(widgets[:tankno]), 2, 1) - settings_element = setindex_(settings_element, dom"div"(widgets[:mode]), 3, 1) - settings_element = setindex_(settings_element, dom"div"(widgets[:rbox]), 4, 1) - settings_element = setindex_(settings_element, dom"div"(widgets[:u]), 5, 1) + d_element = setindex_(d_element, dom"div"(gui.widgets[:dOn]), 1, 1) + d_element = setindex_(d_element, dom"div"(gui.widgets[:Td]), 2, 1) + + settings_element = setindex_(settings_element, dom"div"(gui.widgets[:run]), 1, 1) + settings_element = setindex_(settings_element, dom"div"(gui.widgets[:tankno]), 2, 1) + settings_element = setindex_(settings_element, dom"div"(gui.widgets[:mode]), 3, 1) + settings_element = setindex_(settings_element, dom"div"(gui.widgets[:rbox]), 4, 1) + settings_element = setindex_(settings_element, dom"div"(gui.widgets[:u]), 5, 1) + + io_element = Node(:div, attributes=Dict("display"=>"inlineBlock"), + gui.widgets[:run], + gui.widgets[:cali], + gui.widgets[:expcsv]) corner_element = setindex_(corner_element, settings_element, 1, 1) corner_element = setindex_(corner_element, p_element, 1, 2) @@ -114,7 +127,7 @@ function makegui(P, plottingframerate = 10, guiframerate = 10) left_element = setindex_(left_element, corner_element, 1, 1) left_element = setindex_(left_element, graphic2, 2, 1) layout = setindex_(layout, left_element, 1, 1) - layout = setindex_(layout, Node(:div, graphic1, dummygraphic1, dummygraphic2), 1, 2) + layout = setindex_(layout, Node(:div, graphic1, dummygraphic1, dummygraphic2, io_element), 1, 2) LabGUI.set!(gui, layout) -- GitLab