The package contains two converter elements, that enable the comfortable wrapping of the continuos bondgraphic models.
Name | Description |
---|---|
![]() | hybrid connector for the mechanical components |
![]() | hybrid connector for the mechanical components |
![]() | hybrid connector for the mechanical components |
![]() | links the bond graph with the mechanic connector |
![]() | links the bond graph with the mechanic connector |
![]() | introduces the contact signal to the mechanic system |
![]() | interface to the continuous models |
The extension adds the following potential variables:
The extension adds the following flow variables:
The variables Wm and T are resolved in their body system, that is specified by the orientation R. All other additional variables are resolved in the inertial system.
Do not use this connector directly! Use its two inheritors Frame_a and Frame_b.
Type | Name | Description |
---|---|---|
Potentials | P | |
flow Force | f[3] | Cut-force [N] |
flow Torque | t[3] | Cut-torque [N.m] |
Boolean | contact | |
Velocity | Vm[3] | [m/s] |
AngularVelocity | Wm[3] | [rad/s] |
flow Impulse | F[3] | [N.s] |
flow AngularImpulse | T[3] | [N.m.s] |
connector IFrame "hybrid connector for the mechanical components" extends Mechanics3D.Interfaces.Frame; import SI = Modelica.SIunits; Boolean contact; SI.Velocity Vm[3]; SI.AngularVelocity Wm[3]; flow SI.Impulse F[3]; flow SI.AngularImpulse T[3]; end IFrame;
Type | Name | Description |
---|---|---|
Potentials | P | |
flow Force | f[3] | Cut-force [N] |
flow Torque | t[3] | Cut-torque [N.m] |
Boolean | contact | |
Velocity | Vm[3] | [m/s] |
AngularVelocity | Wm[3] | [rad/s] |
flow Impulse | F[3] | [N.s] |
flow AngularImpulse | T[3] | [N.m.s] |
connector IFrame_a "hybrid connector for the mechanical components" extends IFrame; end IFrame_a;
Type | Name | Description |
---|---|---|
Potentials | P | |
flow Force | f[3] | Cut-force [N] |
flow Torque | t[3] | Cut-torque [N.m] |
Boolean | contact | |
Velocity | Vm[3] | [m/s] |
AngularVelocity | Wm[3] | [rad/s] |
flow Impulse | F[3] | [N.s] |
flow AngularImpulse | T[3] | [N.m.s] |
connector IFrame_b "hybrid connector for the mechanical components" extends IFrame; end IFrame_b;
The converter element replaces the classic converter elements of the inherited continuous models.
Type | Name | Description |
---|---|---|
MultiBondCon | MultiBondConTrans | |
IFrame_b | frame_b | |
RealSignal | x[3] | |
RealSignal | R[3, 3] | |
MultiBondCon | MultiBondConRot |
model MBG2IMech "links the bond graph with the mechanic connector" import MultiBondLib; MultiBondLib.Interfaces.MultiBondCon MultiBondConTrans(n=3); IFrame_b frame_b; MultiBondLib.Interfaces.RealSignal x[3]; MultiBondLib.Interfaces.RealSignal R[3,3]; MultiBondLib.Interfaces.MultiBondCon MultiBondConRot(n=3); equation MultiBondConTrans.e*MultiBondConTrans.d = frame_b.f; MultiBondConRot.e*MultiBondConRot.d = frame_b.t; MultiBondConTrans.f = frame_b.P.v; MultiBondConRot.f = frame_b.P.w; x = frame_b.P.x; R = frame_b.P.R; end MBG2IMech;
The converter element replaces the classic converter elements of the inherited continuous models.
Type | Name | Description |
---|---|---|
IFrame_a | frame_a | |
MultiBondCon | MultiBondConRot | |
RealSignal | x[3] | |
RealSignal | R[3, 3] | |
MultiBondCon | MultiBondConTrans |
model IMech2MBG "links the bond graph with the mechanic connector" import MultiBondLib; IFrame_a frame_a; MultiBondLib.Interfaces.MultiBondCon MultiBondConRot(n=3); MultiBondLib.Interfaces.RealSignal x[3]; MultiBondLib.Interfaces.RealSignal R[3,3]; MultiBondLib.Interfaces.MultiBondCon MultiBondConTrans(n=3); equation MultiBondConTrans.e*MultiBondConTrans.d = frame_a.f; MultiBondConRot.e*MultiBondConRot.d = frame_a.t; MultiBondConTrans.f = frame_a.P.v; MultiBondConRot.f = frame_a.P.w; x = frame_a.P.x; R = frame_a.P.R; end IMech2MBG;
The "InsertImpulse" element can also recieve several contact signals from the collision pool. Just add the corresponding inex numbers to the parameter vector "CPIndedces". Theses contact signals are automatically merged.
Type | Name | Default | Description |
---|---|---|---|
Integer | CPIndeces[:] | zeros(0) |
Type | Name | Description |
---|---|---|
IFrame_a | frame_a | |
IFrame_b | frame_b | |
input BooleanInput | u |
model InsertImpulse "introduces the contact signal to the mechanic system" IFrame_a frame_a; IFrame_b frame_b; Modelica.Blocks.Interfaces.BooleanInput u; parameter Integer[:] CPIndeces = zeros(0); protected outer CollisionPool collisionPool; Boolean u2; algorithm u2 := false; for i2 in CPIndeces loop for i in 1:collisionPool.poolSize loop u2 := u2 or (collisionPool.y[i2,i]); end for; end for; equation connect(frame_a, frame_b); frame_b.contact = u; if size(CPIndeces,1) > 0 then u = u2; end if; end InsertImpulse;
A force impulse is not transmitted through this element.
Type | Name | Description |
---|---|---|
IFrame_b | frame_b | |
Frame_a | frame_a |
model ConnectContinousFrame "interface to the continuous models" IFrame_b frame_b; Mechanics3D.Interfaces.Frame_a frame_a; equation defineBranch(frame_a.P, frame_b.P); frame_a.P = frame_b.P; frame_a.f + frame_b.f = zeros(3); frame_a.t + frame_b.t = zeros(3); frame_b.F = zeros(3); frame_b.T = zeros(3); end ConnectContinousFrame;