Этот пример показывает, как хранить калибровочные данные из файла ASAM CDFX в словаре данных и использовать эти значения в качестве параметров к модели Simulink.
Импортируйте калибровочные данные с помощью функции cdfx
.
cdfxObj = cdfx("CDFXExampleFile.cdfx")
cdfxObj = CDFX with properties: Name: "CDFXExampleFile.cdfx" Path: "/tmp/BR2019ad_1062519_57051/mlx_to_docbook1/tp8d4e53bc/vnt-ex73237310/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: {0x1 cell} HasAccessToBaseWorkspace: 0 EnableAccessToBaseWorkspace: 0 HasUnsavedChanges: 0 NumberOfEntries: 0
ddSection = Section with properties: Name: 'Design Data'
% Display contents of the data dictionary.
listEntry(dDict)
Section Name Status DataSource LastModified LastModifiedBy Class Design Data gainParam new CDFXExampleDD.sldd 2019-02-22 00:32 batserve double Design Data mapParam new CDFXExampleDD.sldd 2019-02-22 00:32 batserve struct
Откройте модель Simulink, затем используйте параметрический усилитель набора, чтобы соединить существующий словарь данных с вашей моделью. Это позволит модели получать доступ к значениям, заданным в рамках словаря.
open_system("CDFXSLDDModel.slx");
cdfxMdl = gcs
cdfxMdl = 'CDFXSLDDModel'
set_param(gcs, 'DataDictionary', dictName)
Мы можем теперь закрыть связь со словарем данных.
close(dDict)
Эта модель содержит:
2D блок Lookup Table, чтобы представлять параметр 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.