111111 @test_throws DimensionMismatch evaloutput (linmodel1, zeros (1 ))
112112end
113113
114+ @testset " LinModel real time simulations" begin
115+ linmodel1 = LinModel (tf (2 , [10 , 1 ]), 0.1 )
116+ times1 = zeros (5 )
117+ for i= 1 : 5
118+ times1[i] = savetime! (linmodel1)
119+ updatestate! (linmodel1, [1 ])
120+ periodsleep (linmodel1)
121+ end
122+ @test all (isapprox .(diff (times1[2 : end ]), 0.1 , atol= 0.01 ))
123+ linmodel2 = LinModel (tf (2 , [0.1 , 1 ]), 0.001 )
124+ times2 = zeros (5 )
125+ for i= 1 : 5
126+ times2[i] = savetime! (linmodel2)
127+ updatestate! (linmodel2, [1 ])
128+ periodsleep (linmodel2, true )
129+ end
130+ @test all (isapprox .(diff (times2[2 : end ]), 0.001 , atol= 0.0001 ))
131+ end
132+
114133@testset " NonLinModel construction" begin
115134 linmodel1 = LinModel (sys,Ts,i_u= [1 ,2 ])
116135 f1 (x,u,_) = linmodel1. A* x + linmodel1. Bu* u
274293 updatestate! (linmodel3, u, d)
275294 end
276295 @test all (isapprox .(Ynl, Yl, atol= 1e-6 ))
296+ end
297+
298+ @testset " NonLinModel real time simulations" begin
299+ linmodel1 = LinModel (tf (2 , [10 , 1 ]), 0.1 )
300+ nonlinmodel1 = NonLinModel (
301+ (x,u,_)-> linmodel1. A* x + linmodel1. Bu* u,
302+ (x,_)-> linmodel1. C* x,
303+ linmodel1. Ts, 1 , 1 , 1 , 0 , solver= nothing
304+ )
305+ times1 = zeros (5 )
306+ for i= 1 : 5
307+ times1[i] = savetime! (nonlinmodel1)
308+ updatestate! (nonlinmodel1, [1 ])
309+ periodsleep (nonlinmodel1)
310+ end
311+ @test all (isapprox .(diff (times1[2 : end ]), 0.1 , atol= 0.01 ))
312+ linmodel2 = LinModel (tf (2 , [0.1 , 1 ]), 0.001 )
313+ nonlinmodel2 = NonLinModel (
314+ (x,u,_)-> linmodel2. A* x + linmodel2. Bu* u,
315+ (x,_)-> linmodel2. C* x,
316+ linmodel2. Ts, 1 , 1 , 1 , 0 , solver= nothing
317+ )
318+ times2 = zeros (5 )
319+ for i= 1 : 5
320+ times2[i] = savetime! (nonlinmodel2)
321+ updatestate! (nonlinmodel2, [1 ])
322+ periodsleep (nonlinmodel2, true )
323+ end
324+ @test all (isapprox .(diff (times2[2 : end ]), 0.001 , atol= 0.0001 ))
277325end
0 commit comments