Этот пример показывает, как создать график Stateflow®, который использует данные фиксированной точки, чтобы реализовать Фильтр Баттерворта низкой передачи. Путем разработки фильтра с данными фиксированной точки вместо данных с плавающей точкой можно моделировать модель с помощью меньшей памяти. Для получения дополнительной информации смотрите Данные Фиксированной точки в диаграммах Stateflow.
График Фильтра нижних частот является блок-схемой не сохраняющей состояние, которая принимает вход того и предоставляет тому вывод. График содержит эти символы данных:
x
Осциллограф: InputType :
Inherit:Same as Simulink
y
Осциллограф: 'OutputType' :
fixdt(1,16,10)
x_n1
— Осциллограф: Local
, введите: fixdt(1,16,12)
y_n1
— Осциллограф: Local
, введите: fixdt(1,16,10)
b0
— Осциллограф: Parameter
, введите: fixdt(1,16,15)
b1
— Осциллограф: Parameter
, введите: fixdt(1,16,15)
a1
— Осциллограф: Parameter
, введите: fixdt(1,16,15)
Значения b0
, b1
и a1
являются коэффициентами Фильтра Баттерворта низкой передачи.
Создавать график Фильтра нижних частот:
Создайте модель Simulink® с пустой диаграммой Stateflow путем ввода sfnew
в командной строке MATLAB®.
В диаграмме Stateflow добавьте блок-схему с одним ответвлением, которое присваивает значения y
, x_n1
и y_n1
.
Добавьте вход, выведите, локальный, и данные о параметре к графику, как описано в Добавляют Данные Stateflow.
Прежде, чем загрузить модель, MATLAB вызывает функцию butter
, чтобы вычислить значения для параметров b0
, b1
и a1
. Функция создает Фильтр Баттерворта низкой передачи первого порядка с нормированной частотой среза радианов (2*pi*Fc/(Fs/2))
в секунду, где:
Частотой дискретизации является Fs
= 1 000 Гц.
Частотой среза является Fc
= 50 Гц.
Функциональный вывод B
содержит коэффициенты числителя фильтра в убывающих степенях z
. Функциональный вывод A
содержит коэффициенты знаменателя фильтра в убывающих степенях z
.
Fs = 1000; Fc = 50; [B,A] = butter(1,2*pi*Fc/(Fs/2)); b0 = B(1); b1 = B(2); a1 = A(2);
Задавать коллбэк предварительной нагрузки для модели:
В окне модели выберите File> Model Properties> Model Properties.
В диалоговом окне Model Properties, на вкладке Callbacks, выбирают PreLoadFcn.
Введите код MATLAB для вызова функции предварительной нагрузки.
Нажать ОК.
Чтобы загрузить значения параметров к рабочему пространству MATLAB, сохраните, закройте и вновь откройте модель.
Чтобы завершить модель, добавьте блок Sine Wave, блок Data Type Conversion и блок Scope. Соедините и маркируйте блоки согласно этой схеме.
Блок Sine Wave
Блок Sine Wave выводит сигнал с плавающей точкой. Блок имеет эти настройки:
Тип синуса: Time based
Время: Use simulation time
Амплитуда: 1
Смещение: 0
Частота: 2*pi*Fc
Фаза: 0
'SampleTime' : 1/Fs
Интерпретируйте векторные параметры как 1D: On
Блок Data Type Conversion
Блок Data Type Conversion преобразовывает сигнал с плавающей точкой от блока Sine Wave до сигнала фиксированной точки. Путем преобразования сигнала в фиксированную точку можно моделировать модель с помощью меньшей памяти. Блок имеет эти настройки:
Выходной минимум: []
Выходной максимум: []
Тип выходных данных: fixdt(1,16,14)
Заблокируйте установку типа выходных данных против изменений Fixed-Point Tool: Off
Ввод и вывод, чтобы иметь равный: Real World Value (RWV)
Целочисленный режим округления: Floor
Насыщайте на целочисленном переполнении: Off
'SampleTime' : -1
Блок Scope
Блок Scope имеет два входных порта, которые соединяются с сигналами ввода и вывода для графика Фильтра нижних частот. Чтобы отобразить два сигнала отдельно, выберите размещение осциллографа с двумя строками и одним столбцом.
Поскольку ни один из блоков в модели не имеет время непрерывной выборки, используйте дискретный решатель с этими параметрами конфигурации:
Время остановки: 0.1
Ввод: Fixed-step
Решатель: discrete (no continuous states)
Размер фиксированного шага (основной шаг расчета): 1/Fs
Сконфигурировать модель:
В редакторе Stateflow выберите Simulation> Model Configuration Parameters.
В панели Решателя, установленной дискретные параметры решателя.
Нажать ОК.
Когда вы моделируете модель, блок Scope отображает два сигнала. Главный сигнал показывает версию фиксированной точки входа синусоиды к графику. Нижний сигнал соответствует отфильтрованному выводу из графика. Фильтр удаляет высокочастотные значения из сигнала, но позволяет низкочастотным значениям проходить через неизменный график.
Преобразование типа данных | Осциллограф | Синусоида | butter
| sfnew