Этот пример показывает, как совершенствовать типы данных модели с помощью командной строки.
Откройте модель 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)