PID Controller

Непрерывное время или дискретное время ПИД-регулятора

  • Библиотека:
  • Simulink/Непрерывный

  • PID Controller block

Описание

Блок 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.

Порты

Вход

расширить все

Различие между опорным сигналом и выходом системы, находящейся под управлением, как показано на рисунке.

Когда сигнал ошибки является вектором, блок действует отдельно на каждый сигнал, векторизируя коэффициенты ПИД и формируя векторный выход сигнал тех же размерностей. Можно задать ПИД и некоторые другие параметры как векторы тех же размерностей, что и входной сигнал. Это эквивалентно указанию отдельного ПИД-регулятора для каждого входа в входном сигнале.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

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

Зависимости

Чтобы включить этот порт, установите Controller parameters Source равным external.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

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

Когда вы поставляете коэффициент усиления извне, время, изменения в интегральную составляющую, также интегрируется. Этот результат происходит из-за того, как коэффициенты ПИД реализуются в блоке. Для получения дополнительной информации смотрите параметр Controller parameters Source.

Зависимости

Чтобы включить этот порт, установите Controller parameters Source равным externalи установите Controller в тип контроллера, который имеет интегральное действие.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

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

Когда вы поставляете усиления извне, временные изменения в производном усилении также дифференцируются. Этот результат происходит из-за того, как коэффициенты ПИД реализуются в блоке. Для получения дополнительной информации смотрите параметр Controller parameters Source.

Зависимости

Чтобы включить этот порт, установите Controller parameters Source равным externalи установите Controller в тип контроллера, который имеет производное действие.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

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

Зависимости

Чтобы включить этот порт, установите Controller parameters Source равным externalи установите Controller в тип контроллера, который имеет отфильтрованную производную.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Триггер для сброса интегратора и фильтрации до начальных условий. Значение параметра 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

Начальные условия интегратора, обеспечиваемое от источника, внешнего по отношению к блоку.

Зависимости

Чтобы включить этот порт, установите Initial conditions Source равным externalи установите Controller в тип контроллера, который имеет интегральное действие.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Начальное условие производного фильтра, обеспечиваемое от источника, внешнего по отношению к блоку.

Зависимости

Чтобы включить этот порт, установите Initial conditions Source равным externalи установите Controller в тип контроллера, который имеет производное действие.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Верхний предел выходного сигнала блока, обеспечиваемый от внешнего источника блока. Если взвешенная сумма пропорциональных, интегральных и производных действий превышает значение, заданное в этом порте, выход блока удерживается на этом значении.

Зависимости

Чтобы включить этот порт, выберите Limit output и установите Source насыщения выхода равным external.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Нижний предел выхода блока, обеспечиваемый от внешнего источника блока. Если взвешенная сумма пропорциональных, интегральных и производных действий идет ниже значения, заданного в этом порте, выход блока удерживается на этом значении.

Зависимости

Чтобы включить этот порт, выберите Limit output и установите Source насыщения выхода равным external.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Сигнал на контроллер выход для отслеживания. Когда отслеживание сигнала активно, различие между сигналом отслеживания и выходным сигналом блока подается назад на вход интегратора. Отслеживание сигналов полезно для реализации бесшумной передачи управления в системах, которые переключаются между двумя контроллерами. Это также может быть полезно, чтобы предотвратить обмотку блока в многоуровневых системах управления. Для получения дополнительной информации смотрите параметр Enable tracking mode.

Зависимости

Чтобы включить этот порт, выберите параметр Enable tracking mode.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Время дискретного интегратора, предоставляемое в виде скаляра блоку. Можно использовать собственное значение шага расчета интегратора в дискретном времени, которое определяет скорость, с которой блок будет запускаться или в Simulink, или на внешнем оборудовании. Значение времени интегратора в дискретном времени должно совпадать со средней частотой дискретизации внешних прерываний, когда блок используется внутри условно выполненной подсистемы.

