How to use signal name as variable name in generated code

42 visualizaciones (últimos 30 días)
Andrea Carignano
Andrea Carignano el 17 de Dic. de 2025 a las 22:37
Editada: Walter Roberson el 20 de Dic. de 2025 a las 8:49
I have a simple model with an atomic subsystem block.
the signal after the subsystem "Function" is called "x" in the model.
The generated code for the step function is
void untitled1_step(void)
{
real32_T rtb_Gain;
/* Outputs for Atomic SubSystem: '<Root>/Function' */
/* Inport: '<Root>/In1' */
rtb_Gain = untitled1_Function(untitled1_U.In1);
/* End of Outputs for SubSystem: '<Root>/Function' */
/* Outport: '<Root>/Out2' incorporates:
* Bias: '<Root>/Bias'
*/
untitled1_Y.Out2 = rtb_Gain + 2.0F;
}
Embedded coder generate rtb_Gain variable.
However I would like to generate the x variable instead, so that the code became:
void untitled1_step(void)
{
real32_T rtb_Gain;
/* Outputs for Atomic SubSystem: '<Root>/Function' */
/* Inport: '<Root>/In1' */
x = untitled1_Function(untitled1_U.In1);
/* End of Outputs for SubSystem: '<Root>/Function' */
/* Outport: '<Root>/Out2' incorporates:
* Bias: '<Root>/Bias'
*/
untitled1_Y.Out2 = x + 2.0F;
}
Is there any general setting that I can activate to do this?
  2 comentarios
Walter Roberson
Walter Roberson el 20 de Dic. de 2025 a las 4:38
If you assign to x, why are you later using rtb_Gain + 2.0F instead of x + 2.0F ?
Andrea Carignano
Andrea Carignano el 20 de Dic. de 2025 a las 6:59

It is a mistake, I correct the line, thank you

Iniciar sesión para comentar.

Respuestas (1)

Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2025 a las 19:34
Double click the signal line and set the signal name as 'x'. That might be sufficient for your need.
Currently, the 'x' shown in your model looks like an annotation, not the signal name.
For more control, select the signal line, right click, select "Property" and set the signal line property.
One of the ways is to check "Name must resolve to signal object" and create a Simulink.Signal object in base workspace. Check the document for Simulink.Signal to learn more.
x=Simulink.Signal
x =
Signal with properties: Dimensions: -1 DimensionsMode: 'auto' Complexity: 'auto' SampleTime: -1 InitialValue: '' CoderInfo: [1×1 Simulink.CoderInfo] Description: '' DataType: 'auto' Min: [] Max: [] Unit: ''
  1 comentario
Andrea Carignano
Andrea Carignano el 19 de Dic. de 2025 a las 21:47
Editada: Andrea Carignano el 19 de Dic. de 2025 a las 21:48

No, it is not correct, the signal name in my model is not an annotation, but the signal name. Moreover setting a simulink signal in the base workspace is not a robust solution. I need a general setting of the model. I need that every time I specify a signal name, embedded coder write this variable in the code. I do not understand the reason why this is not the default in embedded coder. In my opinion it would be the most intuitive way to get a readable code.

Iniciar sesión para comentar.

Categorías

Más información sobre Deployment, Integration, and Supported Hardware en Help Center y File Exchange.

Productos


Versión

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by