Перечисления в словаре данных

Словарь данных Simulink® постоянно хранит данные модели включая переменные MATLAB®, объекты данных и типы данных включая перечислимые типы. Классы перечисления задали в MATLAB по условию, словарь принадлежит тому словарю и не может быть очищен при помощи Simulink.clearIntEnumType. Когда вы закрываете словарь данных, словарь очищает классы перечисления, которыми он владеет. Если экземпляр класса перечисления существует, когда вы закрываете словарь, тот класс перечисления не очищен, и вы становитесь владельцем класса. Как владелец класса, можно затем найти или очистить класс при помощи Simulink.findIntEnumType и Simulink.clearIntEnumType. Для основной информации о словарях данных смотрите то, Что Словарь Данных?.

Переместите перечислимые типы в словарь данных

В этом примере показано, как переместить перечислимые типы, которые используются моделью в словарь данных.

Импортируйте данные проектирования

  1. Откройте модель, которая использует перечислимые типы для данных проектирования или для блоков в модели.

  2. В Редакторе Simulink, на вкладке Modeling, под Design, нажимают Link to Data Dictionary.

  3. В диалоговом окне Model Properties нажмите New, чтобы создать словарь данных.

  4. Назовите словарь данных, сохраните его и нажмите Apply.

  5. Нажмите Migrate data.

  6. Нажмите Migrate в ответ на сообщение о копировании переменных, на которые ссылаются.

  7. Simulink сообщает о перечислимых типах, которые не были импортированы в словарь данных.

  8. Нажмите OK.

    Уведомление появляется в Редакторе Simulink, сообщая, что ваша модель теперь соединена со словарем данных.

Импортируйте перечислимые типы

Импортируйте определения перечислимых типов только после того, как вы импортируете все данные проектирования, которые создавали использование типов. Когда вы импортируете перечислимые типы к словарю данных, Simulink отключает файлы MATLAB или P-файлы, которые содержат определения типа, вызывая переменные, которые остаются в базовом рабочем пространстве MATLAB, чтобы потерять их определения.

  1. В командной строке MATLAB получите имена перечислимых типов, которые используются в блоках модели.

    % Find all variables and enumerated types used in model blocks
    usedTypesVars = Simulink.findVars('EnumsReporting','IncludeEnumTypes',true);
    % Here, EnumsReporting is the name of the model and
    % usedTypesVars is an array of Simulink.VariableUsage objects
    
    % Find indices of enumerated types that are defined by MATLAB files or P-files
    enumTypesFile = strcmp({usedTypesVars.SourceType},'MATLAB file');
    
    % Find indices of enumerated types that are defined using the function 
    % Simulink.defineIntEnumType
    enumTypesDynamic = strcmp({usedTypesVars.SourceType},'dynamic class');
    
    % In one array, represent indices of both kinds of enumerated types
    enumTypesIndex = enumTypesFile | enumTypesDynamic;
    
    % Use logical indexing to return the names of used enumerated types
    enumTypeNames = {usedTypesVars(enumTypesIndex).Name}'
    enumTypeNames = 
    
        'dEnum1'
        'dEnum10'
        'dEnum2'
        'dEnum3'
        'dEnum4'
        'dEnum5'
        'dEnum6'
        'dEnum9'
  2. Откройте словарь данных и представляйте его Simulink.data.Dictionary объект.

    ddConnection = Simulink.data.dictionary.open('myEnumsDD.sldd')
    ddConnection = 
    
      Dictionary with properties:
    
              DataSources: {0x1 cell}
        HasUnsavedChanges: 0
               NumberOfEntries: 3
    

  3. Используйте importEnumTypes метод, чтобы импортировать перечислимые типы, которые используются блоками в модели. Метод сохраняет изменения, внесенные в целевой словарь, поэтому прежде чем вы будете использовать метод, подтвердите, что несохраненные изменения приемлемы.

    [successfulMigrations, unsuccessfulMigrations] = ...
    importEnumTypes(ddConnection,enumTypeNames)
    successfulMigrations = 
    
    1x6 struct array with fields:
    
        className
        renamedFiles
    
    
    unsuccessfulMigrations = 
    
    1x2 struct array with fields:
    
        className
        reasons
    Когда перечислимые типы импортируются, importEnumTypes переименовывает перечислимый файл определения класса путем добавления .save к имени файла. Например, если исходное перечислимое определение класса называют Enum1.m, Simulink переименовал файл как Enum1.m.save.

    Структура unsuccessfulMigrations перечислимые типы отчетов, которые не перемещаются. В этом примере два экземпляра перечислимого типа заданы в рабочем пространстве модели и могут быть импортированы после закрытия модели. Закройте модель, чтобы импортировать эти перечислимые типы.

  4. Откройте словарь, чтобы просмотреть перемещенные перечислимые типы.

Управляйте перечислениями в словаре данных

Эти примеры показывают, как работать с существующими перечислениями в словаре данных.

Переименуйте определение перечислимого типа

  1. В словаре данных создайте копию перечислимого типа и переименуйте копию вместо этого.

  2. Найдите объекты перечисления используемыми вашей моделью, которые выведены из типа со старым названием.

  3. Замените эти объекты на выведенных из переименованного типа.

  4. Удалите тип со старым названием.

Переименуйте члены перечисления

Используйте один из следующих подходов.

  • Выберите перечисление в рамках словаря и переименуйте один или несколько членов перечисления.

  • Если ваши члены перечисления моделей - ссылок, измените эти ссылки, чтобы совпадать с переименованным членом.

Удалите члены перечисления

  1. Найдите ссылки в своей модели члену перечисления, который вы хотите удалить.

  2. Замените эти ссылки на альтернативный член.

  3. Удалите исходный член из перечисления.

Измените базовое значение члена перечисления

Можно изменить значения членов перечисления, когда вы представляете эти значения как переменные MATLAB или при помощи Value поле Simulink.Parameter объекты.

  1. Найдите ссылки в своей модели члену перечисления, значение которого вы хотите изменить.

  2. Обратите внимание на эти ссылки.

  3. Измените значение члена перечисления.

  4. Вручную обновите ссылки на член перечисления в вашей модели.

Удалите перечислимые типы из словаря данных

Если вы решаете, что больше не хотите задать перечислимый тип в словаре, выполните эти шаги.

  1. Вручную задайте перечислимый тип данных в MATLAB. Смотрите Использование Перечислимые Данные в Моделях Simulink.

  2. Удалите экземпляры класса перечисления. Если существует экземпляр существующего класса перечисления, когда вы удаляете перечислимый тип данных из словаря, словарь выпускает управление класса перечисления, но класс остается в памяти как динамический класс перечисления. Можно затем найти или очистить класс при помощи Simulink.findIntEnumType и Simulink.clearIntEnumType.

  3. Удалите перечислимый тип из словаря.

Смотрите также

Похожие темы