Другими словами, можно задать Ts для любого из методов интегратора ниже таким образом, чтобы значение совпадало со средней частотой дискретизации внешних прерываний. В дискретном времени производный член передаточной функции контроллера:

D[N1+Nα(z)],

где α (z) зависит от метода интегратора, заданного этим параметром.

Forward Euler

α(z)=Tsz1.

Backward Euler

α(z)=Tszz1.

Trapezoidal

α(z)=Ts2z+1z1.

Для получения дополнительной информации о интегрировании в дискретном времени смотрите 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

Выход

расширить все

Контроллер выход, обычно основанный на сумме входного сигнала, интеграле входного сигнала и производной входного сигнала, взвешенной пропорциональными, интегральными и производными параметрами усиления. Полюс первого порядка фильтрует производное действие. Какие условия присутствуют в сигнале контроллера, зависит от того, что вы выбираете для параметра Controller. Передаточная функция базового контроллера для текущих настроек отображается в Compensator formula разделе параметров блоков и под маской. Другие параметры изменяют выход блока, такие как пределы насыщения, заданные параметрами Upper Limit и Lower Limit насыщения.

Контроллер выход является вектором сигналом, когда любой из входов является вектором сигналом. В этом случае блок действует как N независимые ПИД-регуляторы, где N - количество сигналов в векторе входа.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Параметры

расширить все

Задайте, какой из пропорциональных, интегральных и производных членов находится в контроллере.

PID

Пропорциональное, интегральное и производное действие.

PI

Только пропорциональное и интегральное действие.

PD

Пропорциональное и производное только действие.

P

Только пропорциональное действие.

I

Только интегральное действие.

Совет

Передаточная функция контроллера для текущей настройки отображается в Compensator formula разделе параметров блоков и под маской.

Программное использование

Параметры блоков: Controller
Тип: строка, вектор символов
Значения: "PID", "PI", "PD", "P", "I"
По умолчанию: "PID"

Задайте, является ли структура контроллера параллельной или идеальной.

Parallel

Контроллер выход является суммой пропорциональных, интегральных и производных действий, взвешенных независимо друг от друга по P, I и D, соответственно. Для примера, для непрерывного времени ПИД-регулятора параллельной формы, передаточная функция:

Cpar(s)=P+I(1s)+D(Nss+N).

Для контроллера параллельной формы в дискретном времени передаточная функция является:

Cpar(z)=P+Iα(z)+D[N1+Nβ(z)],

где Integrator method и Filter method параметры определяют α (z) и β (z), соответственно.

Ideal

Пропорциональная составляющая действует на сумму всех действий. Для примера, для непрерывного времени ПИД-регулятора идеальной формы, передаточная функция:

Cid(s)=P[1+I(1s)+D(Nss+N)].

Для контроллера идеальной формы в дискретном времени передаточная функция является:

Cid(z)=P[1+Iα(z)+DN1+Nβ(z)],

где Integrator method и Filter method параметры определяют a (z) и b (z), соответственно.

Совет

Передаточная функция контроллера для текущих настроек отображается в Compensator formula разделе параметров блоков и под маской.

Программное использование

Параметры блоков: Controller
Тип: строка, вектор символов
Значения: "Parallel", "Ideal"
По умолчанию: "Parallel"

Когда вы выбираете 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"

Для ПИД-регуляторов в дискретном времени включите порт интегратора в дискретном времени, чтобы использовать свое собственное значение шага расчета интегратора в дискретном времени. Для обеспечения корректного интегрирования используйте TDTI порт, обеспечивающий скалярное значение, и, соответственно, Β t для точных дискретных времен интегрирования.

Зависимости

Чтобы включить этот параметр, установите Time Domain равным Discrete-time.

Программное использование

Параметры блоков: UseExternalTs
Тип: строка, вектор символов
Значения: "on", "off"
По умолчанию: "off"

