Skip to content
Snippets Groups Projects
Select Git revision
  • 86ce477649464d8579ed92ea5829d3ffe8b25cc1
  • master default
  • multipleinheritance
3 results

P1HasInput.html

Blame
  • utilities.jl 902 B
    export @periodically, init_sysfilter, sysfilter!
    
    """
    	@periodically(h, body)
    Ensures that the body is run with an interval of `h >= 0.001` seconds.
    """
    macro periodically(h, body)
    	quote
    		local start_time = time()
    		$(esc(body))
    		local execution_time = time()-start_time
    		sleep(max(0,$(esc(h))-execution_time))
    	end
    end
    
    """
    	state = init_sysfilter(sys::StateSpace)
    Use together with [`sysfilter!`](@ref)
    """
    function init_sysfilter(sys::StateSpace)
     	zeros(sys.nx,1)
    end
    
    """
    	output = sysfilter!(state, sys::StateSpace, input)
    Returns the filtered output `y` in `y = Cx+Du, x'=Ax+Bu`
    
    This function is used to implement control loops where a signal is filtered through a
    dynamical system, i.e., `U(z) = C(z)E(z)`. Initialize `state` using [`init_sysfilter`](@ref).
    """
    function sysfilter!(state, sys::StateSpace, input)
    	state .= sys.A*state + sys.B*input
    	output = sys.C*state + sys.D*input
    end