Simulink const block referencing changing variable doesn't update during simulation
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Istvan
am 7 Jul. 2014
Kommentiert: Istvan
am 7 Jul. 2014
In my Simulink diagram, I have a const block that references a global variable (lets call it myVar). I have an event handler that is called every clock tick (looks for a change in a clock block's output). That handler looks like this:
function speedRampUpUTManager(block, eventdata)
simTime = block.OutputPort(1).Data;
global myVar;
if(simTime == 10)
myVar = 1500; //myVar is initialized to 1700
end
disp('myVar:');
disp(myVar);
end
Sure enough, during a simulation the disp shows 1700, then starts showing 1500. However, when I look at the scope attached to the const block with the Simulation Data Inspector, the value is 1700 the whole time.
My const block has the following settings:
- Const Value: myVar
- Interpret vector parameters as 1-D: unchecked
- Sampling mode: Sample Based
- Sample Time: -1
Perhaps one workaround might be:
set_param(constBlock, 'Value', 'myVar')
But I'd like to avoid that if possible.
Regards, Istvan.
0 Kommentare
Akzeptierte Antwort
C.J. Harris
am 7 Jul. 2014
Unfortunately unless you call 'set_param' the value of the variable will not be re-evaluated. Therefore calling 'set_param' is the way to do this. I would however recommend you find a way of doing this in Simulink instead, either via switches, or Stateflow if necessary, thereby avoiding the need for an event handler altogether.
3 Kommentare
C.J. Harris
am 7 Jul. 2014
I've not actually tried this, so I'm just speculating here, by maybe it is necessary to also call the 'update' method:
set_param(bdroot,'SimulationCommand','update')
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Event Functions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!