Задайте шаг расчета путем ввода положительной скалярной величины значения, такого как 0,1. Дискретный шаг расчета по умолчанию -1 означает, что блок наследует свой шаг расчета от вышестоящих блоков. Однако рекомендуется явно задать шаг расчета контроллера, особенно если вы ожидаете изменения шага расчета вышестоящих блоков. Эффект коэффициентов P, I, D и N контроллера зависит от шага расчета. Таким образом, для данного набора значений коэффициентов изменение шага расчета изменяет эффективность контроллера.

Дополнительные сведения см. в разделе «Задание шага расчета».

Чтобы реализовать контроллер в непрерывном времени, установите Time domain равным Continuous-time.

Совет

Если вы хотите запустить блок с внешне заданным или переменным шагом расчета, установите этот параметр равным -1 и поместите блок в Triggered Subsystem. Затем инициируйте подсистему в требуемый шаг расчета.

Зависимости

Чтобы включить этот параметр, установите Time domain равным Discrete-time.

Программное использование

Параметры блоков: SampleTime
Тип: скаляр
Значения: -1, положительная скалярная величина
По умолчанию: -1

В дискретном времени интегральный член передаточной функции контроллера является (z), где α (z) зависит от метода интегратора, заданного этим параметром.

Forward Euler

Прямоугольное (левое) приближение,

α(z)=Tsz1.

Этот метод лучше всего подходит для малого времени дискретизации, где предел Найквиста велик по сравнению с пропускной способностью контроллера. Для большего времени дискретизации, Forward Euler способ может привести к нестабильности, даже при дискретизации стабильной за непрерывное время системы.

Backward Euler

Прямоугольное (правая) приближение назад,

α(z)=Tszz1.

Преимущество Backward Euler способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени.

Trapezoidal

Билинейное приближение,

α(z)=Ts2z+1z1.

Преимущество 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"

В дискретном времени производный член передаточной функции контроллера:

D[N1+Nα(z)],

где α (z) зависит от метода фильтра, заданного этим параметром.

Forward Euler

Прямоугольное (левое) приближение,

α(z)=Tsz1.

Этот метод лучше всего подходит для малого времени дискретизации, где предел Найквиста велик по сравнению с пропускной способностью контроллера. Для большего времени дискретизации, Forward Euler способ может привести к нестабильности, даже при дискретизации стабильной за непрерывное время системы.

Backward Euler

Прямоугольное (правая) приближение назад,

α(z)=Tszz1.

Преимущество Backward Euler способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени.

Trapezoidal

Билинейное приближение,

α(z)=Ts2z+1z1.

Преимущество Trapezoidal способ заключается в том, что дискретизация стабильной системы непрерывного времени с помощью этого метода всегда дает стабильный результат дискретного времени. Из всех доступных методов интегрирования Trapezoidal способ приводит к ближайшему соответствию между свойствами частотного диапазона дискретизированной системы и соответствующей системы непрерывного времени.

Совет

Формула контроллера для текущей настройки отображается в Compensator formula разделе параметров блоков и под маской.

Для получения дополнительной информации о интегрировании в дискретном времени смотрите Блок Интегратора в дискретном времени страницы с описанием.

Зависимости

Чтобы включить этот параметр, установите Time Domain равным Discrete-time и включите Use filtered derivative.

Программное использование

Параметры блоков: FilterMethod
Тип: строка, вектор символов
Значения: "Forward Euler", "Backward Euler", "Trapezoidal"
По умолчанию: "Forward Euler"

Главный

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

internal

Задайте коэффициент усиления и фильтра контроллера, используя параметры блоков P, I, D и N.

external

Задайте коэффициенты ПИД и коэффициент фильтра извне, используя блок входов. На блоке появляется дополнительный входной порт для каждого параметра, который требуется для типа токового контроллера.

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

Когда вы поставляете коэффициент усиления извне, временные изменения в интегральном и производном значениях усиления интегрируются и дифференцируются, соответственно. Этот результат возникает, потому что как в непрерывном времени, так и в дискретном времени усиления применяются к сигналу перед интегрированием или дифференцировкой. Для примера, для ПИД-регулятора в непрерывном времени с внешними входами, член интегратора реализован, как показано на следующем рисунке.

