Различные элементы в шинах

Создайте шины с различными условиями

В этом примере показано, как создать сигналы шины с элементами, имеющими различные различные условия. Эта модель имеет два сигнала (‘b’), которые объединены, чтобы создать сигнал шины. Эти два сигнала имеют различные различные условия, V == 1 и W == 1.

Селектор шины питается двумя сигналами, имеющими два различных различных условия (V == 1 и W == 1). Когда этот сигнал шины подан в селектор шины и когда вы выбираете отдельные сигналы из шины, различное условие также выбрано.

Примечание

Различные поддержки шины с помощью портов Composite в качестве портов ввода и вывода.

Чтобы видеть завершенную модель, откройте slexVariantBus модель.

Различное распространение условия с шиной

Блок Variant Source может принять или виртуальные или невиртуальные входные параметры шины.

Рассмотрите эту модель.

Шина создается с различными условиями V = 1 и W = 1. Когда условия V и W распространены через шину и когда отдельные элементы выбраны из шины, условия также выбраны.

Генерация кода

Можно сгенерировать код для модели. Для этого на вкладке Apps панели инструментов, нажмите Embedded Coder, затем на вкладке C Code, нажмите Build. Для получения дополнительной информации о конфигурировании модели, чтобы сгенерировать код, смотрите, Готовят Содержащую Вариант Модель к Генерации кода.

При генерации кода с условными выражениями препроцессора типы шины и иерархии всех входных параметров шины должны быть тем же самым.

Виртуальное и невиртуальное поведение шины

Виртуальные шины обеспечивают самый простой подход для использования шин, чтобы уменьшать помеху сигнала в блок-схеме. Невиртуальные компоненты моделирования поддержки шин (такие как S-функции или блоки MATLAB Function), которые требуют явным образом заданных интерфейсов. Нет никакого изменения в поведении распространения различных условий, когда различные условия распространены через виртуальную или невиртуальную шину.

Код, сгенерированный для виртуальной шины, как показано ниже.

/* Block states (default storage) for system '<Root>' */
typedef struct {

#if V == 1

real_T UnitDelay_1_DSTATE;           /* '<Root>/Unit Delay' */

#define D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS
#endif                                 /* V == 1 */
#if W == 1

int32_T UnitDelay_2_DSTATE;          /* '<Root>/Unit Delay' */
	
#define D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS
#endif                                 /* W == 1 */
	
#ifndef D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS
	
char _rt_unused;

#endif	
} D_Work_ex_bus_var_cond;

Код, сгенерированный для невиртуальной шины, как показано ниже.

/* Block states (default storage) for system '<Root>' */
typedef struct {
	
#if V == 1 || W == 1

myBus UnitDelay_DSTATE;              /* '<Root>/Unit Delay' */

#define D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS
#endif                                 /* V == 1 || W == 1 */

#ifndef D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS

char _rt_unused;

#endif
	
} D_Work_ex_bus_var_cond;
	

У вас должен быть связанный объект шины в шине, которая обеспечивает свойства, о которых сигнализирует использование Simulink®, чтобы подтвердить шину. Для получения дополнительной информации об объектах шины смотрите Specify Bus Properties с Simulink. Соедините шиной Объекты. Объект шины, используемый в шине, является безусловным, и это генерирует неосторожный код как показано ниже.

typedef struct {
real_T a;
int32_T b;
} myBus;

Различная шина с блоком Model

Рассмотрите эту модель, содержащую блок Model.

Эта модель имеет два сигнала (‘b’), которые имеют различные различные условия, V == 1 и V == 2.

От блока Model селектор шины питается два сигнала, имеющие два различных различных условия (V == 1 и V == 2). Когда вы выбираете отдельные сигналы из шины, различные условия также выбраны.

Известные ограничения

  • Корневые порты элемента шины не поддержаны с различными элементами.

  • Объекты шины не поддерживают различные элементы.

  • Логгирование состояния не поддержано для блока (например, Unit Delay), который берет в шине, в которой удалены некоторые элементы.

Похожие темы