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

В этом примере учитесь как:

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

    Fixed-Point Tool автоматизирует задачу определения типов данных с фиксированной точкой в системе. В этом примере инструмент собирает данные об области значений для объектов модели, или из проекта минимальные и максимальные значения, которые вы задаете явным образом для сигналов и параметров, или от регистрируемых минимальных и максимальных значений, которые происходят во время симуляции. На основе этих значений инструмент предлагает типы данных с фиксированной точкой, которые максимизируют точность и покрывают область значений. Инструмент позволяет вам рассматривать предложения по типу данных и затем применять их выборочно к объектам в вашей модели.

  • Замените блоки, которые не поддержаны для преобразования с приближением интерполяционной таблицы.

    Во время этапа подготовки преобразования Fixed-Point Tool изолирует любые блоки, которые не поддерживают преобразование фиксированной точки путем размещения этих блоков в подсистеме, окруженной блоками Преобразования типа данных. Можно использовать Оптимизатор Интерполяционной таблицы, чтобы заменить неподдерживаемые блоки на приближение интерполяционной таблицы.

Настройка модели

Откройте модель и сконфигурируйте ее для преобразования фиксированной точки.

open_system('ex_fixed_point_workflow')

В этом примере вы преобразовываете Подсистему контроллера в фиксированную точку. Чтобы сравнить поведение до и после преобразования, включите журналирование сигнала при выходных параметрах системы в соответствии с проектом.

ph = get_param('ex_fixed_point_workflow/Controller Subsystem','PortHandles');
set_param(ph.Outport(1),'DataLogging','on')
set_param(ph.Outport(2),'DataLogging','on')

Подготовьте систему к преобразованию

Чтобы преобразовать модель в фиксированную точку, используйте Fixed-Point Tool.

  1. В меню модели ex_fixed_point_workflow выберите Analysis> Data Type Design> Fixed-Point Tool.

  2. В Fixed-Point Tool, в разделе Prepare System панели инструментов, под System Under Design, выбирают подсистему, которую вы хотите преобразовать в фиксированную точку. В этом примере выберите Controller Subsystem.

  3. В разделе Collect Ranges выберите Simulation Ranges как метод сбора области значений.

  4. Нажмите Prepare. Fixed-Point Tool проверяет систему в соответствии с проектом для совместимости с процессом преобразования и сообщает о любых проблемах, найденных в модели. Когда возможно, Fixed-Point Tool автоматически изменяет настройки, которые не совместимы. Для получения дополнительной информации смотрите Подготовку Системы для Преобразования.

    Подсистема в соответствии с проектом содержит блок Exp, который не поддерживает типы данных с фиксированной точкой. Fixed-Point Tool окружает этот блок блоками Конвертера Типа данных и помещает его в подсистеме. Когда вы закончили преобразовывать остальную часть подсистемы в фиксированную точку, можно заменить подсистему на приближение интерполяционной таблицы функции exp.

Соберите области значений

Нажмите кнопку Collect Ranges, чтобы моделировать модель. Fixed-Point Tool заменяет типы данных в модели с, удваивает и собирает минимальные и максимальные значения для каждого объекта в вашей модели, которые происходят во время симуляции. Fixed-Point Tool хранит эту информацию области значений в выполнении, названном Ranges (Double). Можно просмотреть собранные области значений в SimMin и столбцах SimMax электронной таблицы, или в панели Result Details.

Панель Visualization of Simulation Data открывает другой вид результатов симуляции. Выберите вкладку Explore Fixed-Point Tool для дополнительных инструментов для сортировки и фильтрации данных в электронной таблице и визуализации. Для примера смотрите Отладку Модель Фиксированной точки.

Преобразование типов данных

Используйте Fixed-Point Tool, чтобы предложить типы данных с фиксированной точкой для соответственно сконфигурированных блоков на основе результатов симуляции с двойной точностью, сохраненных в выполнении Ranges (Double).

  1. Чтобы задать допуски к системе, нажмите кнопку Signal Tolerances. Выпадающее имеет таблицу, содержащую все сигналы в модели с включенным журналированием сигнала.

    Установите относительный допуск (Rel Tol) сигналов, что вы регистрировали к 15%.

  2. В разделе Convert Data Types нажмите кнопку Propose Data Types.

    Fixed-Point Tool анализирует масштабирование всех блоков фиксированной точки, параметр Lock output data type setting against changes by the fixed-point tools которых не выбран.

    Fixed-Point Tool использует настройки предложения по умолчанию, чтобы предложить типы данных с 16-битным размером слова и длиной части лучшей точности и обновляет результаты в электронной таблице.

    Можно изменить настройки предложения путем нажатия кнопки Settings в разделе Convert Data Types панели инструментов прежде, чем предложить типы.

  3. Инструмент отображает предложенные типы данных в столбце ProposedDT в электронной таблице.

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

  4. Исследуйте результаты решить любые вопросы и гарантировать, что вы хотите принять предложенный тип данных для каждого результата. Панель Visualization of Simulation Data указывает на результаты, которые содержали бы переполнение или потери значимости с красным или желтым треугольником, соответственно. В этом примере результат Sum1 : Output будет содержать потерю значимости, если предложенный тип данных применяется. Потери значимости могут быть источниками числовых проблем, но могут иногда безопасно игнорироваться.

    Fixed-Point Tool указывает на результаты, предложенный тип данных которых конфликтует с другим типом с красным значком. В этом примере никакие результаты не содержат конфликты. Для получения дополнительной информации смотрите, Исследуют Результаты Разрешить Конфликты.

  5. После рассмотрения результатов и гарантируя, что нет никаких проблем, вы готовы применить предложенные типы данных к модели. Нажмите Apply Data Types, чтобы записать предложенные типы данных в модель.

    Fixed-Point Tool применяет предложения по типу данных к блокам подсистемы.