В блоке u входного сигнала умножается на внешний коэффициент усиления интегратора, I, перед интегрированием. Эта реализация дает:

yi=uIdt.

Таким образом, коэффициент усиления интегратора включен в интеграл. Точно так же в производном члене блока умножение на производное усиление предшествует дифференцировке, которая заставляет дифференцировать D усиления производной.

Программное использование

Параметры блоков: ControllerParametersSource
Тип: строка, вектор символов
Значения: "internal", "external"
По умолчанию: "internal"

Задайте конечное, действительное значение усиления для пропорциональной составляющей. Когда Controller form есть:

  • Parallel - Пропорциональное действие не зависит от интегрального и производного действия. Для образца для параллельного ПИД-регулятора в непрерывном времени передаточная функция:

    Cpar(s)=P+I(1s)+D(Nss+N).

    Для контроллера параллельной формы в дискретном времени передаточная функция является:

    Cpar(z)=P+Iα(z)+D[N1+Nβ(z)],

    где Integrator method и Filter method параметры определяют α (z) и β (z), соответственно.

  • Ideal - Пропорциональная пропорциональная составляющая умножает интеграл и производный член. Для образца, для идеального ПИД-регулятора в непрерывном времени, передаточная функция:

    Cid(s)=P[1+I(1s)+D(Nss+N)].

    Для контроллера идеальной формы в дискретном времени передаточная функция является:

    Cid(z)=P[1+Iα(z)+DN1+Nβ(z)],

    где Integrator method и Filter method параметры определяют α (z) и β (z), соответственно.

Настраиваемый: Да

Зависимости

Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal и установите Controller равным PID, PD, PI, или P.

Программное использование

Параметры блоков: P
Тип: скаляр, вектор
По умолчанию: 1

Задайте конечное, действительное значение усиления для интегральной составляющей.

Настраиваемый: Да

Зависимости

Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal, и установите Controller тип, который имеет интегральное действие.

Программное использование

Параметры блоков: I
Тип: скаляр, вектор
По умолчанию: 1

Задайте конечное, действительное значение усиления для производного усиления.

Настраиваемый: Да

Зависимости

Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal, и установите Controller равным PID или PD.

Программное использование

Параметры блоков: D
Тип: скаляр, вектор
По умолчанию: 0

Для только ПИД-регуляторов в дискретном времени очистите эту опцию, чтобы заменить отфильтрованную производную нефильтрованным дифференциатором в дискретном времени. Когда вы делаете это, производный член передаточной функции контроллера становится:

Dz1zTs.

Для непрерывных ПИД-регуляторов производный член всегда фильтруется.

Зависимости

Чтобы включить этот параметр, установите Time domain равным Discrete-time, и установите Controller тип, который имеет производное действие.

Программное использование

Параметры блоков: UseFilter
Тип: строка, вектор символов
Значения: "on", "off"
По умолчанию: "on"

Задайте конечное, действительное значение усиления для коэффициента фильтра. Коэффициент фильтра определяет положение полюса фильтра в производном действии блока. Расположение полюса фильтра зависит от параметра Time domain.

  • Когда Time domain Continuous-time, положение шеста s = -N.

  • Когда Time domain Discrete-timeрасположение шеста зависит от параметра Filter method.

    Метод фильтраРасположение полюса фильтра
    Forward Eulerzpole=1NTs
    Backward Eulerzpole=11+NTs
    Trapezoidalzpole=1NTs/21+NTs/2

Блок не поддерживает N = Inf (идеальная нефильтрованная производная). Когда Time domain Discrete-timeможно удалить Use filtered derivative, чтобы удалить производный фильтр.

Настраиваемый: Да

Зависимости

Чтобы включить этот параметр, на вкладке Main установите значение Source параметров контроллера internal и установите Controller равным PID или PD.

Программное использование

Параметры блоков: N
Тип: скаляр, вектор
По умолчанию: 100

Если у вас есть программное обеспечение 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).

