В этом примере учитесь как:
Преобразуйте систему с плавающей точкой в эквивалентное представление фиксированной точки.
Fixed-Point Tool автоматизирует задачу определения типов данных с фиксированной точкой в системе. В этом примере инструмент собирает данные об области значений для объектов модели, или из проекта минимальные и максимальные значения, которые вы задаете явным образом для сигналов и параметров, или от регистрируемых минимальных и максимальных значений, которые происходят в процессе моделирования. На основе этих значений инструмент предлагает типы данных с фиксированной точкой, которые максимизируют точность и покрывают область значений. Инструмент позволяет вам рассматривать предложения по типу данных и затем применять их выборочно к объектам в вашей модели.
Замените блоки, которые не поддержаны для преобразования приближением интерполяционной таблицы.
Во время этапа подготовки преобразования Fixed-Point Tool изолирует любые блоки, которые не поддерживают преобразование фиксированной точки путем размещения этих блоков в подсистеме, окруженной блоками Data Type Conversion. Можно использовать Оптимизатор Интерполяционной таблицы, чтобы заменить неподдерживаемые блоки на приближение интерполяционной таблицы.
Откройте модель и сконфигурируйте ее для преобразования фиксированной точки.
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.
В галерее Apps ex_fixed_point_workflow
модель, выберите Fixed-Point Tool.
В Fixed-Point Tool, под System Under Design, выбирают подсистему, которую вы хотите преобразовать в фиксированную точку. В этом примере выберите Controller Subsystem
.
Под Range Collection Mode выберите Simulation Ranges как метод сбора области значений.
Под Simulation Inputs можно задать Simulink.SimulationInput
объекты осуществить ваш проект в его полном рабочем диапазоне. В этом примере, набор Simulation inputs к Use default model inputs
.
Чтобы задать допуски к системе, под Signal Tolerances (Optional) в таблице, задают допуски к любому сигналу в модели с включенным логгированием сигнала.
Установите относительный допуск (Rel Tol) сигналов, что вы регистрировали к 15%.
В панели инструментов нажмите Prepare. Fixed-Point Tool проверяет систему в соответствии с проектом для совместимости с процессом преобразования и сообщает о любых проблемах, найденных в модели. Когда возможно, Fixed-Point Tool автоматически изменяет настройки, которые не совместимы. Для получения дополнительной информации смотрите Использование Fixed-Point Tool, чтобы Подготовить Систему к Преобразованию.
Подсистема в соответствии с проектом содержит блок Exp, который не поддерживает типы данных с фиксированной точкой. Fixed-Point Tool окружает этот блок блоками Data Type Converter и помещает его в подсистеме. Когда вы закончили преобразовывать остальную часть подсистемы в фиксированную точку, можно заменить подсистему на приближение интерполяционной таблицы 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)
.
В разделе 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 панели инструментов прежде, чем предложить типы.
Инструмент отображает предложенные типы данных в столбце ProposedDT в электронной таблице.
По умолчанию это устанавливает флажок Accept для каждого результата, потому что предложенный тип данных отличается от текущего типа данных объекта. Если вы применяете типы данных, инструмент применяет предложенные типы данных к этим результатам.
Исследуйте результаты решить любые вопросы и гарантировать, что вы хотите принять предложенный тип данных для каждого результата. Панель Visualization of Simulation Data указывает на результаты, которые содержали бы переполнение или потери значимости с красным или желтым треугольником, соответственно. В этом примере, Sum1 : Output
результат будет содержать потерю значимости, если предложенный тип данных применяется. Потери значимости могут быть источниками числовых проблем, но могут иногда безопасно игнорироваться.
Fixed-Point Tool указывает на результаты, предложенный тип данных которых конфликтует с другим типом с красным значком. В этом примере никакие результаты не содержат конфликты. Для получения дополнительной информации смотрите, Исследуют Результаты Разрешить Конфликты.
После рассмотрения результатов и гарантируя, что нет никаких проблем, вы готовы применить предложенные типы данных к модели. Нажмите Apply Data Types, чтобы записать предложенные типы данных в модель.
Fixed-Point Tool применяет предложения по типу данных к блокам в подсистеме в соответствии с проектом.
Затем симулируйте модель снова с помощью новых настроек фиксированной точки. Вы затем используете Инспектора Данных моделирования, строящего возможности сравнить результаты Ranges (Double)
с плавающей точкой запуститесь с результатами фиксированной точки.
В разделе Verify панели инструментов нажмите Simulate with Embedded Types. Fixed-Point Tool симулирует модель с помощью новых типов данных с фиксированной точкой и хранит информацию запуска в новом запуске, названном Embedded
.
Позже, Fixed-Point Tool отображает информацию о блоках, которые регистрировали данные фиксированной точки. Столбец CompiledDT для запуска показывает, что блоки Подсистемы контроллера используют новые типы данных с фиксированной точкой.
Исследуйте гистограммы в панели Visualization of Simulation Data, чтобы проверить, что нет никакого переполнения или насыщения. Переполнение и насыщение отмечены красным треугольником.
Браузер рабочего процесса указывает, что все сигналы, к которым вы задали допуски, передали.
Кликните по значку открытому Инспектору Данных моделирования. В Инспекторе Данных моделирования выберите один из регистрируемых сигналов просмотреть поведение симуляции фиксированной точки.
В Подготовить Системе для шага Преобразования рабочего процесса Fixed-Point Tool поместил блок Exp, который не поддержан для преобразования в подсистеме, окруженной блоками Data Type Conversion. На этом шаге вы заменяете подсистему на приближение интерполяционной таблицы.
Чтобы получить список всех подсистем 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, чтобы изолировать неподдерживаемый блок.
Откройте Lookup Table Optimizer. В галерее Apps выберите Lookup Table Optimizer.
На странице Objective Оптимизатора Интерполяционной таблицы выберите Simulink Block. Нажмите Next.
Под Block Information копия с командной строки и вставляют путь к подсистеме, созданной Fixed-Point Tool.
Нажмите кнопку Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Оптимизатору автоматически собирать информацию, необходимую для процесса оптимизации. Нажмите Next.
Задайте ограничения, чтобы использовать в оптимизации. В данном примере используйте значения по умолчанию. Чтобы создать интерполяционную таблицу, нажмите Optimize. Нажмите Next.
Нажмите Replace Original Function, чтобы заменить разъединенную подсистему на новую подсистему, содержащую приближение интерполяционной таблицы для
exp
Math Function блок.
Теперь, когда система в соответствии с проектом полностью преобразована, проверьте, что система все еще соответствует допускам, которые вы задали перед преобразованием.
В Fixed-Point Tool, в разделе Verify панели инструментов, нажимают Simulate with Embedded Types выпадающая кнопка.
Отредактируйте Run name так, чтобы вы не перезаписывали предыдущий встроенный запуск.
Нажмите Simulate with Embedded Types.
Fixed-Point Tool симулирует модель, которая теперь содержит приближение интерполяционной таблицы.
Workflow Browser показывает, что сигналы с заданными допусками передают в модели с помощью приближения интерполяционной таблицы.