Можно использовать блоки In Bus Element для загрузки внешних входных данных для шины. Использование блоков In Bus Element позволяет гибко проектировать и реализация внешние интерфейсы для шин. Можно использовать блок In Bus Element для загрузки данных для элемента массива шины или для загрузки данных для всей шины. Можно также использовать несколько блоков In Bus Element для выбора того же элемента шины.
В этом примере показано, как использовать блоки In Bus Element для загрузки входных данных для элементов шины. Чтобы загрузить данные для всей шины с помощью блока In Bus Element, необходимо задать тип данных для блока In Bus Element с помощью Simulink.Bus
объект.
Откройте ex_load_inbuselement
модель.
open_system('ex_load_inbuselement.slx')
Один или несколько блоков In Bus Element могут задать порт в модели. The ex_load_inbuselement
модель имеет один порт, InBus
, заданный тремя блоками In Bus Element. Метка для каждого блока In Bus Element указывает элемент шины, выбранный блоком. The InBus
порт соответствует шине, содержащей вложенную шину, a
, с сигналами x
и y
и индивидуальный сигнал, b
.
Используйте параметр Input на панели Data Import/Export, чтобы задать данные рабочей области для загрузки в качестве входов симуляции для порта в модели. Параметр Input для ex_load_inbuselement
модель загружает переменную struct1
, который сопоставляется с портом в соответствии с номером порта, заданным в Элемент In Bus диалогового окна блока.
Порты, которые загружают данные шины, принимают структуры, состоящие из отдельных timeseries
, timetable
, и matlab.io.datastore.SimulationDatastore
объекты. Иерархия структуры должна совпадать с иерархией шины. Порты, которые используют блоки In Bus Element для выбора элементов шины, допускают частичную спецификацию и сверхспецификацию данных.
Этот пример создает структуру с помощью трех timeseries
сигналы, которые соответствуют синусоиде, строке и константе.
time = linspace(0,10,11); sineData = sin(time); constData = 3*ones(11,1); lineData = linspace(0,10,11); tsSine = timeseries(sineData,time); tsConst = timeseries(constData,time); tsLine = timeseries(lineData,time);
Создайте структуру, struct1
, для предоставления входных данных для порта в модели. Имена полей структуры должны совпадать с именами элементов шины.
struct1.a.x = tsConst; struct1.a.y = tsLine; struct1.b = tsSine;
Данные, созданные в предыдущем разделе, полностью задают данные для сигналов, выбранных блоками In Bus Element в модели. Симулируйте модель и наблюдайте сигналы на блоках Dashboard Scope.
Когда вы используете блоки In Bus Element для выбора элементов шины, можно частично задать данные с помощью структуры, которая не включает один или несколько выбранных элементов. Элементы без данных, определенных в структуре, используют наземные значения сигналов для симуляции.
Например, отредактируйте метку для блока In Bus Element, который выбирает элемент InBus.a.y
так, что блок In Bus Element выбирает InBus.a.z
. Структура, которая преобразуется в InBus
порт не содержит поле для z
во вложенной структуре, a
. Когда вы моделируете модель, не изменяя структуру, Возможности панели мониторинга показывают заземление для InBus.a.z
.
Измените блок порта In Bus Element, который выбирает InBus.a.z
назад, чтобы выбрать InBus.a.y
.
Когда вы используете блоки In Bus Element для выбора элементов шины, можно переопределить данные для порта. Переопределенные входные данные содержат сигналы, которые не выбираются ни одним из блоков In Bus Element в модели.
Например, измените метку для блока In Bus Element, который выбирает InBus.a.y
для выбора InBus.b
. Теперь ни один из блоков In Bus Element не выбирает InBus.a.y
, в то время как структура все еще содержит данные для этого элемента.
Симулируйте модель и наблюдайте сигналы на блоках Dashboard Scope.