Using a C Union datatypes as an input/Output for a S-function on Simulink

13 visualizzazioni (ultimi 30 giorni)
Hello,
I have a C program which uses struct and union defined in a header. What i want to do is use this program in Simulink for that i used the legacy code tool to create a Sfunction but, i still have a problem with the unions which are part of some structures used as input and output of the program and Simulink won't import them. I am asking here if there is any workaround for using Unions with Simulink or if there are exemple available.
If there are available solutions it would help a lot.

Risposta accettata

Mark McBroom
Mark McBroom il 1 Gen 2023
Simulink does not support unions. However, you can work around this by treating the union as a Simulink.Bus data object with DataScope of "Imported" and Header file is the name of the hand-written header file defining the structs and unions. https://www.mathworks.com/help/simulink/slref/simulink.bus.html# This approach treats each field of the union as different memory locations during simulation and therefore is only valid if the SImulink model reads and writes to just one of the union fields. If you attempt to write to one union field and then read from another, you will not get the expected result during simulation.
Hope this helps
Mark.

Più risposte (0)

Categorie

Scopri di più su Simulink Functions in Help Center e File Exchange

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by