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

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

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

model = 'fxpdemo_feedback';
open_system(model);

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

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

Создайте DataTypeWorkflow.Converter объект совершенствовать типы данных Подсистемы контроллера 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.'}

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 запущенный.

converter.proposeDataTypes(baselineRun, propSettings)

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

converter.applyDataTypes(baselineRun)

Проверьте, что поведение модели с помощью новых типов данных соответствует допускам, заданным на объекте настроек предложения, propSettings. 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 объект, запустите Инспектора Данных моделирования и исследуйте сигналы, к которым вы задали допуск.

explore(result)

Похожие темы