Почему передаточные функции simulink имеют прямую связь, когда длины числителя и знаменателя равны? - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь понять функцию передачи Simulink (непрерывная).В документации для передаточного функционального блока это указывает, что он имеет прямую характеристику прохода, когда числитель и знаменатель имеют одинаковую длину.

Прямая характеристика прохода, согласно документация , указывает, что выход управляется непосредственно входом (а не переменными состояния).

Я не понимаю, как можно реализовать функцию передачи, числитель и знаменатель которой имеютта же степень (больше нуля) без использования переменных состояния или предыдущих значений ввода / вывода для вычисления связанных производных.


Справочная информация

Вот линия мысли, которая привела меня к этомувопрос:

Я хотел бы реализовать код C ++, который представляет линейную систему с передаточной функцией.Для этой реализации я буду использовать вход x(t) и вычислю выход y(t).Допустим, передаточная функция этой системы равна G(s).Я могу написать это как Y(s) = G(s) * X(s).

Более того, я скажу, что G(s) = numerator(s) / denominator(s), где numerator(s) - это многочлен от переменной области Лапласа s степени M и коэффициенты c_{M}, c_{M-1}, ..., c_{1}, ..., c_{0}.Знаменатель - это еще один многочлен, но степени N и коэффициентов d_{N}, ..., d_{0}.

. Чтобы решить эту систему, я переписываю ее как denominator(s) * Y(s) = numerator(s) * X(s).Используя свойства преобразования Лапласа и предполагая, что начальные условия равны нулю для всех производных, я получаю

d_{N}*y^{N} + d_{N-1}*y^{N-1} + ... + d_{0}*y = c_{M}*x^{M} + c_{M-1}*x^{M-1} + ... + c_{0}*x

Где y^{k} - k-производная y(t) и аналогично для x.

Я решаю это уравнение с помощью числового интегратора (скажем, для простоты эйлера), который позволяет мне вычислять y и его производные с использованием N-1 переменных состояния.Для k-производных x я приблизительно аппроксимирую его, используя последние k+1 значения входа (например, x^{1} = (x(t2) - x(t1)) / (t2-t1).

Короче говоря, мне нужно отслеживать N-1 переменных состояния дляY и M+1 предыдущие значения x. Затем я вспомнил, что simulink делает это без какого-либо предыдущего значения, когда M==N. Как это возможно?

1 Ответ

2 голосов
/ 17 ноября 2011

В случае, когда знаменатель и числитель имеют одинаковый размер, выходные данные будут зависеть от входных значений, но также будут зависеть от значений состояний. Таким образом, блок будет иметь прямой проход, но ему также нужно N - 1 состояний, где N - длина знаменателя.

См. вики-статью , где приведен пример передаточной функции, в которой вывод напрямую зависит от входа (а также состояний).

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

Надеюсь, это поможет.

...