How to convert a struct into a bus

308 ビュー (過去 30 日間)
Nicolò Binda
Nicolò Binda 2020 年 4 月 22 日
編集済み: Christian 2024 年 1 月 9 日
Hi
I need to create a bus for simulink, and to avoid to do it manually i generated a struct usingi different for cycles
Now i have a struct that conains simple values and other struct.
es=
car.id=1
car.engine.pistons.compression_ring.maintenance_time
car.engine.pistons.compression_ring.maintenance_cost
car.engine.pistons.oil_control_ring
car.engine.bearings
car.body.door
ecc...
Now i need to trasform this struct into a bus object but i really can't find how
I find a lot of solution on matlab like:
struct2bus and others like Simulink.Bus.cellToObject(busCell) without any luck
or also this one:
thanks

採用された回答

Daniel Luder
Daniel Luder 2020 年 4 月 22 日
For your problem use the following lines:
% Create Model Struct
car.id = 1;
car.engine.pistons.compression_ring.maintenance_time = 2;
car.engine.pistons.compression_ring.maintenance_cost = 3;
car.engine.pistons.oil_control_ring = 4;
car.engine.bearings = 5;
car.body.door = 6;
% Create Estimation Data Bus for Simulink Model
car_bus_info = Simulink.Bus.createObject(car);
car_bus = evalin('base', car_bus_info.busName);
In Simulink use a constant block and define the constant value as car. Under Signal Attributes --> Output data dype define Bus: car_bus.
I hope that solves your problem
  11 件のコメント
Martin Ryba
Martin Ryba 2023 年 8 月 7 日
Hi Nicolo, the way you can populate it is by using a Constant block to feed your structure into a port with that bus definition (at least that worked for me). I put similar code to define and populate the struct, and invoke the Simulink.Bus.createObject into a initialization script that is the PostLoadFcn callback of the top level model.
Christian
Christian 2024 年 1 月 9 日
編集済み: Christian 2024 年 1 月 9 日
Great solution, thank you.
You have to be careful, it does not work if the struct contains char. Matlab fails to provide a proper error message.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeComposite Interfaces についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by