Обнаружение пересечения нулем может точно обнаружить разрывы сигнала, не прибегая к чрезмерно маленьким временным шагам, которые могут привести к длительным временам симуляции. Если вы выбираете Limit output или активируете External reset в блоке ПИД-регулятор, активация обнаружения пересечения нулем может сократить время расчетов в симуляции. Выбор этого параметра активирует обнаружение пересечения нулем:

  • При сбросе начального состояния

  • При входе в верхнее или более низкое состояние насыщения

  • При выходе из верхнего или нижнего состояния насыщения

Для получения дополнительной информации об обнаружении пересечения нулем см. «Обнаружение пересечения нулем».

Программное использование

Параметры блоков: ZeroCross
Тип: строка, вектор символов
Значения: "on", "off"
По умолчанию: "on"

Инициализация

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"

Simulink использует начальные условия интегратора, чтобы инициализировать интегратора в начале симуляции или при заданном событии триггера (см. External reset). Начальные условия интегратора и начальное условие фильтра определяют начальный выход блока PID controller.

Невозможно начальные условия интегратора NaN или Inf.

Зависимости

Чтобы использовать этот параметр, на вкладке Initialization установите Source равным internal, и установите Controller тип, который имеет интегральное действие.

Программное использование

Параметры блоков: InitialConditionForIntegrator
Тип: скаляр, вектор
По умолчанию: 0

Simulink использует начальное условие фильтра, чтобы инициализировать производный фильтр в начале симуляции или при заданном событии триггера (см. External reset). Начальные условия интегратора и начальное условие фильтра определяют начальный выход блока PID controller.

Начальное условие фильтра не может быть NaN или Inf.

Зависимости

Чтобы использовать этот параметр, на вкладке Initialization установите Source равным internal, и использовать контроллер, который имеет производный фильтр.

Программное использование

Параметры блоков: InitialConditionForFilter
Тип: скаляр, вектор
По умолчанию: 0

Когда вы используете нефильтрованную производную, Simulink использует этот параметр, чтобы инициализировать дифференциатор в начале симуляции или при заданном событии триггера (см. External reset). Начальные условия интегратора и производное начальное условие определяют начальный выход блока PID controller.

Производное начальное условие не может быть NaN или Inf.

Зависимости

Чтобы использовать этот параметр, установите Time domain равным Discrete-time, снимите флажок Use filtered derivative, и на вкладке Initialization установите Source равным internal.

Программное использование

Параметры блоков: DifferentiatorICPrevScaledInput
Тип: скаляр, вектор
По умолчанию: 0

Используйте этот параметр, чтобы задать, применять ли параметр Integrator Initial condition и Filter Initial condition к соответствующему состоянию блока или выходу. Вы можете изменить этот параметр только в командной строке, используя set_param для установки InitialConditionSetting параметр блока.

State (most efficient)

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

Output

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

Для получения дополнительной информации о параметре Initial condition setting, см. Discrete-Time Integrator блок.

Этот параметр доступен только при программном использовании.

Программное использование

Параметры блоков: InitialConditionSetting
Тип: строка, вектор символов
Значения: "state", "output"
По умолчанию: "state"

Задайте условие триггера, которое заставляет блок сбрасывать интегратор и фильтровать к начальным условиям. (Если Use filtered derivative не выбран, триггер сбрасывает интегратор и дифференциатор к начальным условиям.) Выбор любой опции кроме none включает порт Reset на блоке для внешнего сигнала сброса.

none

Интегратор и выходы фильтра (или дифференциатора) устанавливаются в начальные условия в начале симуляции и не сбрасываются во время симуляции.

rising

Сбросьте выходы, когда сигнал сброса имеет повышающееся ребро.

falling

Сбросьте выходы, когда сигнал сброса имеет падающее ребро.

either

Обнулите выходы, когда сигнал сброса поднимается или падает.

level

Сбросьте выходы, когда сигнал сброса либо:

  • Ненулевое значение на текущем временном шаге

  • Изменяется с ненулевого на предыдущем временном шаге до нуля на текущем временном шаге

