В этом примере показано, как использовать один класс памяти в иерархии модели, чтобы сгенерировать код, который не структурирован для данных одно экземпляра и структурирован для данных мультиэкземпляра. Когда иерархия модели будет содержать одно экземпляр и данные мультиэкземпляра, используйте гибкий класс памяти, чтобы задать настройки для этих двух контекстов вместо того, чтобы создать два класса отдельной системы хранения.
Этот пример использует топ-модель одно экземпляра ex_mdlreftop_dd, который ссылается на модель ex_mdlrefbot_dd мультиэкземпляра три раза. Обе модели совместно используют словарь данных ex_mdlref_dd.sldd. Когда вы задаете класс памяти в словаре разделяемых данных, можно применить класс к элементам данных в обеих моделях.
Откройте модель ex_mdlreftop_dd в качестве примера.
addpath(fullfile(docroot,'toolbox','ecoder','examples')) ex_mdlreftop_dd
Откройте словарь разделяемых данных. На вкладке Modeling нажмите Design> Data Dictionary.
Откройте разделяемый Словарь Embedded Coder. В панели Model Hierarchy Model Explorer расширьте ex_mdlref_dd узел и нажимает Embedded Coder Dictionary. На правой панели нажмите Open Embedded Coder Dictionary.
Чтобы создать класс памяти, нажмите Add.
Для нового класса памяти, в панели Property Inspector, устанавливает эти значения свойств:
Name к MyStorageClass.
Выберите Use different property settings for single-instance and multi-instance data.
Single-instance storage> Storage Type к Unstructured.
Multi-instance storage> Storage Type к Structured.

Когда вы применяете MyStorageClass к элементу данных Словарь Embedded Coder реализует настройки одно экземпляра или настройки мультиэкземпляра в зависимости от типа данных и контекста модели в иерархии модели - ссылки. Рассмотрите реализации для различных настроек в предварительном просмотре псевдокода.
Примените класс памяти к внутренним элементам данных путем определения его как значения по умолчанию словаря. В Словаре Embedded Coder нажмите Configure Defaults. Для строки Signals, states, and internal data, набор Storage Class к MyStorageClass. Нажмите OK.
Поскольку ex_mdlreftop_dd и ex_mdlrefbot_dd совместно используйте словарь ex_mdlref_dd.sldd, обе модели используют MyStorageClass как класс памяти по умолчанию для внутренних данных.
Откройте приложение Embedded Coder для модели ex_mdlreftop_dd.
Сгенерируйте код для модели.
Рассмотрите сгенерированный код для модели, на которую ссылаются. Чтобы открыть модель, на которую ссылаются, в редакторе, дважды кликните блок Model, CounterA. Код образца модели появляется в Представлении кода. В ex_mdlrefbot_dd.h, код образца модели задает структуру класса памяти, в которой он хранит внутренние данные модели, на которую ссылаются.
/* Storage class 'MyStorageClass', for model 'ex_mdlrefbot_dd' */
typedef struct {
real_T PreviousOutput_DSTATE; /* '<Root>/Previous Output' */
} ex_mdlrefbot_dd_MyStorageClass;
/* Real-time Model Data Structure */
struct ex_mdlrefbot_dd_tag_RTM {
const char_T **errorStatus;
ex_mdlrefbot_dd_MyStorageClass *MyStorageClass_ex_mdlrefbot_dd;
};Поскольку модель, на которую ссылаются, является мультиэкземпляром, определение реализует настройки данных мультиэкземпляра MyStorageClass. Код образца модели хранит внутренние данные в структуре ex_mdlrefbot_dd_MyStorageClass.
Перейдите назад топ-модели и рассмотрите сгенерированный код. В ex_mdlreftop_dd.c, код топ-модели задает свои внутренние данные для каждого блока Model путем инстанцирования класса памяти модели, на которую ссылаются, ex_mdlrefbot_dd_MyStorageClass.
/* Storage class 'MyStorageClass' */ ex_mdlrefbot_dd_MdlrefDW ex_mdlreftop_dd_CounterA_InstanceData; ex_mdlrefbot_dd_MdlrefDW ex_mdlreftop_dd_CounterB_InstanceData; ex_mdlrefbot_dd_MdlrefDW ex_mdlreftop_dd_CounterC_InstanceData; /* Storage class 'MyStorageClass' */ ex_mdlrefbot_dd_MyStorageClass MyStorageClass_CounterA; /* Storage class 'MyStorageClass' */ ex_mdlrefbot_dd_MyStorageClass MyStorageClass_CounterB; /* Storage class 'MyStorageClass' */ ex_mdlrefbot_dd_MyStorageClass MyStorageClass_CounterC;
Поскольку топ-модель является одно экземпляром, эти определения реализуют настройки данных одно экземпляра MyStorageClass. Топ-модель также группирует его собственные внутренние данные как автономные переменные при помощи настроек данных одно экземпляра. Код топ-модели не содержит определение структуры для внутренних данных.