Передаточная функция для заданного набора ввода-вывода с помощью интерфейса slLinearizer
или slTuner
linsys = getIOTransfer(s,in,out)
linsys = getIOTransfer(s,in,out,temp_opening)
linsys = getIOTransfer(s,ios)
linsys = getIOTransfer(___,mdl_index)
[linsys,info]
= getIOTransfer(___)
возвращает передаточную функцию для заданных вводов и выводов для модели, сопоставленной с интерфейсом linsys
= getIOTransfer(s
,in
,out
)slLinearizer
или slTuner
, s
.
Программное обеспечение осуществляет все постоянные открытия, заданные для s
, когда это вычисляет linsys
. Для получения информации о том, как getIOTransfer
обрабатывает in
и out
, смотрите Передаточные функции. Если вы сконфигурировали или s.Parameters
или s.OperatingPoints
, или оба, getIOTransfer
выполняет несколько линеаризации и возвращает массив передаточных функций.
возвращает передаточную функцию для вводов и выводов, заданных linsys
= getIOTransfer(s
,ios
)ios
для модели, сопоставленной с s
. Используйте команду linio
, чтобы создать ios
. Программное обеспечение осуществляет тип ввода-вывода линеаризации каждого сигнала, заданного в ios
, когда это вычисляет linsys
. Программное обеспечение также осуществляет все постоянные открытия цикла, заданные для s
.
возвращает подмножество пакетных результатов линеаризации. linsys
= getIOTransfer(___,mdl_index
)mdl_index
задает индекс линеаризации интереса, в дополнение к любому из входных параметров в предыдущих синтаксисах.
Используйте этот синтаксис для эффективной линеаризации, когда это необходимо чтобы получить передаточную функцию только для подмножества пакетных результатов линеаризации.
Получите передаточную функцию с обратной связью из ссылочного сигнала, r
, к объекту вывод, y
, для модели ex_scd_simple_fdbk
.
Откройте модель ex_scd_simple_fdbk
.
mdl = 'ex_scd_simple_fdbk';
open_system(mdl);
В этой модели:
Создайте интерфейс slLinearizer
для модели.
sllin = slLinearizer(mdl);
Чтобы получить передаточную функцию с обратной связью из ссылочного сигнала, r
, к объекту вывод, y
, добавляют, обе точки к sllin
.
addPoint(sllin,{'r','y'});
Получите передаточную функцию с обратной связью от r
до y
.
sys = getIOTransfer(sllin,'r','y'); tf(sys)
ans = From input "r" to output "y": 3 ----- s + 8 Continuous-time transfer function.
Программное обеспечение добавляет вход линеаризации в r
, dr
и линеаризации вывод в y
.
sys
является передаточной функцией от dr
до y
, который равен.
Получите передаточную функцию модели объекта управления, G
, для модели ex_scd_simple_fdbk
.
Откройте модель ex_scd_simple_fdbk
.
mdl = 'ex_scd_simple_fdbk';
open_system(mdl);
В этой модели:
Создайте интерфейс slLinearizer
для модели.
sllin = slLinearizer(mdl);
Чтобы получить передаточную функцию модели объекта управления, используйте u
в качестве точки ввода и y
как выходная точка. Чтобы устранить эффекты обратной связи, необходимо повредить цикл. Можно повредить цикл в u
, e
или y
. В данном примере повредите цикл в u
. Добавьте эти точки в sllin
.
addPoint(sllin,{'u','y'});
Получите передаточную функцию модели объекта управления.
sys = getIOTransfer(sllin,'u','y','u'); tf(sys)
ans = From input "u" to output "y": 1 ----- s + 5 Continuous-time transfer function.
Второй входной параметр задает u
как вход, в то время как четвертый входной параметр задает u
как временное открытие цикла.
sys
является передаточной функцией от du
до y
, который равен.
Предположим, что вы обрабатываете в пакетном режиме, линеаризуют модель scdcascade
для нескольких передаточных функций. Для большей части линеаризации вы отличаетесь пропорциональное (Kp2
) и интегральное усиление (Ki2
) контроллера C2
в 10%-й области значений. В данном примере вычислите передаточную функцию ответа разомкнутого цикла для внутреннего цикла, от e2
до y2
, для максимального значения Kp2
и Ki2
.
Откройте модель scdcascade
.
mdl = 'scdcascade';
open_system(mdl);
Создайте интерфейс slLinearizer
для модели.
sllin = slLinearizer(mdl);
Отличайтесь пропорциональное (Kp2
) и интегральное усиление (Ki2
) контроллера C2
в 10%-й области значений.
Kp2_range = linspace(0.9*Kp2,1.1*Kp2,3); Ki2_range = linspace(0.9*Ki2,1.1*Ki2,5); [Kp2_grid,Ki2_grid] = ndgrid(Kp2_range,Ki2_range); params(1).Name = 'Kp2'; params(1).Value = Kp2_grid; params(2).Name = 'Ki2'; params(2).Value = Ki2_grid; sllin.Parameters = params;
Чтобы вычислить передаточную функцию разомкнутого цикла для внутреннего цикла, используйте e2
и y2
как аналитические точки. Чтобы устранить эффекты внешнего цикла, повредите цикл в e2
. Добавьте e2
и y2
к sllin
, когда анализ указывает.
addPoint(sllin,{'e2','y2'})
Определите индекс для максимальных значений Ki2
и Kp2
.
mdl_index = params(1).Value == max(Kp2_range) & params(2).Value == max(Ki2_range);
Получите передаточную функцию разомкнутого цикла от e2
до y2
.
sys = getIOTransfer(sllin,'e2','y2','e2',mdl_index);
Открытая модель Simulink.
mdl = 'scdcascade';
open_system(mdl)
Создайте набор опции линеаризации и установите опцию StoreOffsets
.
opt = linearizeOptions('StoreOffsets',true);
Интерфейс Create slLinearizer
.
sllin = slLinearizer(mdl,opt);
Добавьте, что анализ указывает, чтобы вычислить передаточную функцию с обратной связью.
addPoint(sllin,{'r','y1m'});
Вычислите передаточную функцию ввода/вывода и получите соответствующие смещения линеаризации.
[sys,info] = getIOTransfer(sllin,'r','y1m');
Просмотрите смещения.
info.Offsets
ans = struct with fields: x: [6x1 double] dx: [6x1 double] u: 1 y: 0 StateName: {6x1 cell} InputName: {'r'} OutputName: {'y1m'} Ts: 0
s
Взаимодействуйте через интерфейс к модели Simulink®slLinearizer
| интерфейс slTuner
Интерфейс к модели Simulink, заданной или как интерфейс slLinearizer
или как интерфейс slTuner
.
\in
Введите аналитическое имя сигнала точкиВведите аналитическое имя сигнала точки, заданное как:
Вектор символов или строка — Аналитическая точка сигнализируют об имени.
Чтобы определить имя сигнала, сопоставленное с аналитической точкой, введите s
. Программное обеспечение отображает содержимое s
в командном окне MATLAB®, включая аналитические имена сигнала точки, имена блока и номера портов. Предположим, что аналитическая точка не имеет имени сигнала, но только имени блока и номера порта. Можно задать in
как имя блока. Чтобы использовать точку не в списке аналитических точек для s
, сначала добавьте точку с помощью addPoint
.
Можно задать in
как исключительно соответствующий фрагмент полного имени сигнала или имени блока. Предположим, что полным именем сигнала аналитической точки является 'LoadTorque'
. Можно задать in
как 'Torque'
, пока 'Torque'
не является фрагментом имени сигнала ни для какой другой аналитической точки s
.
Например, in = 'y1m'
.
Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических имен точки. Например, in = {'y1m','y2m'}
.
out
— Выведите аналитическое имя сигнала точкиВыведите аналитическое имя сигнала точки, заданное как:
Вектор символов или строка — Аналитическая точка сигнализируют об имени.
Чтобы определить имя сигнала, сопоставленное с аналитической точкой, введите s
. Программное обеспечение отображает содержимое s
в окне команды MATLAB, включая аналитические имена сигнала точки, имена блока и номера портов. Предположим, что аналитическая точка не имеет имени сигнала, но только имени блока и номера порта. Можно задать out
как имя блока. Чтобы использовать точку не в списке аналитических точек для s
, сначала добавьте точку с помощью addPoint
.
Можно задать out
как исключительно соответствующий фрагмент полного имени сигнала или имени блока. Предположим, что полным именем сигнала аналитической точки является 'LoadTorque'
. Можно задать out
как 'Torque'
, пока 'Torque'
не является фрагментом имени сигнала ни для какой другой аналитической точки s
.
Например, out = 'y1m'
.
Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических имен точки. Например, out = {'y1m','y2m'}
.
temp_opening
— Временное вводное имя сигналаВременное вводное имя сигнала, заданное как:
Вектор символов или строка — Аналитическая точка сигнализируют об имени.
temp_opening
должен задать аналитическую точку, которая находится в списке аналитических точек для s
. Чтобы определить имя сигнала, сопоставленное с аналитической точкой, введите s
. Программное обеспечение отображает содержимое s
в окне команды MATLAB, включая аналитические имена сигнала точки, имена блока и номера портов. Предположим, что аналитическая точка не имеет имени сигнала, но только имени блока и номера порта. Можно задать temp_opening
как имя блока. Чтобы использовать точку не в списке аналитических точек для s
, сначала добавьте точку с помощью addPoint
.
Можно задать temp_opening
как исключительно соответствующий фрагмент полного имени сигнала или имени блока. Предположим, что полным именем сигнала аналитической точки является 'LoadTorque'
. Можно задать temp_opening
как 'Torque'
, пока 'Torque'
не является фрагментом имени сигнала ни для какой другой аналитической точки s
.
Например, temp_opening = 'y1m'
.
Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических имен точки. Например, temp_opening = {'y1m','y2m'}
.
ios
— Линеаризация I/OsЛинеаризация I/Os, созданное использование linio
, заданный как объект I/O линеаризации.
ios
должен задать сигналы, которые находятся в списке аналитических точек для s
. Чтобы просмотреть список аналитических точек, введите s
. Чтобы использовать точку, которая не находится в списке аналитических точек для s
, необходимо сначала добавить точку в список с помощью addPoint
.
Например:
ios(1) = linio('scdcascade/setpoint',1,'input'); ios(2) = linio('scdcascade/Sum',1,'output');
Здесь, ios(1)
задает вход, и ios(2)
задает вывод.
mdl_index
— Индексируйте для линеаризации интересаИндексируйте для линеаризации интереса, заданного как:
Массив логических значений — индекс Логического массива линеаризации интереса. Предположим, что вы отличаетесь два параметра, par1
и par2
, и хотите извлечь линеаризацию для комбинации par1 > 0.5
и par2 <= 5
. Использование:
params = s.Parameters; mdl_index = params(1).Value>0.5 & params(2).Value <= 5;
Выражение params(1).Value>0.5 & params(2).Value<5
использует логическую индексацию и возвращает логический массив. Этот логический массив одного размера как params(1).Value
и params(2).Value
. Каждая запись содержит логическую оценку выражения для соответствующих записей в params(1).Value
и params(2).Value
.
Вектор положительных целых чисел — Линейный индекс линеаризации интереса. Предположим, что вы отличаетесь два параметра, par1
и par2
, и хотите извлечь линеаризацию для комбинации par1 > 0.5
и par2 <= 5
. Использование:
params = s.Parameters; mdl_index = find(params(1).Value>0.5 & params(2).Value <= 5);
Выражение params(1).Value>0.5 & params(2).Value<5
возвращает логический массив. find
возвращает линейный индекс каждой истинной записи в логическом массиве
linsys
— Передаточная функция для заданного I/OsПередаточная функция для заданного I/Os, возвращенного, как описано в следующем:
Если вы не сконфигурировали s.Parameters
и s.OperatingPoints
, программное обеспечение вычисляет linsys
с помощью значений параметра модели по умолчанию. Программное обеспечение использует образцовые начальные условия в качестве рабочей точки линеаризации. linsys
возвращен как модель в пространстве состояний.
Если вы сконфигурировали s.Parameters
только, программное обеспечение вычисляет линеаризацию для каждого узла решетки параметра. linsys
возвращен как массив модели в пространстве состояний, одного размера как сетка параметра.
Если вы сконфигурировали s.OperatingPoints
только, программное обеспечение вычисляет линеаризацию для каждой заданной рабочей точки. linsys
возвращен как массив модели в пространстве состояний, одного размера как s.OperatingPoints
.
Если вы сконфигурировали s.Parameters
и задали s.OperatingPoints
как одну рабочую точку, программное обеспечение вычисляет линеаризацию для каждого узла решетки параметра. Программное обеспечение использует заданную рабочую точку в качестве рабочей точки линеаризации. linsys
возвращен как массив модели в пространстве состояний, одного размера как сетка параметра.
Если вы сконфигурировали s.Parameters
и задали s.OperatingPoints
, когда несколько рабочих точек возражают, программное обеспечение вычисляет линеаризацию для каждого узла решетки параметра. Программное обеспечение требует, чтобы s.OperatingPoints
был одного размера как сетка параметра, заданная s.Parameters
. Программное обеспечение вычисляет каждую линеаризацию с помощью соответствующих рабочих точек и узлов решетки параметра. linsys
возвращен как массив модели в пространстве состояний, одного размера как сетка параметра.
Если вы сконфигурировали s.Parameters
и задали s.OperatingPoints
как несколько раз снимка состояния симуляции, программное обеспечение моделирует и линеаризует модель в течение каждого раза снимка состояния и комбинации узла решетки параметра. Предположим, что вы задаете сетку параметра размера p
и времена снимка состояния N
. linsys
возвращен как массив модели в пространстве состояний размера N
-by-p
.
информация
Информация о линеаризацииИнформация о линеаризации, возвращенная как структура со следующими полями:
Offsets
— Смещения линеаризации[]
(значение по умолчанию) | структура | массив структурСмещения линеаризации, возвращенные как []
, если s.Options.StoreOffsets
является false
. В противном случае Offsets
возвращен как одно из следующего:
Если linsys
является одной моделью в пространстве состояний, то Offsets
является структурой.
Если linsys
является массивом моделей в пространстве состояний, то Offsets
является массивом структур с теми же размерностями как linsys
.
Каждая структура смещения имеет следующие поля:
Поле | Описание |
---|---|
x | Смещения состояния использовали для линеаризации, возвращенной как вектор-столбец длины nx, где nx является количеством состояний в linsys . |
y | Выведите смещения, используемые для линеаризации, возвращенной как вектор-столбец длины ny, где ny является количеством выходных параметров в linsys . |
u | Введите смещения, используемые для линеаризации, возвращенной как вектор-столбец длины nu, где nu является количеством входных параметров в linsys . |
dx | Производные смещения для непрерывных систем времени или обновленные значения состояния для систем дискретного времени, возвращенных как вектор-столбец длины nx. |
StateName | Имена состояния, возвращенные как массив ячеек, который содержит элементы nx, которые совпадают с именами в linsys.StateName . |
InputName | Введите имена, возвращенные как массив ячеек, который содержит элементы nu, которые совпадают с именами в linsys.InputName . |
OutputName | Выведите имена, возвращенные как массив ячеек, который содержит элементы ny, которые совпадают с именами в linsys.OutputName . |
Ts | Шаг расчета линеаризовавшей системы, возвращенной как скаляр, который совпадает с шагом расчета в linsys.Ts . Для непрерывно-разовых систем Ts является 0 . |
Если Offsets
является массивом структур, можно сконфигурировать блок LPV System с помощью смещений. Для этого сначала преобразуйте их в требуемый формат с помощью getOffsetsForLPV
. Для примера смотрите, что Аппроксимирующее Нелинейное Поведение Использует Массив Систем LTI.
Advisor
— Информация о диагностике линеаризации[]
(значение по умолчанию) | объект LinearizationAdvisor
| массив объектов LinearizationAdvisor
Информация о диагностике линеаризации, возвращенная как []
, если s.Options.StoreAdvisor
является false
. В противном случае Advisor
возвращен как одно из следующего:
Если linsys
является одной моделью в пространстве состояний, Advisor
является объектом LinearizationAdvisor
.
Если linsys
является массивом моделей в пространстве состояний, Advisor
является массивом объектов LinearizationAdvisor
с теми же размерностями как linsys
.
Объекты LinearizationAdvisor
хранят информацию диагностики линеаризации для линеаризовавших блоков человека. Для примера поиска и устранения неисправностей результатов линеаризации с помощью объекта LinearizationAdvisor
смотрите Результаты Линеаризации Поиска и устранения неисправностей в Командной строке.
transfer function является откликом системы LTI в выходной точке линеаризации к входу линеаризации. Вы выполняете линейный анализ передаточных функций, чтобы понять устойчивость, характеристики временного интервала или характеристики частотного диапазона системы.
Можно вычислить несколько передаточных функций для данной блок-схемы. Рассмотрите модель ex_scd_simple_fdbk
:
Можно вычислить передаточную функцию от ссылочного входного сигнала до выходного сигнала объекта. reference input (также называемый setpoint), r
, происходит в блоке Reference, и plant output, y
, происходит в блоке G. Эта передаточная функция также называется передаточной функцией overall closed-loop. Чтобы вычислить эту передаточную функцию, программное обеспечение добавляет вход линеаризации в r
, dr
и линеаризации вывод в y
.
Программное обеспечение вычисляет полную передаточную функцию с обратной связью как передаточную функцию от dr
до y
, который равен (I +GK)-1GK.
Заметьте, что передаточная функция от r
до y
равна передаточной функции от dr
до y
.
Можно вычислить plant transfer function от входа объекта, u
, к объекту вывод, y
. Чтобы изолировать динамику объекта от эффектов обратной связи, введите пропуск цикла (или opening) в y
, e
, или, как показано, в u
.
Программное обеспечение повреждает цикл и добавляет вход линеаризации, du
, в u
и линеаризации вывод в y
. Передаточная функция объекта равна передаточной функции от du
до y
, который является G.
Точно так же, чтобы получить controller transfer function, вычислите передаточную функцию от входа контроллера, e
, контроллеру вывод, u
. Повредите обратную связь в y
, e
или u
.
Можно использовать getIOTransfer
, чтобы получить различный разомкнутый цикл и передаточные функции с обратной связью. Чтобы сконфигурировать передаточную функцию, задайте аналитические точки как входные параметры, выходные параметры и открытия (временный или постоянный), в любой комбинации. Программное обеспечение обрабатывает каждую комбинацию исключительно. Рассмотрите следующий код, который показывает некоторые различные способы, которыми можно использовать аналитическую точку, u
, чтобы получить передаточную функцию:
sllin = slLinearizer('ex_scd_simple_fdbk') addPoint(sllin,{'u','e','y'}) T0 = getIOTransfer(sllin,'e','y','u'); T1 = getIOTransfer(sllin,'u','y'); T2 = getIOTransfer(sllin,'u','y','u'); T3 = getIOTransfer(sllin,'y','u'); T4 = getIOTransfer(sllin,'y','u','u'); T5 = getIOTransfer(sllin,'u','u'); T6 = getIOTransfer(sllin,'u','u','u');
В T0
u
задает пропуск цикла. В T1
u
задает только вход, тогда как в T2
, u
задает вход и открытие, также называемое open-loop input. В T3
u
задает только вывод, тогда как в T4
, u
задает вывод и открытие, также называемое open-loop output. В T5
u
задает вход и вывод, также называемый complementary sensitivity point. В T6
u
задает вход, вывод и открытие, также называемое loop transfer point. Таблица описывает, как getIOTransfer
обрабатывает аналитические точки с акцентом на различное использование u
.
u Задает... | Как getIOTransfer обрабатывает аналитические точки | Передаточная функция |
---|---|---|
Пропуск цикла Пример кода: T0 = getIOTransfer(sllin,'e','y','u') |
Программное обеспечение останавливает поток сигналов в |
|
Входной параметр Пример кода: T1 = getIOTransfer(sllin,'u','y') |
Программное обеспечение добавляет вход линеаризации, |
|
Разомкнутый цикл вводится Пример кода: T2 = getIOTransfer(sllin,'u','y','u') |
Программное обеспечение повреждает поток сигналов и добавляет вход линеаризации, |
|
Вывод Пример кода: T3 = getIOTransfer(sllin,'y','u') |
Программное обеспечение добавляет вход линеаризации, |
|
Разомкнутый цикл выводится Пример кода: T4 = getIOTransfer(sllin,'y','u','u') |
Программное обеспечение добавляет вход линеаризации, |
|
Дополнительная точка чувствительности Пример кода: T5 = getIOTransfer(sllin,'u','u') СоветТакже можно получить дополнительную функцию чувствительности использование |
Программное обеспечение добавляет линеаризацию вывод и вход линеаризации, |
|
Точка передаточной функции цикла Пример кода: T6 = getIOTransfer(sllin,'u','u','u') СоветТакже можно получить передаточную функцию цикла с помощью |
Программное обеспечение добавляет линеаризацию вывод, повреждает цикл и добавляет вход линеаризации, |
|
Программное обеспечение не изменяет модель Simulink, когда это вычисляет передаточную функцию.
Analysis points, используемый slLinearizer
и интерфейсами slTuner
, идентифицирует местоположения в модели, которые важны для линейного анализа и настройки системы управления. Вы используете аналитические точки в качестве входных параметров к командам линеаризации, таким как getIOTransfer
, getLoopTransfer
, getSensitivity
и getCompSensitivity
. Как входные параметры к командам линеаризации, аналитические точки могут задать любой разомкнутый цикл или передаточную функцию с обратной связью в модели. Можно также использовать аналитические точки, чтобы задать конструктивные требования при настройке систем управления с помощью команд, таких как systune
.
Location относится к определенному выходному порту блока в модели или к элементу шины в таком выходном порту. Для удобства можно использовать имя сигнала, который происходит из этого порта, чтобы относиться к аналитической точке.
Можно добавить, что анализ указывает на интерфейс slLinearizer
или slTuner
, s
, когда вы создаете интерфейс. Например:
s = slLinearizer('scdcascade',{'u1','y1'});
Также можно использовать команду addPoint
.
Чтобы просмотреть все аналитические точки s
, введите s
в командной строке, чтобы отобразить интерфейсное содержимое. Для каждой аналитической точки s
отображение включает имя блока и номер порта и имя сигнала, который происходит в этой точке. Можно также программно получить список всех аналитических точек с помощью getPoints
.
Для получения дополнительной информации о том, как можно использовать аналитические точки, смотрите представляющего интерес Марка Сигнэлса для Анализа и проектирования Системы управления и представляющего интерес Марка Сигнэлса для Пакетной Линеаризации.
Permanent openings, используемый slLinearizer
и интерфейсами slTuner
, идентифицирует местоположения в модели, где программное обеспечение повреждает поток сигналов. Программное обеспечение осуществляет эти открытия для линеаризации и настройку. Используйте постоянные открытия, чтобы изолировать определенный компонент модели. Предположим, что у вас есть крупномасштабная модель, получая динамику самолета, и вы хотите выполнить линейный анализ корпуса только. Можно использовать постоянные открытия, чтобы исключить все другие компоненты модели. Другой пример - когда вы расположили каскадом циклы в своей модели, и вы хотите анализировать определенный цикл.
Location относится к определенному выходному порту блока в модели. Для удобства можно использовать имя сигнала, который происходит из этого порта, чтобы относиться к открытию.
Можно добавить постоянные открытия в интерфейс slLinearizer
или slTuner
, s
, когда вы создаете интерфейс или при помощи команды addOpening
. Чтобы удалить местоположение из списка постоянных открытий, используйте команду removeOpening
.
Чтобы просмотреть все открытия s
, введите s
в командной строке, чтобы отобразить интерфейсное содержимое. Для каждого постоянного открытия s
отображение включает имя блока и номер порта и имя сигнала, который происходит в этом местоположении. Можно также программно получить список всех постоянных открытий цикла с помощью getOpenings
.
addOpening
| addPoint
| getCompSensitivity
| getLoopTransfer
| getSensitivity
| slLinearizer
| slTuner
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.