exponenta event banner

Создание уравнений Simscape из символьных выражений

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

Среду моделирования Simscape можно расширить, создав пользовательские компоненты. При определении компонента используйте раздел уравнения файла компонента, чтобы установить математические связи между переменными компонента, параметрами, входами, выходами, временем и производными времени каждого из этих объектов. Программа Symbolic Math Toolbox™ и Simscape позволяет выполнять символьные вычисления и использовать результаты этих вычислений в разделе уравнений. simscapeEquation функция переводит результаты символьных вычислений в уравнения языка Simscape.

Преобразовать алгебраические и дифференциальные уравнения

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

syms a y(t)
Dy = diff(y);
s = dsolve(diff(y, 2) == -a^2*y, y(0) == 1, Dy(pi/a) == 0);
s = simplify(s)

Решение заключается в следующем:

s =
cos(a*t)

Затем используйте simscapeEquation для перезаписи решения на языке Simscape:

simscapeEquation(s)

simscapeEquation генерирует следующий код:

ans =
    's == cos(a*time);'

Время переменной заменяет все экземпляры переменной t, за исключением производных относительно t. Чтобы использовать созданное уравнение, скопируйте уравнение и вставьте его в раздел уравнений файла компонента Simscape. Не копировать автоматически созданную переменную ans и знак равенства, который следует за ним.

simscapeEquation преобразует любую производную относительно переменной t в нотацию Simscape, X.der, где X - зависящая от времени переменная. Например, преобразуйте следующее дифференциальное уравнение в уравнение Simscape. Кроме того, здесь явно указывается левая и правая стороны уравнения с помощью синтаксиса simscapeEquation(LHS, RHS):

syms a x(t)
simscapeEquation(diff(x), -a^2*x)
ans =
    'x.der == -a^2*x;'

simscapeEquation также переводит кусочные выражения на язык Simscape. Например, результатом следующего преобразования Фурье является кусочная функция:

syms v u x
assume(x, 'real')
f = exp(-x^2*abs(v))*sin(v)/v;
s = fourier(f, v, u)
s =
piecewise(x ~= 0, atan((u + 1)/x^2) - atan((u - 1)/x^2))

Из этого символического кусочного уравнения, simscapeEquation генерирует действительный код для раздела уравнений файла компонента Simscape:

simscapeEquation(s)
ans =
    'if (x ~= 0.0)
         s == -atan(1.0/x^2*(u-1.0))+atan(1.0/x^2*(u+1.0));
       else
         s == NaN;
       end'

Очистите предположение о том, что x является действительным, повторно создав его с помощью syms:

syms x

Ограничения

Раздел уравнений файла компонента Simscape поддерживает ограниченное количество функций. Дополнительные сведения и список поддерживаемых функций см. в разделе Simscape equations (Simscape). Если символьное выражение содержит функции, которые не поддерживаются Simscape, то simscapeEquation не может представлять символическое выражение как уравнение Simscape и выдает предупреждение. Всегда проверяйте результат преобразования. Выражения с бесконечностями подвержены недопустимому преобразованию.