Проверьте новые настройки

Затем, моделируйте модель снова с помощью новых настроек фиксированной точки. Вы затем используете Инспектора Данных моделирования, строящего возможности сравнить результаты Ranges (Double) с плавающей точкой, запущенного с результатами фиксированной точки.

  1. В разделе Verify панели инструментов нажмите Simulate with Embedded Types. Fixed-Point Tool моделирует модель с помощью новых типов данных с фиксированной точкой и хранит информацию выполнения в новом выполнении, названном Embedded.

    Позже, Fixed-Point Tool отображает информацию о блоках, которые регистрировали данные фиксированной точки. Столбец CompiledDT для выполнения показывает, что блоки Подсистемы контроллера используют новые типы данных с фиксированной точкой.

  2. Исследуйте гистограммы в панели Visualization of Simulation Data, чтобы проверить, что нет никакого переполнения или насыщения. Переполнение и насыщение отмечены красным треугольником.

  3. Браузер выполнения указывает, что все сигналы, к которым вы задали допуски, передали.

  4. Кликните по значку открытому Инспектору Данных моделирования. В Инспекторе Данных моделирования выберите один из регистрируемых сигналов просмотреть поведение симуляции фиксированной точки.

Замените неподдерживаемые блоки на приближение интерполяционной таблицы

В Подготовить Системе для шага Преобразования рабочего процесса Fixed-Point Tool поместил блок Exp, который не поддержан для преобразования в подсистеме, окруженной блоками Преобразования типа данных. На этом шаге вы заменяете подсистему на приближение интерполяционной таблицы.

  1. Чтобы получить список всех подсистем Fixed-Point Tool, разъединенный для преобразования, в командной строке, войдите:

    decoupled = DataTypeWorkflow.findDecoupledSubsystems('ex_fixed_point_workflow')
    decoupled =
    
      1×2 table
    
        ID                        BlockPath                     
        __    __________________________________________________
    
        1     'ex_fixed_point_workflow/Controller Subsystem/Exp'

    Функция DataTypeWorkflow.findDecoupledSubsystems возвращает таблицу, содержащую блок path любых подсистем, которые были созданы Fixed-Point Tool, чтобы изолировать неподдерживаемый блок.

  2. Откройте Lookup Table Optimizer. В образцовом меню выберите Analysis> Data Type Design> Lookup Table Optimizer.

  3. На странице Objective Оптимизатора Интерполяционной таблицы выберите Simulink Block. Нажмите Next.

  4. Под Block Information копия с командной строки и вставляют путь к подсистеме, созданной Fixed-Point Tool.

  5. Нажмите кнопку Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Оптимизатору автоматически собирать информацию, необходимую для процесса оптимизации. Нажмите Next.

  6. Задайте ограничения, чтобы использовать в оптимизации. В данном примере используйте значения по умолчанию. Чтобы создать интерполяционную таблицу, нажмите Optimize. Нажмите Next.

  7. Нажмите Replace Original Function, чтобы заменить разъединенную подсистему на новую подсистему, содержащую приближение интерполяционной таблицы для блока Math Function exp.

Проверьте поведение системы с приближением интерполяционной таблицы

Теперь, когда система в соответствии с проектом полностью преобразована, проверьте, что система все еще соответствует допускам, которые вы задали перед преобразованием.

  1. В Fixed-Point Tool, в разделе Verify панели инструментов, нажимают Simulate with Embedded Types выпадающая кнопка.

  2. Отредактируйте Run name так, чтобы вы не перезаписывали предыдущее встроенное выполнение.

  3. Нажмите Simulate with Embedded Types.

    Fixed-Point Tool моделирует модель, которая теперь содержит приближение интерполяционной таблицы.

  4. Run Browser показывает, что сигналы с заданными допусками передают в модели с помощью приближения интерполяционной таблицы.

Похожие темы