Simulink const block referencing changing variable doesn't update during simulation

1 visualizzazione (ultimi 30 giorni)
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.

Risposta accettata

C.J. Harris
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
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')
Istvan
Istvan il 7 Lug 2014
Unfortunately, that didn't work. Since this isn't related to the initial question, so I posted a new one here .

Accedi per commentare.

Più risposte (0)

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!

Translated by