MATLAB Answers


My variables in workspace are updated but not on variables "From Workspace" to the simulink model

Asked by William
on 30 Jan 2012

Hi, dear Matlab users/experts.

I need create model, which able to received data (array of 20 elements) from up hardware interface, example, data is [1 2 3 4 5 6 7 8 9 ... 18 19 20].

This array is goes into a matlab function, which i perform data parsing to map my variables. Example:

byte1 value = 1 (1st element), it is mapped to Var01, and byte2 value = 2 (2nd element) is mapped to Var02 and subsequent variables is mapped in this order.

Following is my matlab function

function [] = my_func(u) global Var01; global Var02; : global Var20;

Var01 = u(1); Var02 = u(2); : Var20 = u(20);

When i run simulation, i can see that Var01, Var02, ... Var20 are updated respectively if the 20 elements of array are changed.

I am doing this is because my variables data order might changes time-to-time, so the array of data is goes to matlab function for data parsing.

Here comes the problem. In the model, i added Var01, 02 ... 20 as "From Workspace (source block)" and put display (or scope) at the point for these Var01, Var02 and etc ("From Workspace block). When running simulation, array is updated, so as variable in Workspace windows in Matlab, but WHY the "From Workspace" (display/scope) data is not updated???

Anyone know how to resolve this data "From Workspace" not updating issue???

Regards, William.


Log in to comment.



3 Answers

Answer by Kaustubha Govind
on 31 Jan 2012

The best solution is to call your MATLAB function in a loop from your Simulink model using the Interpreted MATLAB Function block, so that the Var01, Var02, etc. can be continuously fed into the function, and their outputs routed back to the inputs of your model.

I think the reason that To Workspace blocks don't write the variable immediately it because it is very inefficient for To Workspace/File blocks to write the workspace/disk at every time-step, because these are slow processes than will slow down simulation. My guess is that they maintain a buffer that they write to at every time-step - the data is probably written to the final destination only when the buffer is full.


Log in to comment.

Answer by TAB
on 30 Jan 2012

Variable to be resolved in model using "From Workspace" block must be in time series Array or Structure formate. This means that, they should be defined at fixed time steps. The undefined values are interpolated using other values.

These values are loaded in the model when the simulation is started. So, when the values is changed in the workspace when simulation is running, model will not notice it.


Log in to comment.

Answer by William
on 30 Jan 2012

Hi, Tab.

Thanks for the feedback. So, you mean that even i put array/structure data format with fixed time stamps/steps, and when variables in workspace are updated, the model will also not going to update it???

So, the updated variables in workspace are not going to update to "From Workspace" signal block... So sad.

Anyone has any idea to get the variables update and feedback to the model/system???

  1 Comment

How You are exporting Var01, Var02, ... from model to base workspace?
Are they scalar ?

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!