Определение уравнений компонента

Цель раздела уравнения

Цель раздела уравнения состоит в том, чтобы установить математические отношения среди переменных компонента, параметров, входных параметров, выходных параметров, время и производные времени каждой из этих сущностей. Раздел уравнения файла Simscape™ выполняется в течение симуляции.

Примечание

Можно также задать уравнения, которые выполняются во время инициализации модели только, при помощи (Initial=true) атрибут. Для получения дополнительной информации смотрите Начальные уравнения.

Уравнение языка Simscape состоит из двух выражений, соединенных с == оператор. В отличие от регулярного оператора присваивания (=), == оператор задает непрерывное математическое равенство между этими двумя выражениями (для получения дополнительной информации, смотрите Задающее Математическое Равенство). Выражения уравнения могут быть созданы из любого из идентификаторов, заданных в объявлении модели. Можно также получить доступ к глобальному времени симуляции от раздела уравнения с помощью time функция.

Для списка функций MATLAB®, которые можно использовать в разделе уравнения, смотрите Поддерживаемые Функции.

Определение математического равенства

Язык Simscape предусматривает семантически, что все выражения уравнения, возвращенные разделом уравнения файла Simscape, задают непрерывное математическое равенство между двумя выражениями. Рассмотрите простой пример:

equations
   Expression1 == Expression2;
end

Здесь мы объявили равенство между Expression1 и Expression2. Лево-и правые выражения стороны являются любыми допустимыми выражениями MATLAB (см. следующий раздел для ограничений на использование операторов отношения: ==, <, >, <=, >=, ~=, &&, ||). Выражения уравнения могут быть созданы из любого из идентификаторов, заданных в объявлении модели.

Уравнение определено с == оператор. Это означает, что уравнение не представляет присвоение, а скорее симметричное математическое отношение между лево-и правыми операндами. Поскольку == симметрично, левый операнд не ограничивается только переменной. Например:

component MyComponent
  [...]
  variables
    a = 1;
    b = 1;
    c = 1;
  end
  equations
    a + b == c;
  end
end

Следующий пример математически эквивалентен предыдущему примеру:

component MyComponent
  [...]
  variables
    a = 1;
    b = 1;
    c = 1;
  end
  equations
    0 == c - a - b;
  end
end

Примечание

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

Использование операторов отношения в уравнениях

В предыдущем разделе мы обсудили как == используется, чтобы объявить математические равенства. В MATLAB, однако, == дает к выражению как любой другой оператор. Например:

(a == b) * c;

где aB, и c представляйте скалярные двойные значения, легальное выражение MATLAB. Это означало бы, взяло бы logical значение сгенерировано путем тестирования aэквивалентность b, принудите это значение к double и умножьтесь c. Если a совпадает с b, затем это выражение возвратит c. В противном случае это возвратится 0.

С другой стороны, в MATLAB мы можем использовать == дважды создавать выражение:

a == b == c;

Это выражение неоднозначно, но MATLAB делает == и другие левоассоциативные операторы отношения, таким образом, это выражение обработано как:

(a == b) == c;

Тонкое различие между (a == b) == c и a == (b == c) может быть значительным в MATLAB, но является четным более значительный в уравнении. Поскольку использование == является значительным на языке Simscape, и избегать неоднозначности, следующего синтаксиса:

component MyComponent
  [...]
  equations
    a == b == c;
  end
end

недопустимо на языке Simscape. Необходимо явным образом сопоставить случаи верхнего уровня операторов отношения. Также

component MyComponent
  [...]
  equations
    (a == b) == c;
  end
end

или

component MyComponent
  [...]
  equations
    a == (b == c);
  end
end

законны. В любом случае количество в круглых скобках приравнивается к количеству с другой стороны уравнения.

За исключением использования верхнего уровня == оператор == и другие операторы отношения левоассоциативны. Например:

component MyComponent
  [...]
  parameters
    a = 1;
    b = 1;
    c = false;
  end
  variables
    d = 1;
  end
  equations
    (a == b == c) == d;
  end
end

законно и интерпретирован как:

component MyComponent
  [...]
  parameters
    a = 1;
    b = 1;
    c = false;
  end
  variables
    d = 1;
  end
  equations
    ((a == b) == c) == d;
  end
end

Размерность уравнения

Выражения по обе стороны от == оператор не должен быть скалярными выражениями. Они должны быть или тем же размером, или нужно быть скаляром. Например:

equations
  [...]
  <3x3 Expression> == <3x3 Expression>;
  [...]
end

законно и вводит 9 скалярных уравнений. Выражение уравнения:

equations
  [...]
  <1x1 Expression> == <3x3 Expression>;
  [...]
end

также законно. Здесь, левая сторона уравнения расширена, через скалярное расширение, в то же выражение, реплицированное в 3x3 матрица. Это выражение уравнения также вводит 9 скалярных уравнений.

Однако выражение уравнения:

equations
  [...]
  <2x3 Expression> == <3x2 Expression>;
  [...]
end

недопустимо, потому что размеры выражений на лево-и правой стороне отличаются.

Непрерывность уравнения

Раздел уравнения оценен в непрерывное время. Некоторые значения, которые доступны в разделе уравнения, являются самостоятельно кусочно-непрерывными, то есть, они изменяются постоянно вовремя. Эти значения:

  • переменные

  • входные параметры

  • выходные параметры

  • время

Piecewise continuous указывает, что значения непрерывны по компактным временным интервалам, но могут изменить значение в определенных экземплярах. Следующие значения являются непрерывными, но не изменяющимися во времени:

  • параметры

  • константы

Изменяющиеся во времени исчисляемые значения, например, целое число или логический, никогда не непрерывны.

Непрерывность распространена как тип данных. Это распространено через непрерывные функции (см. Поддерживаемые Функции).

Работа с физическими единицами измерения в уравнениях

На языке Simscape вы объявляете члены (такие как параметры, переменные, входные параметры и выходные параметры) как значение с модулем, и уравнения автоматически обрабатывают все модульные преобразования.

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

Например, следующая формула дает перепад давления, в Па, в терминах скорости потока жидкости, в м^3/c:

p == k * q^1.023 

где p является давлением, q является скоростью потока жидкости, и k является некоторой безразмерной константой. Чтобы написать эту формулу в языке Simscape, используйте:

p == { k * value(q, 'm^3/s')^1.023, 'Pa' } 

Этот подход работает независимо от фактических модулей p или q, пока они соразмерны с давлением и объемным расходом, соответственно. Например, фактическая скорость потока жидкости может быть в галлонах в минуту, уравнение будет все еще работать и обрабатывать модульное преобразование автоматически.

Связанные примеры

Больше о