simulink, switch problem

6 次查看(过去 30 天)
aft
aft 2011-7-30
Hi, a little problem i m facing while using simulink. my time step is of 0.025s and i have a switch which says enter into my controller when t > 0.075, meaning that at t=0.1s onwards. Simulink does the simulations at the time values 0, 0.025, 0.05, but then 0.07500000000001 and enters into my controller. WHY ??? I am having an algebraic loop in my system, does it have anything to do with that ? but if i change my switch condition to 0.1 instead of 0.075, no problem.
thanx in advance,
khawaja

回答(3 个)

Fangjun Jiang
Fangjun Jiang 2011-7-30
I am not sure. Maybe you don't need to care about it. It might be floating point number precision thing, such as:
>> (0.025*3)==0.075
ans =
0
>> (0.025*4)==0.1
ans =
1

Prashant Srivastava
For algebraic loops error, you can connect a unit delay block between your input and the output(that you're reusing).

Josco Kester
Josco Kester 2019-1-10
@aft, your problem exists because the duration of the time steps in Simulink unfortunately is NOT exact. This is caused by floating point round-off (see https://blogs.mathworks.com/simulink/2012/02/09/using-discrete-data-as-an-input-to-your-simulink-model/ ).
A work around in your case could be to use t > 0.08 as switch criterium. In any case avoid any exact criterium such as t > n*0.025. How that criterium behaves is NOT determined, because of the floating point round-off error. The criterium t > 0.1 could also give a problem next time...

类别

Help CenterFile Exchange 中查找有关 Discontinuities 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by