В этом примере показано, как хранить данные калибровки из файла 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, а затем используйте set param, чтобы связать существующий словарь данных с вашей моделью. Это позволит модели получить доступ к значениям, заданным в словаре.
open_system("CDFXSLDDModel.slx");
cdfxMdl = gcs
cdfxMdl = 'CDFXSLDDModel'
set_param(gcs, 'DataDictionary', dictName)
Теперь мы можем закрыть подключение к словарю данных.
close(dDict)
Эта модель содержит:
двумерная интерполяционная таблица, чтобы представлять ASAM.C.MAP
параметр из файла CDFX. Поле «Table data» представляет физическое значение образца, а поля «Breakpoint» - физические значения осей.
Блок Gain, чтобы представлять ASAM.C.SCALAR.GAIN
параметр из файла CDFX.
В блок Рабочей области, чтобы войти в данные моделирования.
Логическая подсистема индексации использует физические значения осей ASAM.C.MAP
параметр, наряду с блоками маршрутизации сигналов и триггируемой подсистемой, для создания всех допустимых комбинаций интерполяционных индексов. Это строение может быть полезной, если вам нужно протестировать всюсь область значений возможных входных значений калибровочного параметра.
Выход симуляции отправляется в MATLAB блоком To Workspace, где он хранится как объект timeseries, называемый mapData
. Теперь эти данные можно проверить и визуализировать в рабочем пространстве MATLAB.
sim(cdfxMdl);
plot(mapData)
title("Simulation Output for ASAM.C.MAP")
% Копирайт 2018 The MathWorks, Inc.