logo desc

Нередко во FlowVision возникает необходимость задать периодические процессы, например:

  • поступательное движение поршня и клапанов в двигателе внутреннего сгорания
  • синусоидальный расход жидкости на входе
  • поступательное движение штока в гидравлической системе

ice

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

В данной статье рассмотрены способы задания колебательного процесса с помощью редактора формул.

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

Например, колебательный процесс (скорость поступательного движения некоего клапана) описывается формулой:

{

(t<T/2): A*sin(w*t+fi);

(t>=T*1/2) AND (t<=T*3/4): Const1;

(t>T*3/4): Const2;

}

В данной формуле Т - это период колебания; t - это временнАя переменная, которая всегда изменяется от 0 до Т; Const1 и Const2 - некие константы.

Таким образом первую половину периода клапан движется по синусоиде, третью четверть движется со постоянной скоростью Const1 и последнюю четверть движется с постоянной скоростью Const2.

 

Теперь необходимо вычислить переменную t, которая зависит от текущего времени рассчитываемого процесса: t=f(Time) и 0<=t<T .

Для начала вычислим, сколько полных периодов умещается в текущий момент времени, сделать это очень просто:

T=1.5;

countOfT = trunc(Time/T);

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

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

Её же будем использовать для того, чтобы вычислить, сколько времени длится колебание на текущем периоде - это и есть наша t:

Time - countOfT*T

 

Принцип работы с переменными:

  1. Создаем пользовательскую константу T - период колебаний.
  2. Создаем пользовательскую глобальную переменную countOfTime - количество прошедших периодов.
  3. Создаем пользовательскую глобальную переменную t - время внутри периода (время от 0 до T )
  4. Создаем пользовательскую глобальную переменную V - скорость, зависящая от t
  5. Используем переменную V:
    1. Для вывода графика скорости (по нему также можно проверить корректность формул) в окно графиков
    2. Для задания скорости движения подвижного тела

Замечания

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

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

Ссылки