Используя данные ASAM CDFX с Simulink

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

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

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

cdfxObj = cdfx("CDFXExampleFile.cdfx")
java.lang.ClassCastException: net.asam.schema.cdf.r2_1.impl.CdfFactoryImpl cannot be cast to net.asam.schema.cdf.r2_1.CdfFactory
	at net.asam.schema.cdf.r2_1.impl.CdfFactoryImpl.init(CdfFactoryImpl.java:31)
	at net.asam.schema.cdf.r2_1.CdfFactory.<clinit>(CdfFactory.java:22)
	at net.asam.schema.cdf.r2_1.impl.CdfPackageImpl.<init>(CdfPackageImpl.java:574)
	at net.asam.schema.cdf.r2_1.impl.CdfPackageImpl.init(CdfPackageImpl.java:598)
	at net.asam.schema.cdf.r2_1.CdfPackage.<clinit>(CdfPackage.java:82)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at com.mathworks.jmi.ClassLoaderManager.loadClass(ClassLoaderManager.java:440)
	at com.mathworks.jmi.ClassLoaderManager.findClass(ClassLoaderManager.java:422)
	at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.mathworks.jmi.OpaqueJavaInterface.findClass(OpaqueJavaInterface.java:186)
cdfxObj = 
  CDFX with properties:

       Name: "CDFXExampleFile.cdfx"
       Path: "/tmp/BR2020bd_1459859_228739/mlx_to_docbook1/tpe7428071/vnt-ex88524458/CDFXExampleFile.cdfx"
    Version: "CDF20"

Инстанцируйте локальных переменных

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

gainParam = getValue(cdfxObj, "ASAM.C.SCALAR.GAIN")
gainParam = 3
mapParam = getValue(cdfxObj, "ASAM.C.MAP")
mapParam = struct with fields:
    PhysicalValue: [5x5 double]
            Axis1: [1x1 struct]
            Axis2: [1x1 struct]

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

open_system("CDFXSimulinkModel.slx");
cdfxMdl = gcs
cdfxMdl = 
'CDFXSimulinkModel'

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

  • Блок двумерной интерполяционной таблицы, чтобы представлять 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 The MathWorks, Inc.