Я хочу создать систему, которая будет имитировать маятник в виде перевернутого колеса с обменом моментами, показанным ниже.
Пока у меня есть система, состоящая из трех моделей:
RotationalPendulum.mo
model RotationalPendulum
import Modelica.SIunits;
Modelica.Mechanics.Rotational.Interfaces.Flange_a p;
parameter SIunits.Length L = 1.0;
parameter SIunits.Mass m = 1.0;
protected
SIunits.AngularVelocity omega;
SIunits.AngularAcceleration alpha;
parameter SIunits.MomentOfInertia J = m * L ^ 2;
constant Real g = Modelica.Constants.g_n;
equation
// equation to compute p.tau
end RotationalPendulum;
FrictionlessJoint.mo
model FrictionlessJoint
Modelica.Mechanics.Rotational.Interfaces.Flange_a a;
Modelica.Mechanics.Rotational.Interfaces.Flange_b b;
equation
a.tau = 0;
b.tau = 0;
end FrictionlessJoint;
PendulumSystem.mo
model PendulumSystem "Simple pendulum"
RotationalPendulum pend(m = 1, p(phi(start = 1, fixed = true)));
FrictionlessJoint joint;
Modelica.Mechanics.Rotational.Components.Fixed fixed;
equation
connect(pend.p,joint.a);
connect(joint.b,fixed.flange);
end PendulumSystem;
В модели RotationalPendulum.mo есть уравнение, которое должно отвечать за вычисление значения Tau и имеет следующую форму:
tau=gamma1*sin(q1)+kp*(q2+gamma2*q1)+kv*(d/dt(q2)+gamma2*d/dt(q1))
где gamma1, gamma2, kp, kv — константы и q1 = theta1, q2 = (theta1 + theta2).
У меня проблема в том, что я не знаю, как получить значение тета1, так как это угол стержня, но уравнение расположено в модели вращающегося маятника, где я могу получить доступ только к значению тета2, которое равно p.phi ( если я не ошибаюсь). Спасибо за любые идеи и помощь.