В этом примере показано, как хранить калибровочные данные из 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, затем используйте set_param соединить существующий словарь данных с вашей моделью. Это позволит модели получать доступ к значениям, заданным в рамках словаря.
open_system("CDFXSLDDModel.slx");
cdfxMdl = gcscdfxMdl = '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 блоком To Workspace, где это хранится как объект timeseries, названный mapData. Эти данные могут теперь смотреться и визуализироваться в рабочем пространстве MATLAB.
sim(cdfxMdl);
plot(mapData)
title("Simulation Output for ASAM.C.MAP")
% Copyright 2018-2021 The MathWorks, Inc.