Непрерывное время или дискретное время ПИД-регулятора
Simulink/Непрерывный
Блок PID Controller реализует ПИД-регулятор (только ПИД, PI, PD, P или I). Блок идентичен блоку Discrete PID Controller с Time domain набора параметров Continuous-time
.
Выход блока является взвешенной суммой входного сигнала, интеграла входного сигнала и производной входного сигнала. Веса являются пропорциональными, интегральными и производными параметрами усиления. Полюс первого порядка фильтрует производное действие.
Блок поддерживает несколько типов контроллеров и структур. Конфигурируемые опции в блоке включают:
Тип контроллера (только PID, PI, PD, P или I) - См. параметр Controller.
Форма контроллера (Parallel или Ideal) - Смотрите параметр Form.
Временной интервал (непрерывная или дискретная) - См. параметр Time domain.
Начальные условия и триггер сброса - См. параметры Source и External reset.
Выходные пределы насыщения и встроенный механизм защиты от насыщения - См. Limit output параметр.
Отслеживание сигнала для передачи без шума и многоуровневого управления - Смотрите параметр Enable tracking mode.
Когда вы изменяете эти опции, внутренняя структура блока изменяется путем активации различных подсистем варианта. (См. «Варианты подсистем».) Чтобы изучить внутреннюю структуру блока и его варианты подсистем, щелкните правой кнопкой мыши блок и выберите Mask > Look Under Mask.
В одной общей реализации блок PID Controller действует в пути с feedforward цикла обратной связи.
Обычно вход блока является сигналом ошибки, который является различием между опорным сигналом и системным выходом. Для блока с двумя входами, который позволяет взвешивать уставки, смотрите PID Controller (2DOF).
Коэффициенты ПИД-регулятора настраиваются вручную или автоматически. Автоматическая настройка требует Simulink® Control Design™ программным обеспечением. Для получения дополнительной информации об автоматической настройке смотрите параметр Select tuning method.
Port_1( u )
- Вход сигнала ошибкиРазличие между опорным сигналом и выходом системы, находящейся под управлением, как показано на рисунке.
Когда сигнал ошибки является вектором, блок действует отдельно на каждый сигнал, векторизируя коэффициенты ПИД и формируя векторный выход сигнал тех же размерностей. Можно задать ПИД и некоторые другие параметры как векторы тех же размерностей, что и входной сигнал. Это эквивалентно указанию отдельного ПИД-регулятора для каждого входа в входном сигнале.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
P
- Пропорциональная составляющаяПропорциональная составляющая, обеспечиваемый от внешнего источника блока. Внешний вход усиления полезен, например, когда вы хотите сопоставить другую параметризацию ПИД с коэффициентами ПИД блока. Можно также использовать внешний вход усиления для реализации запланированного по усилению управления ПИД. В запланированном по усилению управлении вы определяете коэффициенты ПИД по логике или другому вычислению в вашей модели и подаете их в блок.
Чтобы включить этот порт, установите Controller parameters Source равным external
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
I
- Интегральная составляющаяИнтегральная составляющая, обеспечиваемый от внешнего источника блока. Внешний вход усиления полезен, например, когда вы хотите сопоставить другую параметризацию ПИД с коэффициентами ПИД блока. Можно также использовать внешний вход усиления для реализации запланированного по усилению управления ПИД. В запланированном по усилению управлении вы определяете коэффициенты ПИД по логике или другому вычислению в вашей модели и подаете их в блок.
Когда вы поставляете коэффициент усиления извне, время, изменения в интегральную составляющую, также интегрируется. Этот результат происходит из-за того, как коэффициенты ПИД реализуются в блоке. Для получения дополнительной информации смотрите параметр Controller parameters Source.
Чтобы включить этот порт, установите Controller parameters Source равным external
и установите Controller в тип контроллера, который имеет интегральное действие.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D
- Производный коэффициент усиленияПроизводный коэффициент усиления, обеспечиваемый от источника, внешнего по отношению к блоку. Внешний вход усиления полезен, например, когда вы хотите сопоставить другую параметризацию ПИД с коэффициентами ПИД блока. Можно также использовать внешний вход усиления для реализации запланированного по усилению управления ПИД. В запланированном по усилению управлении вы определяете коэффициенты ПИД по логике или другому вычислению в вашей модели и подаете их в блок.
Когда вы поставляете усиления извне, временные изменения в производном усилении также дифференцируются. Этот результат происходит из-за того, как коэффициенты ПИД реализуются в блоке. Для получения дополнительной информации смотрите параметр Controller parameters Source.
Чтобы включить этот порт, установите Controller parameters Source равным external
и установите Controller в тип контроллера, который имеет производное действие.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
N
- Коэффициент фильтраПроизводный коэффициент фильтра, обеспечиваемый от источника, внешнего по отношению к блоку. Вход внешнего коэффициента полезен, например, когда вы хотите сопоставить другую параметризацию ПИД с коэффициентами ПИД блока. Можно также использовать внешний вход для реализации управления ПИД по расписанию усиления. В запланированном по усилению управлении вы определяете коэффициенты ПИД по логике или другому вычислению в вашей модели и подаете их в блок.
Чтобы включить этот порт, установите Controller parameters Source равным external
и установите Controller в тип контроллера, который имеет отфильтрованную производную.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Reset
- Внешний триггер сбросаТриггер для сброса интегратора и фильтрации до начальных условий. Значение параметра External reset определяет, происходит ли сброс по сигналу повышения, сигналу падения или сигналу уровня. Значок порта указывает выбранный тип триггера. Для примера следующий рисунок показывает блок ПИД в непрерывном времени с External reset, установленным на rising
.
Когда происходит триггер, блок сбрасывает интегратор и фильтрует начальные условия, заданные параметрами Integrator Initial condition и Filter Initial condition или портами I0 и D0.
Примечание
Соответствовать требованиям Ассоциации по надежности программного обеспечения для моторной промышленности (MISRA®) стандарт программного обеспечения, ваша модель должна использовать Логические сигналы для управления портами внешнего сброса блока PID controller.
Чтобы включить этот порт, установите External reset любое значение, кроме none
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
| Boolean
I0
- Начальные условия интегратораНачальные условия интегратора, обеспечиваемое от источника, внешнего по отношению к блоку.
Чтобы включить этот порт, установите Initial conditions Source равным external
и установите Controller в тип контроллера, который имеет интегральное действие.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D0
- Начальное условие фильтраНачальное условие производного фильтра, обеспечиваемое от источника, внешнего по отношению к блоку.
Чтобы включить этот порт, установите Initial conditions Source равным external
и установите Controller в тип контроллера, который имеет производное действие.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
up
- Выходной предел насыщенияВерхний предел выходного сигнала блока, обеспечиваемый от внешнего источника блока. Если взвешенная сумма пропорциональных, интегральных и производных действий превышает значение, заданное в этом порте, выход блока удерживается на этом значении.
Чтобы включить этот порт, выберите Limit output и установите Source насыщения выхода равным external
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
lo
- Нижний предел насыщения на выходеНижний предел выхода блока, обеспечиваемый от внешнего источника блока. Если взвешенная сумма пропорциональных, интегральных и производных действий идет ниже значения, заданного в этом порте, выход блока удерживается на этом значении.
Чтобы включить этот порт, выберите Limit output и установите Source насыщения выхода равным external
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
TR
- Сигнал слеженияСигнал на контроллер выход для отслеживания. Когда отслеживание сигнала активно, различие между сигналом отслеживания и выходным сигналом блока подается назад на вход интегратора. Отслеживание сигналов полезно для реализации бесшумной передачи управления в системах, которые переключаются между двумя контроллерами. Это также может быть полезно, чтобы предотвратить обмотку блока в многоуровневых системах управления. Для получения дополнительной информации смотрите параметр Enable tracking mode.
Чтобы включить этот порт, выберите параметр Enable tracking mode.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
TDTI
- Время дискретного интегратораВремя дискретного интегратора, предоставляемое в виде скаляра блоку. Можно использовать собственное значение шага расчета интегратора в дискретном времени, которое определяет скорость, с которой блок будет запускаться или в Simulink, или на внешнем оборудовании. Значение времени интегратора в дискретном времени должно совпадать со средней частотой дискретизации внешних прерываний, когда блок используется внутри условно выполненной подсистемы.
Другими словами, можно задать Ts
для любого из методов интегратора ниже таким образом, чтобы значение совпадало со средней частотой дискретизации внешних прерываний. В дискретном времени производный член передаточной функции контроллера:
где α (z) зависит от метода интегратора, заданного этим параметром.
Forward Euler
Backward Euler
Trapezoidal
Для получения дополнительной информации о интегрировании в дискретном времени смотрите Discrete-Time Integrator страницы с описанием блоков. Для получения дополнительной информации об условно выполненных подсистемах смотрите Обзор условно выполненных подсистем.
Чтобы включить этот порт, установите Time Domain равным Discrete-time
и выберите опцию PID Controller is inside a conditionally executed subsystem.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Port_1( y )
- Контроллер выходКонтроллер выход, обычно основанный на сумме входного сигнала, интеграле входного сигнала и производной входного сигнала, взвешенной пропорциональными, интегральными и производными параметрами усиления. Полюс первого порядка фильтрует производное действие. Какие условия присутствуют в сигнале контроллера, зависит от того, что вы выбираете для параметра Controller. Передаточная функция базового контроллера для текущих настроек отображается в Compensator formula разделе параметров блоков и под маской. Другие параметры изменяют выход блока, такие как пределы насыщения, заданные параметрами Upper Limit и Lower Limit насыщения.
Контроллер выход является вектором сигналом, когда любой из входов является вектором сигналом. В этом случае блок действует как N независимые ПИД-регуляторы, где N - количество сигналов в векторе входа.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Controller
- Тип контроллераPID
(по умолчанию) | PI
| PD
| P
| I
Задайте, какой из пропорциональных, интегральных и производных членов находится в контроллере.
PID
Пропорциональное, интегральное и производное действие.
PI
Только пропорциональное и интегральное действие.
PD
Пропорциональное и производное только действие.
P
Только пропорциональное действие.
I
Только интегральное действие.
Совет
Передаточная функция контроллера для текущей настройки отображается в Compensator formula разделе параметров блоков и под маской.
Параметры блоков: Controller |
Тип: строка, вектор символов |
Значения: "PID" , "PI" , "PD" , "P" , "I" |
По умолчанию: "PID" |
Form
- Структура контроллераParallel
(по умолчанию) | Ideal
Задайте, является ли структура контроллера параллельной или идеальной.
Parallel
Контроллер выход является суммой пропорциональных, интегральных и производных действий, взвешенных независимо друг от друга по P, I и D, соответственно. Для примера, для непрерывного времени ПИД-регулятора параллельной формы, передаточная функция:
Для контроллера параллельной формы в дискретном времени передаточная функция является:
где Integrator method и Filter method параметры определяют α (z) и β (z), соответственно.
Ideal
Пропорциональная составляющая действует на сумму всех действий. Для примера, для непрерывного времени ПИД-регулятора идеальной формы, передаточная функция:
Для контроллера идеальной формы в дискретном времени передаточная функция является:
где Integrator method и Filter method параметры определяют a (z) и b (z), соответственно.
Совет
Передаточная функция контроллера для текущих настроек отображается в Compensator formula разделе параметров блоков и под маской.
Параметры блоков: Controller |
Тип: строка, вектор символов |
Значения: "Parallel" , "Ideal" |
По умолчанию: "Parallel" |
Time domain
- Задайте контроллер в непрерывном времени или дискретном времениContinuous-time
(по умолчанию) | Discrete-time
Когда вы выбираете Discrete-time
рекомендуется задать явный шаг расчета для блока. Смотрите параметр Sample time (-1 for inherited). Выбор Discrete-time
также включает параметры Integrator method и Filter method.
Когда блок PID Controller находится в модели с синхронным управлением состояниями (см. блок State Control (HDL Coder)), вы не можете выбрать Continuous-time
.
Примечание
Блоки PID Controller и Discrete PID Controller идентичны, за исключением значения по умолчанию этого параметра.
Параметры блоков:
TimeDomain
|
Тип: строка, вектор символов |
Значения:
"Continuous-time" , "Discrete-time" |
По умолчанию:
"Continuous-time"
|
PID Controller is inside a conditionally executed subsystem
- Включите порт времени дискретного интегратораoff
(по умолчанию) | on
Для ПИД-регуляторов в дискретном времени включите порт интегратора в дискретном времени, чтобы использовать свое собственное значение шага расчета интегратора в дискретном времени. Для обеспечения корректного интегрирования используйте TDTI
порт, обеспечивающий скалярное значение, и, соответственно, Β t для точных дискретных времен интегрирования.
Чтобы включить этот параметр, установите Time Domain равным Discrete-time
.
Параметры блоков:
UseExternalTs
|
Тип: строка, вектор символов |
Значения:
"on" , "off" |
По умолчанию:
"off"
|
Sample time (-1 for inherited)
- Дискретный интервал между выборкамиЗадайте шаг расчета путем ввода положительной скалярной величины значения, такого как 0,1. Дискретный шаг расчета по умолчанию -1 означает, что блок наследует свой шаг расчета от вышестоящих блоков. Однако рекомендуется явно задать шаг расчета контроллера, особенно если вы ожидаете изменения шага расчета вышестоящих блоков. Эффект коэффициентов P, I, D и N контроллера зависит от шага расчета. Таким образом, для данного набора значений коэффициентов изменение шага расчета изменяет эффективность контроллера.
Дополнительные сведения см. в разделе «Задание шага расчета».
Чтобы реализовать контроллер в непрерывном времени, установите Time domain равным Continuous-time
.
Совет
Если вы хотите запустить блок с внешне заданным или переменным шагом расчета, установите этот параметр равным -1 и поместите блок в Triggered Subsystem. Затем инициируйте подсистему в требуемый шаг расчета.
Чтобы включить этот параметр, установите Time domain равным Discrete-time
.
Параметры блоков: SampleTime |
Тип: скаляр |
Значения: -1 , положительная скалярная величина |
По умолчанию: -1 |
Integrator method
- Метод вычисления интеграла в контроллере дискретного времениForward Euler
(по умолчанию) | Backward Euler
| Trapezoidal
В дискретном времени интегральный член передаточной функции контроллера является Iα (z), где α (z) зависит от метода интегратора, заданного этим параметром.
Forward Euler
Прямоугольное (левое) приближение,
Этот метод лучше всего подходит для малого времени дискретизации, где предел Найквиста велик по сравнению с пропускной способностью контроллера. Для большего времени дискретизации, Forward Euler
способ может привести к нестабильности, даже при дискретизации стабильной за непрерывное время системы.
Backward Euler
Прямоугольное (правая) приближение назад,
Преимущество Backward Euler
способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени.
Trapezoidal
Билинейное приближение,
Преимущество Trapezoidal
способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени. Из всех доступных методов интегрирования Trapezoidal
способ приводит к ближайшему соответствию между свойствами частотного диапазона дискретизированной системы и соответствующей системы непрерывного времени.
Совет
Формула контроллера для текущей настройки отображается в Compensator formula разделе параметров блоков и под маской.
Примечание
Для BackwardEuler
или Trapezoidal
методы, вы не можете сгенерировать HDL-код для блока, если либо:
Limit output выбран, и Anti-Windup Method является чем-то иным, кроме none
.
Enable tracking mode выбран.
Для получения дополнительной информации о интегрировании в дискретном времени смотрите Блок Интегратора в дискретном времени страницы с описанием.
Чтобы включить этот параметр, установите Time Domain равным Discrete-time
и установите Controller в тип контроллера с интегральным действием.
Параметры блоков: IntegratorMethod |
Тип: строка, вектор символов |
Значения: "Forward Euler" , "Backward Euler" , "Trapezoidal" |
По умолчанию: "Forward Euler" |
Filter method
- Метод вычисления производной в контроллере дискретного времениForward Euler
(по умолчанию) | Backward Euler
| Trapezoidal
В дискретном времени производный член передаточной функции контроллера:
где α (z) зависит от метода фильтра, заданного этим параметром.
Forward Euler
Прямоугольное (левое) приближение,
Этот метод лучше всего подходит для малого времени дискретизации, где предел Найквиста велик по сравнению с пропускной способностью контроллера. Для большего времени дискретизации, Forward Euler
способ может привести к нестабильности, даже при дискретизации стабильной за непрерывное время системы.
Backward Euler
Прямоугольное (правая) приближение назад,
Преимущество Backward Euler
способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени.
Trapezoidal
Билинейное приближение,
Преимущество Trapezoidal
способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени. Из всех доступных методов интегрирования Trapezoidal
способ приводит к ближайшему соответствию между свойствами частотного диапазона дискретизированной системы и соответствующей системы непрерывного времени.
Совет
Формула контроллера для текущей настройки отображается в Compensator formula разделе параметров блоков и под маской.
Для получения дополнительной информации о интегрировании в дискретном времени смотрите Блок Интегратора в дискретном времени страницы с описанием.
Чтобы включить этот параметр, установите Time Domain равным Discrete-time
и включите Use filtered derivative.
Параметры блоков: FilterMethod |
Тип: строка, вектор символов |
Значения: "Forward Euler" , "Backward Euler" , "Trapezoidal" |
По умолчанию: "Forward Euler" |
Source
- Источник для коэффициентов усиления контроллера и фильтраВключение внешних входов для параметров позволяет вам вычислять коэффициенты ПИД и фильтровать коэффициенты внешне к блоку и предоставлять их блоку как входам сигнала.
internal
Задайте коэффициент усиления и фильтра контроллера, используя параметры блоков P, I, D и N.
external
Задайте коэффициенты ПИД и коэффициент фильтра извне, используя блок входов. На блоке появляется дополнительный входной порт для каждого параметра, который требуется для типа токового контроллера.
Внешний вход усиления полезен, например, когда вы хотите сопоставить другую параметризацию ПИД с коэффициентами ПИД блока. Можно также использовать внешний вход усиления для реализации запланированного по усилению управления ПИД. В запланированном по усилению управлении вы определяете коэффициенты ПИД по логике или другому вычислению в вашей модели и подаете их в блок.
Когда вы поставляете коэффициент усиления извне, временные изменения в интегральном и производном значениях усиления интегрируются и дифференцируются, соответственно. Этот результат возникает, потому что как в непрерывном времени, так и в дискретном времени усиления применяются к сигналу перед интегрированием или дифференцировкой. Для примера, для ПИД-регулятора в непрерывном времени с внешними входами, член интегратора реализован, как показано на следующем рисунке.
В блоке u входного сигнала умножается на внешний коэффициент усиления интегратора, I, перед интегрированием. Эта реализация дает:
Таким образом, коэффициент усиления интегратора включен в интеграл. Точно так же в производном члене блока умножение на производное усиление предшествует дифференцировке, которая заставляет дифференцировать D усиления производной.
Параметры блоков: ControllerParametersSource |
Тип: строка, вектор символов |
Значения: "internal" , "external" |
По умолчанию: "internal" |
Proportional (P)
- Пропорциональная составляющаяЗадайте конечное, действительное значение усиления для пропорциональной составляющей. Когда Controller form есть:
Parallel
- Пропорциональное действие не зависит от интегрального и производного действия. Для образца для параллельного ПИД-регулятора в непрерывном времени передаточная функция:
Для контроллера параллельной формы в дискретном времени передаточная функция является:
где Integrator method и Filter method параметры определяют α (z) и β (z), соответственно.
Ideal
- Пропорциональная пропорциональная составляющая умножает интеграл и производный член. Для образца, для идеального ПИД-регулятора в непрерывном времени, передаточная функция:
Для контроллера идеальной формы в дискретном времени передаточная функция является:
где Integrator method и Filter method параметры определяют α (z) и β (z), соответственно.
Настраиваемый: Да
Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal
и установите Controller равным PID
, PD
, PI
, или P
.
Параметры блоков: P |
Тип: скаляр, вектор |
По умолчанию: 1 |
Integral (I)
- Интегральная составляющаяЗадайте конечное, действительное значение усиления для интегральной составляющей.
Настраиваемый: Да
Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal
, и установите Controller тип, который имеет интегральное действие.
Параметры блоков: I |
Тип: скаляр, вектор |
По умолчанию: 1 |
Derivative (D)
- Производный коэффициент усиленияЗадайте конечное, действительное значение усиления для производного усиления.
Настраиваемый: Да
Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal
, и установите Controller равным PID
или PD
.
Параметры блоков: D |
Тип: скаляр, вектор |
По умолчанию: 0 |
Use filtered derivative
- Применить фильтр к производному терминуon
(по умолчанию) | off
Для только ПИД-регуляторов в дискретном времени очистите эту опцию, чтобы заменить отфильтрованную производную нефильтрованным дифференциатором в дискретном времени. Когда вы делаете это, производный член передаточной функции контроллера становится:
Для непрерывных ПИД-регуляторов производный член всегда фильтруется.
Чтобы включить этот параметр, установите Time domain равным Discrete-time
, и установите Controller тип, который имеет производное действие.
Параметры блоков: UseFilter |
Тип: строка, вектор символов |
Значения: "on" , "off" |
По умолчанию: "on" |
Filter coefficient (N)
- Производный коэффициент фильтраЗадайте конечное, действительное значение усиления для коэффициента фильтра. Коэффициент фильтра определяет положение полюса фильтра в производном действии блока. Расположение полюса фильтра зависит от параметра Time domain.
Когда Time domain Continuous-time
, положение шеста s = -N
.
Когда Time domain Discrete-time
расположение шеста зависит от параметра Filter method.
Метод фильтра | Расположение полюса фильтра |
---|---|
Forward Euler | |
Backward Euler | |
Trapezoidal |
Блок не поддерживает N = Inf
(идеальная нефильтрованная производная). Когда Time domain Discrete-time
можно удалить Use filtered derivative, чтобы удалить производный фильтр.
Настраиваемый: Да
Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal
и установите Controller равным PID
или PD
.
Параметры блоков: N |
Тип: скаляр, вектор |
По умолчанию: 100 |
Select tuning method
- Инструмент для автоматической настройки коэффициентов контроллераTransfer Function Based (PID Tuner App)
(по умолчанию) | Frequency Response Based
Если у вас есть программное обеспечение Simulink Control Design, можно автоматически настроить коэффициенты ПИД. Для этого используйте этот параметр для выбора инструмента настройки и нажмите кнопку Tune.
Transfer Function Based (PID Tuner App)
Используйте PID Tuner, которая позволяет вам в интерактивном режиме настроить коэффициенты ПИД при рассмотрении соответствующих откликов системы, чтобы подтвердить эффективность. По умолчанию PID Tuner работает с линеаризацией вашей модели объекта управления. Для моделей, которые не могут быть линеаризированы, можно настроить ПИД коэффициенты на модель объекта управления, оцененную из моделируемых или измеренный отклик данных. Для получения дополнительной информации смотрите Введение в настройку ПИД на основе модели в Simulink (Simulink Control Design).
Frequency Response Based
Используйте Frequency Response Based PID Tuner, которая настраивает коэффициенты ПИД-регулятора на основе данных оценки частотной характеристики, полученных симуляций. Этот подход настройки особенно полезен для объектов, которые не линеаризируются или линеаризируются до нуля. Для получения дополнительной информации смотрите Проект ПИД-регулятора из данных частотной характеристики объекта (Simulink Control Design).
Оба этих метода настройки предполагают одношаговое строение управления. Программное обеспечение Simulink Control Design включает другие подходы настройки, которые подходят для более сложных строений. Дополнительные сведения о других способах настройки блока PID Controller см. в разделе Выбор подхода к системе управления (Simulink Control Design).
Enable zero-crossing detection
- Обнаружение пересечений нуля при сбросе и при входе или выходе из состояния насыщенияon
(по умолчанию) | off
Обнаружение пересечения нулем может точно обнаружить разрывы сигнала, не прибегая к чрезмерно маленьким временным шагам, которые могут привести к длительным временам симуляции. Если вы выбираете Limit output или активируете External reset в блоке ПИД-регулятор, активация обнаружения пересечения нулем может сократить время расчетов в симуляции. Выбор этого параметра активирует обнаружение пересечения нулем:
При сбросе начального состояния
При входе в верхнее или более низкое состояние насыщения
При выходе из верхнего или нижнего состояния насыщения
Для получения дополнительной информации об обнаружении пересечения нулем см. «Обнаружение пересечения нулем».
Параметры блоков: ZeroCross |
Тип: строка, вектор символов |
Значения: "on" , "off" |
По умолчанию: "on" |
Source
- Источник для интегратора и производных начальных условийinternal
(по умолчанию) | external
Simulink использует начальные условия, чтобы инициализировать интегратор и производную-фильтр (или нефильтрованную производную) выход в начале симуляции или при заданном событии триггера. (См. параметр External reset.) Эти начальные условия определяют выход начального блока. Используйте этот параметр, чтобы выбрать, как задать начальные значения условий для блока.
internal
Задайте начальные условия с помощью параметров Integrator Initial condition и Filter Initial condition. Если Use filtered derivative не выбран, используйте параметр Differentiator, чтобы задать начальное условие для нефильтрованного дифференциатора вместо начального условия фильтра.
external
Задайте начальные условия внешне с помощью блока входов. Дополнительные входные порты Io и Do появляются на блоке. Если Use filtered derivative не выбран, поставьте начальное условие для нефильтрованного дифференциатора в Do вместо начального условия фильтра.
Параметры блоков:
InitialConditionSource |
Тип: строка, вектор символов |
Значения:
"internal" , "external" |
По умолчанию:
"internal"
|
Integrator
- Начальные условия интегратораSimulink использует начальные условия интегратора, чтобы инициализировать интегратора в начале симуляции или при заданном событии триггера (см. External reset). Начальные условия интегратора и начальное условие фильтра определяют начальный выход блока PID controller.
Невозможно начальные условия интегратора NaN
или Inf
.
Чтобы использовать этот параметр, на вкладке Initialization установите Source равным internal
, и установите Controller тип, который имеет интегральное действие.
Параметры блоков: InitialConditionForIntegrator |
Тип: скаляр, вектор |
По умолчанию: 0 |
Filter
- Начальное условие фильтраSimulink использует начальное условие фильтра, чтобы инициализировать производный фильтр в начале симуляции или при заданном событии триггера (см. External reset). Начальные условия интегратора и начальное условие фильтра определяют начальный выход блока PID controller.
Начальное условие фильтра не может быть NaN
или Inf
.
Чтобы использовать этот параметр, на вкладке Initialization установите Source равным internal
, и использовать контроллер, который имеет производный фильтр.
Параметры блоков: InitialConditionForFilter |
Тип: скаляр, вектор |
По умолчанию: 0 |
Differentiator
- Начальное условие для нефильтрованной производнойКогда вы используете нефильтрованную производную, Simulink использует этот параметр, чтобы инициализировать дифференциатор в начале симуляции или при заданном событии триггера (см. External reset). Начальные условия интегратора и производное начальное условие определяют начальный выход блока PID controller.
Производное начальное условие не может быть NaN
или Inf
.
Чтобы использовать этот параметр, установите Time domain равным Discrete-time
, снимите флажок Use filtered derivative, и на вкладке Initialization установите Source равным internal
.
Параметры блоков: DifferentiatorICPrevScaledInput |
Тип: скаляр, вектор |
По умолчанию: 0 |
Initial condition setting
- Место, в котором применяется начальное условиеState (most efficient)
(по умолчанию) | Output
Используйте этот параметр, чтобы задать, применять ли параметр Integrator Initial condition и Filter Initial condition к соответствующему состоянию блока или выходу. Вы можете изменить этот параметр только в командной строке, используя set_param
для установки InitialConditionSetting
параметр блока.
State (most efficient)
Используйте эту опцию во всех ситуациях, кроме тех, когда блок находится в триггируемой подсистеме или подсистеме вызова функций и включен упрощенный режим инициализации.
Output
Используйте эту опцию, когда блок находится в триггируемой подсистеме или подсистеме вызова функций и включен упрощенный режим инициализации.
Для получения дополнительной информации о параметре Initial condition setting, см. Discrete-Time Integrator блок.
Этот параметр доступен только при программном использовании.
Параметры блоков: InitialConditionSetting |
Тип: строка, вектор символов |
Значения: "state" , "output" |
По умолчанию: "state" |
External reset
- Триггер для сброса значений интегратора и фильтраnone
(по умолчанию) | rising
| falling
| either
| level
Задайте условие триггера, которое заставляет блок сбрасывать интегратор и фильтровать к начальным условиям. (Если Use filtered derivative не выбран, триггер сбрасывает интегратор и дифференциатор к начальным условиям.) Выбор любой опции кроме none
включает порт Reset на блоке для внешнего сигнала сброса.
none
Интегратор и выходы фильтра (или дифференциатора) устанавливаются в начальные условия в начале симуляции и не сбрасываются во время симуляции.
rising
Сбросьте выходы, когда сигнал сброса имеет повышающееся ребро.
falling
Сбросьте выходы, когда сигнал сброса имеет падающее ребро.
either
Обнулите выходы, когда сигнал сброса поднимается или падает.
level
Сбросьте выходы, когда сигнал сброса либо:
Ненулевое значение на текущем временном шаге
Изменяется с ненулевого на предыдущем временном шаге до нуля на текущем временном шаге
Эта опция содержит выходы начальных условий, в то время как сигнал сброса является ненулевым.
Чтобы включить этот параметр, установите Controller на тип, который имеет производное или интегральное действие.
Параметры блоков: ExternalReset |
Тип: строка, вектор символов |
Значения:
"none" , "rising" , "falling" , "either" , "level" |
По умолчанию: "none" |
Ignore reset when linearizing
- Принудительная линеаризация, чтобы игнорировать сбросoff
(по умолчанию) | on
Выберите, чтобы заставить команды линеаризации Simulink и Simulink Control Design игнорировать любой механизм сброса, заданный в параметре External reset. Игнорирование состояний сброса позволяет вам линеаризировать модель вокруг рабочей точки, даже если эта рабочая точка заставляет блок сбрасываться.
Параметры блоков: IgnoreLimit |
Тип: строка, вектор символов |
Значения: "off" , "on" |
По умолчанию: "off" |
Enable tracking mode
- Активируйте отслеживание сигналаoff
(по умолчанию) | on
Отслеживание сигнала позволяет блоку следовать за сигналом отслеживания, который вы предоставляете в TR порту. Когда отслеживание сигнала активно, различие между сигналом отслеживания и выходным сигналом блока подается назад на вход интегратора с усилением Kt
, заданный параметром Tracking gain (Kt). Отслеживание сигналов имеет несколько применений, включая бесшумную передачу управления и избегание насыщения в многоуровневых структурах управления.
Используйте отслеживание сигналов, чтобы добиться беспроблемной передачи управления в системах, которые переключаются между двумя контроллерами. Предположим, что вы хотите передать управление между ПИД-регулятором и другим контроллером. Для этого подключение контроллер выхода к входу TR как показано на следующем рисунке.
Для получения дополнительной информации смотрите Bumpless Control Transfer.
Используйте отслеживание сигнала, чтобы предотвратить обмотку блока в мультициклах управлению, как в следующей модели.
Подсистема внутреннего цикла содержит блоки, показанные на следующей схеме.
Поскольку ПИД-регулятор отслеживает выход внутреннего цикла, его выход никогда не превышает насыщенный выход внутреннего цикла. Для получения дополнительной информации смотрите Prevent Block Windup в Multiloop Control.
Чтобы включить этот параметр, установите Controller на тип, который имеет интегральное действие.
Параметры блоков:
TrackingMode
|
Тип: строка, вектор символов |
Значения: "off" , "on" |
По умолчанию: "off" |
Tracking coefficient (Kt)
- Усиление цикла обратной связи отслеживания сигналовКогда вы выбираете Enable tracking mode, различие между TR сигнала и выходным блоком подается назад на вход интегратора с усилением Kt
. Используйте этот параметр, чтобы задать коэффициент усиления в этом цикле обратной связи.
Чтобы включить этот параметр, выберите Enable tracking mode.
Параметры блоков: Kt |
Тип: скаляр |
По умолчанию: 1 |
Limit Output
- Предельный выход блока к заданным значениям насыщенияoff
(по умолчанию) | on
Активация этой опции ограничивает выход блока, так что вам не нужен отдельный блок Насыщения после контроллера. Это также позволяет активировать встроенный в блок механизм защиты от обмотки ветра (см. параметр Anti-windup method). Задайте выходы сигнала с помощью параметров Lower limit и Upper limit. Можно также задать пределы насыщения внешне как блок порты входа.
Параметры блоков: LimitOutput |
Тип: строка, вектор символов |
Значения: "off" , "on" |
По умолчанию: "off" |
Source
- Источник для выходных пределов насыщенияИспользуйте этот параметр, чтобы задать, как задать верхний и нижний пределы насыщения выходного сигнала блока.
internal
Задайте выходы сигнала с помощью параметров Upper limit и Lower limit.
external
Задайте пределы насыщения выхода извне, используя блок порты входа. Дополнительные входные порты up и lo появляются на блоке. Можно использовать входные порты, чтобы реализовать верхние и более низкие пределы насыщения выхода, определенные логикой или другими вычислениями в модели Simulink и переданные блоку.
Параметры блоков:
SatLimitsSource
|
Тип: строка, вектор символов |
Значения:
"internal" , "external" |
По умолчанию:
"internal"
|
Upper limit
- Верхний предел насыщения для блочного выходаInf
(по умолчанию) | скаляромЗадайте верхний предел для выхода блока. Выход блока удерживается на верхнем пределе насыщения всякий раз, когда взвешенная сумма пропорциональных, интегральных и производных действий превышает это значение.
Чтобы включить этот параметр, выберите Limit output.
Параметры блоков: UpperSaturationLimit |
Тип: скаляр |
По умолчанию: Inf |
Lower limit
- Нижний предел насыщения для блочного выхода-Inf
(по умолчанию) | скаляромЗадайте нижний предел для выхода блока. Выход блока удерживается на пределе Нижнего Насыщения всякий раз, когда взвешенная сумма пропорциональных, интегральных и производных действий идет ниже этого значения.
Чтобы включить этот параметр, выберите Limit output.
Параметры блоков: LowerSaturationLimit |
Тип: скаляр |
По умолчанию: -Inf |
Ignore saturation when linearizing
- Принудительная линеаризация, чтобы игнорировать выходные пределыoff
(по умолчанию) | on
Команды линеаризации Force Simulink и Simulink Control Design, чтобы игнорировать выходные пределы блоков, заданные в параметрах Upper limit и Lower limit. Игнорирование выходных пределов позволяет вам линеаризировать модель вокруг рабочей точки, даже если эта рабочая точка заставляет блок превышать выходные пределы.
Чтобы включить этот параметр, выберите параметр Limit output.
Параметры блоков: LinearizeAsGain |
Тип: строка, вектор символов |
Значения: "off" , "on" |
По умолчанию: "off" |
Anti-windup method
- Метод защиты от обмотки интегратора none
(по умолчанию) | back-calculation
| clamping
Когда вы выбираете Limit output, и взвешенная сумма компонентов контроллера превышает заданные выходные пределы, выход блока удерживается на заданном пределе. Однако выход интегратора может продолжать расти (насыщение интегратора), увеличивая различие между выходом блока и суммой компонентов блока. Другими словами, внутренние сигналы в блоке могут быть неограниченными, даже если выход выглядит ограниченным пределами насыщения. Без механизма предотвращения насыщения интегратора возможны два результата:
Если знак входного сигнала никогда не меняется, интегратор продолжает интегрироваться, пока не переполнится. Значение переполнения является максимальным или минимальным значением для типа данных выхода интегратора.
Если знак входного сигнала изменяется, когда взвешенная сумма увеличивается за пределы выходных параметров, это может занять много времени, чтобы размотать интегратор и вернуть взвешенную сумму в пределах предела насыщения блока.
В любом случае может пострадать эффективность контроллера. Чтобы бороться с эффектами обмотки без механизма защиты от обмотки, может потребоваться отключить контроллер (для примера, путем уменьшения коэффициентов усиления контроллера), что приводит к медленному контроллеру. Чтобы избежать этой проблемы, активируйте механизм защиты от насыщения с помощью этого параметра.
none
Не используйте механизм защиты от обмотки.
back-calculation
Раскрутите интегратор, когда выход блока насыщается путем обратной передачи интегратору различия между насыщенным и ненасыщенным управляющим сигналом. Следующая схема представляет схему обратной связи обратного вычисления для контроллера непрерывного времени. Чтобы увидеть фактическую схему обратной связи для строения контроллера, щелкните правой кнопкой мыши по блоку и выберите Mask > Look Under Mask.
Используйте параметр Back-calculation coefficient (Kb), чтобы задать коэффициент усиления схемы обратной связи против обмотки возбуждения. Устанавливать Kb = I
обычно удовлетворительно, или для контроллеров с производным действием,
Kb = sqrt(I*D)
. Обратный расчет может быть эффективным для объектов с относительно большим потерей времени [1].
clamping
Интегрирование останавливается, когда сумма компонентов блока превышает выходные пределы, и выход интегратора и вход блока имеют один и тот же знак. Интегрирование возобновляется, когда сумма компонентов блока превышает выходные пределы, и выход интегратора и вход блока имеют противоположный знак. Зажим иногда упоминается как условное интегрирование.
Зажим может быть полезен для объектов с относительно небольшими потерей времени, но может привести к плохому переходному процессу для больших потерей времени [1].
Чтобы включить этот параметр, выберите параметр Limit output.
Параметры блоков:
AntiWindupMode
|
Тип: строка, вектор символов |
Значения:
"none" , "back-calculation" , "clamping" |
По умолчанию:
"none"
|
Back-calculation coefficient (Kb)
- Коэффициент усиления контура обратной связи против обмотки возбужденияThe back-calculation
метод anti-windup размотает интегратор, когда выход блока насыщается. Это происходит путем обратной передачи интегратору различия между насыщенным и ненасыщенным сигналом управления. Используйте параметр Back-calculation coefficient (Kb), чтобы задать коэффициент усиления схемы обратной связи против обмотки возбуждения. Для получения дополнительной информации смотрите параметр Anti-windup method.
Чтобы включить этот параметр, выберите параметр Limit output и установите параметр Anti-windup method равным back-calculation
.
Параметры блоков: Kb |
Тип: скаляр |
По умолчанию: 1 |
Параметры на этой вкладке в основном используются при генерации кода с фиксированной точкой с помощью Fixed-Point Designer™. Они определяют, как числовые величины, связанные с блоком, хранятся и обрабатываются при генерации кода.
Если необходимо сконфигурировать типы данных для генерации кода с фиксированной точкой, нажмите Open Fixed-Point Tool и используйте этот инструмент, чтобы сконфигурировать остальные параметры на вкладке. Дополнительные сведения об использовании Fixed-Point Tool см. в разделе Автоматическое сканирование объектов данных с использованием Fixed-Point Tool (Fixed-Point Designer).
После использования Fixed-Point Tool можно использовать параметры на этой вкладке, чтобы при необходимости скорректировать настройки типа данных с фиксированной точкой. Для каждой величины, связанной с блоком, можно задать:
Тип данных с плавающей точкой или с фиксированной точкой, включая то, унаследован ли тип данных от вышестоящих значений в блоке.
Минимальное и максимальное значения для величины, которые определяют способ масштабирования величины для представления с фиксированной точкой.
Для получения помощи в выборе соответствующих значений щелкните, чтобы открыть помощник по типам данных для соответствующего количества. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.
Конкретные величины, перечисленные на вкладке Типы данных (Data Types), варьируются в зависимости от способа конфигурирования блока ПИД-регулятора. В целом можно сконфигурировать типы данных для следующих типов величин:
Выход продукта - Сохраняет результат умножения, выполненного под маской блока. Для примера P product output сохраняет выход блока усиления, который умножает вход блока на пропорциональную составляющую P.
Параметр - Сохраняет значение числовых параметров блоков, такого как P, I или D.
Блок выход - Сохраняет выход блока, который находится под маской ПИД-регулятора блока. Например, используйте Integrator output, чтобы задать тип данных выхода блока под названием Integrator. Этот блок находится под маской в Подсистеме Интегратора и вычисляет термин интегратора действия контроллера.
Аккумулятор - Сохраняет значения, сопоставленные с суммовым блоком. Для примера SumI2 Accumulator устанавливает тип данных аккумулятора, сопоставленный с суммовым блоком SumI2. Этот блок находится под маской в подсистеме Back Calculation подсистемы Anti-Windup.
В целом, можно найти блок, сопоставленный с любым перечисленным параметром, заглянув под маску блока ПИД-регулятор и исследуя его подсистемы. Можно также использовать Model Explorer, чтобы найти в маске имя перечисленного параметра, например SumI2
. (См. Model Explorer.)
Соответствие входных и внутренних типов данных
По умолчанию для всех типов данных в блоке задано значение Inherit: Inherit via internal rule
. С помощью этой настройки Simulink выбирает типы данных для балансировки числовой точности, эффективности и размера сгенерированного кода с учетом свойств встроенного целевого оборудования.
При некоторых условиях может возникнуть несовместимость между типами данных в блоке. Например, за непрерывное время блок Integrator под маской может принимать только сигналы типа double
. Если блок входной сигнал является типом, который не может быть преобразован в double
, таких как uint16
Внутренние правила наследования типов генерируют ошибку при генерации кода.
Чтобы избежать таких ошибок, можно использовать настройки Типы данных для принудительного преобразования типа данных. Например, можно явным образом задать P product output, I product output и D product output double
, гарантируя, что сигналы, достигающие интеграторов в непрерывном времени, имеют тип double
.
В целом, не рекомендуется использовать блок в непрерывное время для приложений генерации кода. Однако подобные ошибки типа данных могут возникнуть в дискретном времени, если вы явным образом установите некоторые значения для типов данных, которые несовместимы с ограничениями нисходящего сигнала в блоке. В таких случаях используйте настройки Типы данных, чтобы убедиться, что все типы данных внутренне совместимы.
Рабочие параметры с фиксированной точкойInteger rounding mode
- Режим округления для операций с фиксированной точкойFloor
(по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Задайте режим округления для операций с фиксированной точкой. Для получения дополнительной информации см. раздел Округление (Fixed-Point Designer).
Параметры блоков всегда округлятся до ближайшего представимого значения. Чтобы контролировать округление параметров блоков, введите выражение с помощью MATLAB® функция округления в поле маски.
Параметры блоков:
RndMeth
|
Тип: Вектор символов |
Значения:
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
По умолчанию:
'Floor'
|
Saturate on integer overflow
- Метод действия переполненияoff
(по умолчанию) | on
Укажите, будут ли переполнения насыщаться или переноситься.
off
- Переполнения переходят к соответствующему значению, которое может представлять тип данных.
Для примера число 130 не помещается в 8-разрядное целое число со знаком и переносами к -126.
on
- Переполнения достигают минимального или максимального значения, которое может представлять тип данных.
Для примера переполнение, сопоставленное с 8-битным целым числом со знаком, может насыщаться до -128 или 127.
Совет
Рассмотрите выбор этого флажка, когда ваша модель имеет возможное переполнение, и вы хотите явную защиту от насыщения в сгенерированном коде.
Рассмотрите снятие этого флажка, когда вы хотите оптимизировать эффективность вашего сгенерированного кода.
Снятие этого флажка также помогает вам избежать переопределения того, как блок обрабатывает сигналы вне области допустимого. Для получения дополнительной информации смотрите Поиск и устранение ошибок диапазона сигнала.
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, а не только к выходу или результату.
В целом процесс генерации кода может обнаружить, когда переполнение невозможно. В этом случае генератор кода не производит код насыщения.
Параметры блоков: SaturateOnIntegerOverflow |
Тип: Вектор символов |
Значения: 'off' | 'on' |
По умолчанию: 'off' |
Lock data type settings against changes by the fixed-point tools
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типов данных, заданных в этом блоке. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (Fixed-Point Designer).
Параметры блоков: LockScale |
Тип: Вектор символов |
Значения: 'off' | 'on' |
По умолчанию: 'off' |
Параметры на этой вкладке в основном используются при генерации кода.
State name (e.g., 'position')
- Имя для непрерывного фильтра и состояний интегратора''
(по умолчанию) | вектор символовПрисвойте уникальное имя состоянию, сопоставленному с интегратором или фильтром, для непрерывного времени ПИД-регуляторов. (Для получения информации об именах состояний в ПИД-контроллере в дискретном времени смотрите параметр State name.) Используется имя состояния, например:
Для соответствующей переменной в сгенерированном коде
Как часть имени хранилища при регистрации состояний во время симуляции
Для соответствующего состояния в линейной модели получите путем линеаризации блока
Допустимое имя состояния начинается с буквенного символа или символа подчеркивания, за которым следуют алфавитно-цифровые символы или символы подчеркивания.
Чтобы включить этот параметр, установите Time domain равным Continuous-time
.
Параметр: IntegratorContinuousStateAttributes , FilterContinuousStateAttributes |
Тип: Вектор символов |
По умолчанию: '' |
State name
- Имена для состояний фильтра в дискретном времени и интегратораПрисвойте уникальное имя состоянию, сопоставленному с интегратором или фильтром, для ПИД-регуляторов в дискретном времени. (Для получения информации об именах состояний в ПИД-контроллере в непрерывном времени смотрите параметр State name (e.g., 'position').)
Допустимое имя состояния начинается с буквенного символа или символа подчеркивания, за которым следуют алфавитно-цифровые символы или символы подчеркивания. Используется имя состояния, например:
Для соответствующей переменной в сгенерированном коде
Как часть имени хранилища при регистрации состояний во время симуляции
Для соответствующего состояния в линейной модели получите путем линеаризации блока
Для получения дополнительной информации об использовании имен состояний в генерации кода смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Simulink Coder).
Чтобы включить этот параметр, установите Time domain равным Discrete-time
.
Параметр: IntegratorStateIdentifier , FilterStateIdentifier |
Тип: строка, вектор символов |
По умолчанию: "" |
State name must resolve to Simulink signal object
- Требуйте, чтобы имя состояния разрешилось к объекту сигналаoff
(по умолчанию) | on
Выберите этот параметр, чтобы потребовать, чтобы интегратор в дискретном времени или имя состояния фильтра разрешилось объекту сигнала Simulink.
Чтобы включить этот параметр для интегратора в дискретном времени или состояния фильтра:
Установите Time domain значение Discrete-time
.
Задайте значение для интегратора или State name фильтра.
Установите значение параметра конфигурации модели Signal resolution отличное от None
.
Установка этого флажка отключает Code generation storage class для соответствующего интегратора или состояния фильтра.
Параметры блоков: IntegratorStateMustResolveToSignalObject , FilterStateMustResolveToSignalObject |
Тип: строка, вектор символов |
Значения: "off" , "on" |
По умолчанию: "off" |
Code generation storage class
- Класс памяти для генерации кодаAuto
(по умолчанию) | ExportedGlobal
| ImportedExtern
| ImportedExternPointer
Выберите класс памяти состояний для генерации кода. Если вам не нужно взаимодействовать с внешним кодом, выберите Auto
.
Для получения дополнительной информации смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Simulink Coder) и Организуйте Данные Параметра в Структуру при помощи Класса Памяти (Embedded Coder).
Чтобы включить этот параметр для интегратора в дискретном времени или состояния фильтра:
Установите Time domain значение Discrete-time
.
Задайте значение для интегратора или State name фильтра.
Установите значение параметра конфигурации модели Signal resolution отличное от None
.
Параметры блоков: IntegratorRTWStateStorageClass , FilterRTWStateStorageClass |
Тип: строка, вектор символов |
Значения: "Auto" , "ExportedGlobal" , "ImportedExtern" | "ImportedExternPointer" |
По умолчанию: "Auto" |
Code generation storage type qualifier
- Квалификатор типа склада"const"
| "volatile"
| ...Укажите классификатор типа хранилища, например const
или volatile
.
Примечание
Этот параметр будет удален в следующем релизе. Чтобы применить проверку типа хранилища к данным, используйте пользовательские классы памяти и разделы памяти. Если вы не используете цель генерации кода на основе ERT с Embedded Coder®пользовательские классы памяти и разделы памяти не влияют на сгенерированный код.
Чтобы включить этот параметр, установите Code generation storage class любое значение, кроме Auto
.
Параметры блоков: IntegratorRTWStateStorageTypeQualifier , FilterRTWStateStorageTypeQualifier |
Тип: строка, вектор символов |
Значения: "" , "const" , "volatile" |
По умолчанию: "" |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
ReferenceBlock
параметр возвращает другой путьПоведение изменено в R2020b
Начиная с R2020b, get_param
функция возвращает другое значение для ReferenceBlock
параметр. The ReferenceBlock
параметр является свойством, общим для всех блоков Simulink и задает путь библиотечного блока, с которым связан блок. Блоки PID Controller и Discrete PID Controller теперь связываются с 'pid_lib/PID Controller'
. Ранее блоки, связанные с 'simulink/Continuous/PID Controller'
.
Это изменение не влияет ни на какие другие функциональные возможности или рабочие процессы. Вы по-прежнему можете использовать предыдущий путь с set_param
функция.
[1] Visioli, A., «Modified Anti-Windup Scheme for ПИД-регуляторы», IEE Proceedings - Control Theory and Applications, Vol. 150, Number 1, January 2003
Для непрерывных ПИД-регуляторов (Time domain установлено на Continuous-time
):
Рассмотрите использование Model Discretizer, чтобы сопоставить блоки в непрерывном времени с дискретными эквивалентами, которые поддерживают генерацию кода. Чтобы получить доступ к Дискретизатору модели, из вашей модели, на вкладке Apps, под Control Systems, нажмите Model Discretizer.
Не рекомендуемый для производственного кода.
Для ПИД-регуляторов в дискретном времени (Time domain установлено на Discrete-time
):
Зависит от абсолютного времени размещения в иерархии триггируемой подсистемы.
Сгенерированный код полагается на memcpy
или memset
функции (string.h
) при определенные обстоятельства.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Этот блок имеет одну архитектуру HDL по умолчанию.
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Генерация HDL-кода поддерживается только для ПИД-регуляторов в дискретном времени (Time domain установлено на Discrete-time
).
Если для Integrator method задано значение BackwardEuler
или Trapezoidal
невозможно сгенерировать HDL-код для блока при любом из следующих условий:
Limit output выбран, и Anti-Windup Method является чем-то иным, кроме none
.
Enable tracking mode выбран.
Чтобы сгенерировать HDL-код:
Используйте ПИД-регулятор в дискретном времени. В разделе Time domain задайте Discrete-time.
Установите флажок Use filtered derivative.
Задайте начальные условия фильтра и интегратора внутри. На вкладке Initialization задайте Source следующим internal
.
Можно задать коэффициенты фильтра внутренне и внешне для генерации HDL-кода. На вкладке Main, для Source, можно использовать internal
или external
.
Установите External reset значение none
.
Когда вы используете двойные входы, не устанавливайте Anti-windup Method на clamping
.
Генерация кода с фиксированной точкой поддерживается только для ПИД-регуляторов в дискретном времени (Time domain установлено на Discrete-time
).
Derivative | Discrete PID Controller | Gain | Integrator | PID Controller (2DOF)
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.