Эта опция содержит выходы начальных условий, в то время как сигнал сброса является ненулевым.

Зависимости

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

Программное использование

Параметры блоков: ExternalReset
Тип: строка, вектор символов
Значения: "none", "rising", "falling", "either", "level"
По умолчанию: "none"

Выберите, чтобы заставить команды линеаризации Simulink и Simulink Control Design игнорировать любой механизм сброса, заданный в параметре External reset. Игнорирование состояний сброса позволяет вам линеаризировать модель вокруг рабочей точки, даже если эта рабочая точка заставляет блок сбрасываться.

Программное использование

Параметры блоков: IgnoreLimit
Тип: строка, вектор символов
Значения: "off", "on"
По умолчанию: "off"

Отслеживание сигнала позволяет блоку следовать за сигналом отслеживания, который вы предоставляете в TR порту. Когда отслеживание сигнала активно, различие между сигналом отслеживания и выходным сигналом блока подается назад на вход интегратора с усилением Kt, заданный параметром Tracking gain (Kt). Отслеживание сигналов имеет несколько применений, включая бесшумную передачу управления и избегание насыщения в многоуровневых структурах управления.

Бесшумная передача управления

Используйте отслеживание сигналов, чтобы добиться беспроблемной передачи управления в системах, которые переключаются между двумя контроллерами. Предположим, что вы хотите передать управление между ПИД-регулятором и другим контроллером. Для этого подключение контроллер выхода к входу TR как показано на следующем рисунке.

Для получения дополнительной информации смотрите Bumpless Control Transfer.

Мультицикл

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

Подсистема внутреннего цикла содержит блоки, показанные на следующей схеме.

Поскольку ПИД-регулятор отслеживает выход внутреннего цикла, его выход никогда не превышает насыщенный выход внутреннего цикла. Для получения дополнительной информации смотрите Prevent Block Windup в Multiloop Control.

Зависимости

Чтобы включить этот параметр, установите Controller на тип, который имеет интегральное действие.

Программное использование

Параметры блоков: TrackingMode
Тип: строка, вектор символов
Значения: "off", "on"
По умолчанию: "off"

Когда вы выбираете Enable tracking mode, различие между TR сигнала и выходным блоком подается назад на вход интегратора с усилением Kt. Используйте этот параметр, чтобы задать коэффициент усиления в этом цикле обратной связи.

Зависимости

Чтобы включить этот параметр, выберите Enable tracking mode.

Программное использование

Параметры блоков: Kt
Тип: скаляр
По умолчанию: 1

Выходное насыщение

Активация этой опции ограничивает выход блока, так что вам не нужен отдельный блок Насыщения после контроллера. Это также позволяет активировать встроенный в блок механизм защиты от обмотки ветра (см. параметр Anti-windup method). Задайте выходы сигнала с помощью параметров Lower limit и Upper limit. Можно также задать пределы насыщения внешне как блок порты входа.

Программное использование

Параметры блоков: LimitOutput
Тип: строка, вектор символов
Значения: "off", "on"
По умолчанию: "off"

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

internal

Задайте выходы сигнала с помощью параметров Upper limit и Lower limit.

external

Задайте пределы насыщения выхода извне, используя блок порты входа. Дополнительные входные порты up и lo появляются на блоке. Можно использовать входные порты, чтобы реализовать верхние и более низкие пределы насыщения выхода, определенные логикой или другими вычислениями в модели Simulink и переданные блоку.

Программное использование

Параметры блоков: SatLimitsSource
Тип: строка, вектор символов
Значения: "internal", "external"
По умолчанию: "internal"

Задайте верхний предел для выхода блока. Выход блока удерживается на верхнем пределе насыщения всякий раз, когда взвешенная сумма пропорциональных, интегральных и производных действий превышает это значение.

Зависимости

Чтобы включить этот параметр, выберите Limit output.

Программное использование

Параметры блоков: UpperSaturationLimit
Тип: скаляр
По умолчанию: Inf

