Используйте CDFX-файлы со словарем данных Simulink

В этом примере показано, как хранить калибровочные данные из CDFX-файла ASAM в словаре данных и использовать эти значения в качестве параметров к модели Simulink.

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

Импортируйте калибровочные данные с помощью cdfx функция.

cdfxObj = cdfx("CDFXExampleFile.cdfx")
cdfxObj = 
  CDFX with properties:

       Name: "CDFXExampleFile.cdfx"
       Path: "/mathworks/home/rollinb/Documents/MATLAB/Examples/vnt-ex73237310-20190405222527/CDFXExampleFile.cdfx"
    Version: "CDF20"

Создайте и заполните словарь данных с калибровочными данными

Используйте getValue извлекать желаемые параметры в рабочее пространство MATLAB.

dictName = "CDFXExampleDD.sldd"
dictName = 
"CDFXExampleDD.sldd"

Проверяйте, находится ли словарь уже в рабочей папке.

if isfile(dictName)
    % If data dictionary exists, open it.
    dDict = Simulink.data.dictionary.open(dictName)
else
    % If dictionary does not exist, create it and populate with CDFX data.
    dDict = Simulink.data.dictionary.create(dictName)
    ddSection = getSection(dDict, "Design Data")
    
    addEntry(ddSection, "gainParam", getValue(cdfxObj, "ASAM.C.SCALAR.GAIN"))
    addEntry(ddSection, "mapParam", getValue(cdfxObj, "ASAM.C.MAP"))
end
dDict = 
  Dictionary with properties:

                    DataSources: {0×1 cell}
       HasAccessToBaseWorkspace: 0
    EnableAccessToBaseWorkspace: 0
              HasUnsavedChanges: 0
                NumberOfEntries: 2

Отобразите содержимое словаря данных.

listEntry(dDict)
  Section       Name        Status   DataSource           LastModified       LastModifiedBy   Class    

  Design Data   gainParam            CDFXExampleDD.sldd   2019-04-05 22:33   rollinb          double   
  Design Data   mapParam             CDFXExampleDD.sldd   2019-04-05 22:33   rollinb          struct   

Соедините словарь данных с моделью Simulink

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

open_system("CDFXSLDDModel.slx");
cdfxMdl = gcs
cdfxMdl = 
'CDFXSLDDModel'
set_param(gcs, "DataDictionary", dictName)

Мы можем теперь закрыть связь со словарем данных.

close(dDict)

Модель усиления поиска

Эта модель содержит:

  • Блок двумерной интерполяционной таблицы, чтобы представлять ASAM.C.MAP параметр из CDFX-файла. Поле "Table data" представляет физическое значение экземпляра, и поля "Breakpoint" представляют физические значения осей.

  • Получите блок, чтобы представлять ASAM.C.SCALAR.GAIN параметр из CDFX-файла.

  • С блоком Workspace, чтобы регистрировать данные моделирования.

Индексация логической подсистемы

Индексирующая Логическая подсистема использует физические значения осей ASAM.C.MAP параметр, наряду с маршрутизацией сигнала блокируется и триггируемая подсистема, чтобы произвести все допустимые комбинации индексов поиска. Эта настройка может быть полезной, если необходимо протестировать через полный спектр возможных входных значений калибровочного параметра.

Регистрируйте выходные данные в MATLAB

Выход симуляции отправляется в MATLAB блоком To Workspace, где это хранится как объект timeseries, названный mapData. Эти данные могут теперь смотреться и визуализироваться в рабочем пространстве MATLAB.

sim(cdfxMdl);
plot(mapData)
title("Simulation Output for ASAM.C.MAP")

% Copyright 2018-2021 The MathWorks, Inc.

Для просмотра документации необходимо авторизоваться на сайте