"duration" function in stateflow using fixed-point datatype for time
Mostrar comentarios más antiguos
I created an mpt.parameter for a time variable. Since time is in ms, I assigned data type as fixdt(0,16,0.001,0)
time_s = mpt.Parameter;
time_s.CoderInfo.Alias = 'Ts';
time_s.Description = 'Time in ms';
time_s.DataType = 'fixdt(0,16,0.001,0)';
time_s.Unit = 's';
time_s.Value = 0.5;
Now in one of my stateflow transition between states, I need to use this time variable. i.e: [duration(t > 20) > time_s]
Matlab thowrs error as below:
In fi > non-fi, or non-fi > fi, the non-fi must be a constant. Transition '[durat...time_s]'"duration(t > 20) > time_s"
Component:Stateflow | Category:Coder error
Error while generating code for chart Chart.
ps: I need fixdt(0,16,0.001,0) since I need to generate fixed point code and cannot afford using single or double or any Integer type.
Is there a workaround for this? Thanks in advance

Respuestas (1)
't' is a reserved word of the double data type. Therefore, you cannot set attributes such as data type.
I thought that using the after function was one of the workarounds. I have attached a sample model.
4 comentarios
Renish Ramegowda
el 27 de En. de 2020
You can avoid errors by not using absolute time in the temporal operator inside the Chart block.
Or could you consider using fi objects?
% I have modified the answer.
Renish Ramegowda
el 27 de En. de 2020
stozaki
el 30 de En. de 2020
Temporal Logic,
When using Event-Based (tick/CLK): Positive integer
When using Absolute-Time (sec/msec): It is just a positive number, that is, a double type.
So, My model uses Event-Based Temporal Logic. This is a workaround.
Categorías
Más información sobre Simulink Functions en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!