Задайте нижний предел для выхода блока. Выход блока удерживается на пределе Нижнего Насыщения всякий раз, когда взвешенная сумма пропорциональных, интегральных и производных действий идет ниже этого значения.

Зависимости

Чтобы включить этот параметр, выберите Limit output.

Программное использование

Параметры блоков: LowerSaturationLimit
Тип: скаляр
По умолчанию: -Inf

Команды линеаризации Force Simulink и Simulink Control Design, чтобы игнорировать выходные пределы блоков, заданные в параметрах Upper limit и Lower limit. Игнорирование выходных пределов позволяет вам линеаризировать модель вокруг рабочей точки, даже если эта рабочая точка заставляет блок превышать выходные пределы.

Зависимости

Чтобы включить этот параметр, выберите параметр Limit output.

Программное использование

Параметры блоков: LinearizeAsGain
Тип: строка, вектор символов
Значения: "off", "on"
По умолчанию: "off"

Когда вы выбираете 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"

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.

В целом, не рекомендуется использовать блок в непрерывное время для приложений генерации кода. Однако подобные ошибки типа данных могут возникнуть в дискретном времени, если вы явным образом установите некоторые значения для типов данных, которые несовместимы с ограничениями нисходящего сигнала в блоке. В таких случаях используйте настройки Типы данных, чтобы убедиться, что все типы данных внутренне совместимы.

Рабочие параметры с фиксированной точкой

Задайте режим округления для операций с фиксированной точкой. Для получения дополнительной информации см. раздел Округление (Fixed-Point Designer).

Параметры блоков всегда округлятся до ближайшего представимого значения. Чтобы контролировать округление параметров блоков, введите выражение с помощью MATLAB® функция округления в поле маски.

Программное использование

Параметры блоков: RndMeth
Тип: Вектор символов
Значения: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
По умолчанию: 'Floor'

Укажите, будут ли переполнения насыщаться или переноситься.

  • off - Переполнения переходят к соответствующему значению, которое может представлять тип данных.

    Для примера число 130 не помещается в 8-разрядное целое число со знаком и переносами к -126.

  • on - Переполнения достигают минимального или максимального значения, которое может представлять тип данных.

    Для примера переполнение, сопоставленное с 8-битным целым числом со знаком, может насыщаться до -128 или 127.

Совет

  • Рассмотрите выбор этого флажка, когда ваша модель имеет возможное переполнение, и вы хотите явную защиту от насыщения в сгенерированном коде.

  • Рассмотрите снятие этого флажка, когда вы хотите оптимизировать эффективность вашего сгенерированного кода.

    Снятие этого флажка также помогает вам избежать переопределения того, как блок обрабатывает сигналы вне области допустимого. Для получения дополнительной информации смотрите Поиск и устранение ошибок диапазона сигнала.

  • Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, а не только к выходу или результату.

  • В целом процесс генерации кода может обнаружить, когда переполнение невозможно. В этом случае генератор кода не производит код насыщения.

Программное использование

Параметры блоков: SaturateOnIntegerOverflow
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типов данных, заданных в этом блоке. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (Fixed-Point Designer).

Программное использование

Параметры блоков: LockScale
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

Атрибуты состояния

Параметры на этой вкладке в основном используются при генерации кода.

Присвойте уникальное имя состоянию, сопоставленному с интегратором или фильтром, для непрерывного времени ПИД-регуляторов. (Для получения информации об именах состояний в ПИД-контроллере в дискретном времени смотрите параметр State name.) Используется имя состояния, например:

  • Для соответствующей переменной в сгенерированном коде

  • Как часть имени хранилища при регистрации состояний во время симуляции

  • Для соответствующего состояния в линейной модели получите путем линеаризации блока

Допустимое имя состояния начинается с буквенного символа или символа подчеркивания, за которым следуют алфавитно-цифровые символы или символы подчеркивания.

Зависимости

Чтобы включить этот параметр, установите Time domain равным Continuous-time.

Программное использование

Параметр: IntegratorContinuousStateAttributes, FilterContinuousStateAttributes
Тип: Вектор символов
По умолчанию: ''

