Simulink const block referencing changing variable doesn't update during simulation
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
C.J. Harris
il 7 Lug 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 Commenti
C.J. Harris
il 7 Lug 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')
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Simulink Functions in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!