Преобразуйте модель в фиксированную точку с помощью командной строки

В этом примере показано, как уточнить типы данных модели с помощью командной строки.

Откройте fxpdemo_feedback модель.

model = 'fxpdemo_feedback';
open_system(model);

Подсистема Контроллера использует типы данных с фиксированной точкой.

sud = 'fxpdemo_feedback/Controller';
open_system(sud)

Создайте DataTypeWorkflow.Converter объект для уточнения типов данных подсистемы Controller fxpdemo_feedback модель.

converter = DataTypeWorkflow.Converter(sud);

Симулируйте модель и сохраните результаты в запуске под названием InitialRun.

converter.CurrentRunName = 'InitialRun';
converter.simulateSystem();

Определите, какие переполнения произошли во время запуска.

saturations = converter.saturationOverflows('InitialRun')
saturations = 

  Result with properties:

           ResultName: 'fxpdemo_feedback/Controller/Up Cast'
    SpecifiedDataType: 'fixdt(1,16,14)'
     CompiledDataType: 'fixdt(1,16,14)'
     ProposedDataType: ''
                Wraps: []
          Saturations: 23
          WholeNumber: 0
               SimMin: -2
               SimMax: 1.9999
           DerivedMin: []
           DerivedMax: []
              RunName: 'InitialRun'
             Comments: {'An output data type cannot be specified on this result. The output type is the same as the input type.'}
            DesignMin: []
            DesignMax: []

wraps = converter.wrapOverflows('InitialRun')
wraps =

     []

Насыщение происходит в блоке Up Cast подсистемы Контроллера во время симуляции. Нет переносов. Уточните типы данных модели так, чтобы не было насыщений.

Сконфигурируйте модель для преобразования с помощью ярлыка. Поиск ярлыков, доступных для системы, путем доступа к ShortcutsForSelectedSystem свойство объекта конвертера.

shortcuts = converter.ShortcutsForSelectedSystem
shortcuts =

  6x1 cell array

    {'Range collection using double override'       }
    {'Range collection with specified data types'   }
    {'Range collection using single override'       }
    {'Disable range collection'                     }
    {'Remove overrides and disable range collection'}
    {'Range collection using scaled double override'}

Чтобы собрать идеализированные области значений для системы, используйте 'Range collection using double override' ярлык, переопределите систему типами данных двойной точности и включите инструментирование.

converter.applySettingsFromShortcut(shortcuts{1});

Этот ярлык также обновляет текущее свойство имени запуска объекта конвертера.

baselineRun = converter.CurrentRunName
baselineRun =

    'Ranges(Double)'

Симулируйте модель снова, чтобы собрать идеализированную информацию о области значений. Эти результаты хранятся в запуске baselineRun.

converter.simulateSystem();

Создайте ProposalSettings объект для управления настройками предложения типа данных и определения допусков для сигналов в модели.

propSettings = DataTypeWorkflow.ProposalSettings;

Задайте относительную погрешность 20% для сигнала выхода PlantOutput сигнал в модели.

addTolerance(propSettings, 'fxpdemo_feedback/Analog Plant', 1, 'RelTol', 2e-1);

Просмотреть все допуски, заданные для системы, можно с помощью showTolerances способ.

showTolerances(propSettings)
                  Path                   Port_Index    Tolerance_Type    Tolerance_Value
    _________________________________    __________    ______________    _______________

    {'fxpdemo_feedback/Analog Plant'}        1           {'RelTol'}            0.2      

Предлагать типы данных для системы можно с помощью настроек предложения, заданных в propSettingsи области значений, хранящиеся в baselineRun run.

converter.proposeDataTypes(baselineRun, propSettings)

Применить типы данных, предложенные для baselineRun перейти к модели.

converter.applyDataTypes(baselineRun)

Проверьте, что поведение модели с использованием новых типов данных соответствует допускам, заданным в объекте параметров предложения, propSettings. The verify метод удаляет переопределение типа данных и моделирует модель с помощью обновленных типов данных с фиксированной точкой. Это возвращает DataTypeWorkflow.VerificationResult объект.

result = verify(converter, baselineRun, 'FixedRun')
result = 

  VerificationResult with properties:

    ScenarioResults: [0x0 DataTypeWorkflow.VerificationResult]
            RunName: 'FixedRun'
    BaselineRunName: 'Ranges(Double)'
             Status: 'Pass'
      MaxDifference: 0.0351

Использование explore метод DataTypeWorkflow.VerificationResult запустите Данные Моделирования Inspector и исследуйте сигналы, для которых вы задали допуск.

explore(result)

Похожие темы