Присвойте уникальное имя состоянию, сопоставленному с интегратором или фильтром, для ПИД-регуляторов в дискретном времени. (Для получения информации об именах состояний в ПИД-контроллере в непрерывном времени смотрите параметр State name (e.g., 'position').)

Допустимое имя состояния начинается с буквенного символа или символа подчеркивания, за которым следуют алфавитно-цифровые символы или символы подчеркивания. Используется имя состояния, например:

  • Для соответствующей переменной в сгенерированном коде

  • Как часть имени хранилища при регистрации состояний во время симуляции

  • Для соответствующего состояния в линейной модели получите путем линеаризации блока

Для получения дополнительной информации об использовании имен состояний в генерации кода смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Simulink Coder).

Зависимости

Чтобы включить этот параметр, установите Time domain равным Discrete-time.

Программное использование

Параметр: IntegratorStateIdentifier, FilterStateIdentifier
Тип: строка, вектор символов
По умолчанию: ""

Выберите этот параметр, чтобы потребовать, чтобы интегратор в дискретном времени или имя состояния фильтра разрешилось объекту сигнала Simulink.

Зависимости

Чтобы включить этот параметр для интегратора в дискретном времени или состояния фильтра:

  1. Установите Time domain значение Discrete-time.

  2. Задайте значение для интегратора или State name фильтра.

  3. Установите значение параметра конфигурации модели Signal resolution отличное от None.

Установка этого флажка отключает Code generation storage class для соответствующего интегратора или состояния фильтра.

Программное использование

Параметры блоков: IntegratorStateMustResolveToSignalObject, FilterStateMustResolveToSignalObject
Тип: строка, вектор символов
Значения: "off", "on"
По умолчанию: "off"

Выберите класс памяти состояний для генерации кода. Если вам не нужно взаимодействовать с внешним кодом, выберите Auto.

Для получения дополнительной информации смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Simulink Coder) и Организуйте Данные Параметра в Структуру при помощи Класса Памяти (Embedded Coder).

Зависимости

Чтобы включить этот параметр для интегратора в дискретном времени или состояния фильтра:

  1. Установите Time domain значение Discrete-time.

  2. Задайте значение для интегратора или State name фильтра.

  3. Установите значение параметра конфигурации модели Signal resolution отличное от None.

Программное использование

Параметры блоков: IntegratorRTWStateStorageClass, FilterRTWStateStorageClass
Тип: строка, вектор символов
Значения: "Auto", "ExportedGlobal", "ImportedExtern" | "ImportedExternPointer"
По умолчанию: "Auto"

Укажите классификатор типа хранилища, например const или volatile.

Примечание

Этот параметр будет удален в следующем релизе. Чтобы применить проверку типа хранилища к данным, используйте пользовательские классы памяти и разделы памяти. Если вы не используете цель генерации кода на основе ERT с Embedded Coder®пользовательские классы памяти и разделы памяти не влияют на сгенерированный код.

Зависимости

Чтобы включить этот параметр, установите Code generation storage class любое значение, кроме Auto.

Программное использование

Параметры блоков: IntegratorRTWStateStorageTypeQualifier, FilterRTWStateStorageTypeQualifier
Тип: строка, вектор символов
Значения: "", "const", "volatile"
По умолчанию: ""

Примеры моделей

Характеристики блоков

Типы данных

double | fixed point | integer | single

Прямое сквозное соединение

no

Многомерные сигналы

no

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

Вопросы совместимости

расширить все

Поведение изменено в R2020b

Ссылки

[1] Visioli, A., «Modified Anti-Windup Scheme for ПИД-регуляторы», IEE Proceedings - Control Theory and Applications, Vol. 150, Number 1, January 2003

Расширенные возможности

.

Генерация кода ПЛК
Сгенерируйте структурированный текстовый код с помощью Coder™ Simulink ® PLC

.
Введенный в R2009b
Для просмотра документации необходимо авторизоваться на сайте