В этом примере показано, как хранить калибровочные данные из файла ASAM CDFX в словаре данных и использовать эти значения в качестве параметров к модели 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"
% Check if dictionary is already in the working folder. 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
% Display contents of the data dictionary.
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, затем используйте параметрический усилитель набора, чтобы соединить существующий словарь данных с вашей моделью. Это позволит модели получать доступ к значениям, заданным в рамках словаря.
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 блоком To Workspace, где это хранится как объект timeseries, названный mapData
. Эти данные могут теперь смотреться и визуализироваться в рабочем пространстве MATLAB.
sim(cdfxMdl);
plot(mapData)
title("Simulation Output for ASAM.C.MAP")
% Copyright 2018 The MathWorks, Inc.