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

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

Откройте модель 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 =

  5x1 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 double override', заменяют систему с типами данных с двойной точностью и включают инструментирование.

converter.applySettingsFromShortcut(shortcuts{1});

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

converter.CurrentRunName
ans =

    'DoubleOverride'

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

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 и областях значений, сохраненных в запущенном 'DoubleOverride'.

converter.proposeDataTypes('DoubleOverride', propSettings)

Примените типы данных, предложенные для 'DoubleOverride', запущенного к модели.

converter.applyDataTypes('DoubleOverride')

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

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

  VerificationResult with properties:

            RunName: 'FixedRun'
    BaselineRunName: 'DoubleOverride'
             Status: 'Pass'
      MaxDifference: 0.0351

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

explore(result)

Похожие темы