Versione Trial
Grazie per aver scaricato la versione Trial
La versione Trial è una versione ridotta della libreria SFPLibDyn sviluppata appositamente per permettere di testare l'ambiente di simulazione.
Questa sezione permette a chi possiede la Libreria Trial di orientarsi attraverso tutte le funzionalità mantenute in questa versione.
Preparazione dell'ambiente
- Innanzitutto assicurati di avere i requisiti di sistema, quindi installa la versione di OpenModelica che ti è stata fornita insieme alla libreria (
SFPLibDyn.mol). - Per orientarti all'interno del software ti consigliamo di leggere la sezione Guida rapida a OpenModelica.
Esempi specifici
Avendo una selezione limitata di componenti, non è possibile testare i file di esempio forniti nella sezione specifica, pertanto in questa sezione vengono proposti alcuni esempi da scaricare e utilizzare.
Esempio 1: curva portata-pressione attraverso uno strozzatore

Mostra il modello o scaricalo
model ex_1
SFPLibDyn.Hydraulic.Sources.FlowrateSource flowrateSource annotation(
Placement(transformation(origin = {-20, 32}, extent = {{-12, -10}, {12, 10}})));
SFPLibDyn.Hydraulic.Sources.Tank tank annotation(
Placement(transformation(origin = {10, -70}, extent = {{-6, -4.5}, {6, 4.5}})));
SFPLibDyn.Signals.Source.LinearStages linearStages(stage1_end = 60, stage1_duration = 0.5, stage2_duration = 0.5) annotation(
Placement(transformation(origin = {-56, 32}, extent = {{-10, -10}, {10, 10}})));
inner SFPLibDyn.Properties.Hydraulic.FluidProp fluidProp annotation(
Placement(transformation(origin = {62, 70}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Volumes.Volume2p volume2p(vol_0 = 0.001, pressure(start = 0)) annotation(
Placement(transformation(origin = {10, 8}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Orifices.Orifice orifice annotation(
Placement(transformation(origin = {10, -34}, extent = {{-6, -12}, {6, 12}})));
equation
connect(linearStages.y1, flowrateSource.u1) annotation(
Line(points = {{-46, 32}, {-32, 32}}));
connect(flowrateSource.h1, volume2p.h2) annotation(
Line(points = {{-8, 32}, {10, 32}, {10, 18}}));
connect(volume2p.h1, orifice.h2) annotation(
Line(points = {{10, -2}, {10, -22}}));
connect(orifice.h1, tank.h1) annotation(
Line(points = {{10, -46}, {10, -66}}));
annotation(
uses(SFPLibDyn(version = "3.2")),
__OpenModelica_simulationFlags(lv = "LOG_STDOUT,LOG_ASSERT,LOG_STATS", s = "dassl", variableFilter = ".*"),
experiment(StartTime = 0, StopTime = 1, Tolerance = 1e-08, Interval = 0.002));
end ex_1;
In questo esercizio viene proposto uno strozzatore che viene attraversato da una rampa di portata prima crescente, poi calante. Questo schema contiene gli elementi base che costituiscono la nostra libreria:
- un elemento capacitivo: il volume, che computa la pressione interna attraverso il bilancio totale di fluido che contiene;
- un elemento resistivo: lo strozzatore, che elabora una portata volumetrica di fluido (uscente per il volume) che attraversa lo strozzatore in funzione del salto di pressione agente sull'elemento.
Consulta la sezione apposita per un approfondimento.
Con un doppio clic sui componenti è possibile cambiarne le proprietà: per esempio nello strozzatore attraverso or_model è possibile indicare con quale parametro calcolare la taglia dello strozzatore.
- Diameter: richiede di inserire direttamente il diametro del foro nella tab
Diameter - PQChar: richiede i valori di portata e pressione caratteristici di un punto qualsiasi della sua curva caratteristica (da inserire nella tab
PQChar). Attarverso questi due valori il modello elabora l'apertura equivalente e quindi la portata istantanea.
Nella sezione grafici è possibile creare un plot parametrico e visualizzare la curva carattersitica risultante dello strozzatore impostato. Per portate volumetriche maggiori correggere i parametri di linearStage della sorgente del segnale.
Esempio 2: limitatrice di massima e valvola unidirezionale in parallelo

Mostra il modello o scaricalo
model ex_2
SFPLibDyn.Hydraulic.Sources.FlowrateSource flowrateSource annotation(
Placement(transformation(origin = {-20, 56}, extent = {{-12, -10}, {12, 10}})));
SFPLibDyn.Hydraulic.Sources.Tank tank annotation(
Placement(transformation(origin = {10, -70}, extent = {{-6, -4.5}, {6, 4.5}})));
SFPLibDyn.Signals.Source.LinearStages linearStages(stage1_end = 200, stage1_duration = 10) annotation(
Placement(transformation(origin = {-56, 56}, extent = {{-10, -10}, {10, 10}})));
inner SFPLibDyn.Properties.Hydraulic.FluidProp fluidProp annotation(
Placement(transformation(origin = {62, 70}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Valves.ReliefValve reliefValve(p_crack = 1.5e7, saturation = true, p_ch = 2.5e6, q_ch = 0.0033333333333333335) annotation(
Placement(transformation(origin = {-24, -24}, extent = {{-12, -12}, {12, 12}}, rotation = 180)));
SFPLibDyn.Hydraulic.Nodes.Node3p node3p annotation(
Placement(transformation(origin = {10, -52}, extent = {{6, -6}, {-6, 6}}, rotation = -0)));
SFPLibDyn.Hydraulic.Valves.CheckValve checkValve(saturation = true, linear_parameter = SFPLibDyn.Units.Choices.InputType.q_sat, q_sat = 4.166666666666667e-4, p_ch = 1.5e6, q_ch = 4.166666666666667e-4) annotation(
Placement(transformation(origin = {10, -24}, extent = {{-6, -12}, {6, 12}}, rotation = 180)));
SFPLibDyn.Hydraulic.Nodes.Node3p node3p1 annotation(
Placement(transformation(origin = {10, 6}, extent = {{6, 6}, {-6, -6}}, rotation = -0)));
SFPLibDyn.Hydraulic.Volumes.Volume2p volume2p(vol_0 = 0.001, pressure(start = 0)) annotation(
Placement(transformation(origin = {10, 32}, extent = {{-10, -10}, {10, 10}})));
equation
connect(linearStages.y1, flowrateSource.u1) annotation(
Line(points = {{-46, 56}, {-32, 56}}));
connect(node3p.h1, tank.h1) annotation(
Line(points = {{10, -58}, {10, -66}}));
connect(node3p.h3, reliefValve.h2) annotation(
Line(points = {{4, -52}, {-24, -52}, {-24, -36}}));
connect(node3p1.h2, checkValve.h1) annotation(
Line(points = {{10, 0}, {10, -12}}));
connect(checkValve.h2, node3p.h2) annotation(
Line(points = {{10, -36}, {10, -46}}));
connect(node3p1.h3, reliefValve.h1) annotation(
Line(points = {{4, 6}, {-24, 6}, {-24, -12}}));
connect(flowrateSource.h1, volume2p.h2) annotation(
Line(points = {{-8, 56}, {10, 56}, {10, 42}}));
connect(volume2p.h1, node3p1.h1) annotation(
Line(points = {{10, 22}, {10, 12}}));
annotation(
uses(SFPLibDyn(version = "3.2")),
__OpenModelica_simulationFlags(lv = "LOG_STDOUT,LOG_ASSERT,LOG_STATS", s = "dassl", variableFilter = ".*"),
experiment(StartTime = 0, StopTime = 10, Tolerance = 1e-08, Interval = 0.002));
end ex_2;
In questo esercizio è possibile studiare la parametrizzazione e il comportamento di una limitatrice di massima e di una valvola unidirezionale. L'andamento della pressione della camera sarà altamente influenzato dalle impostazioni di queste due valvole.
Esempio 3: controllo di un cilindro a semplice effetto

Mostra il modello o scaricalo
model ex_3
SFPLibDyn.Hydraulic.Sources.FlowrateSource flowrateSource annotation(
Placement(transformation(origin = {-33, -56}, extent = {{-12, -10}, {12, 10}})));
SFPLibDyn.Signals.Source.LinearStages linearStages(stage1_end = 120, stage1_duration = 0.2, stage2_end = 120, stage2_duration = 4.6, stage3_end = -120, stage3_duration = 0.4, stage4_end = -120, stage4_duration = 4.8) annotation(
Placement(transformation(origin = {-63, -56}, extent = {{-10, -10}, {10, 10}})));
inner SFPLibDyn.Properties.Hydraulic.FluidProp fluidProp annotation(
Placement(transformation(origin = {62, 70}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Volumes.Volume2p volume2p(vol_0 = 0.003, pressure(start = 0)) annotation(
Placement(transformation(origin = {-17, -34}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Mechanical.Translational.Mass mass(endstops_model = SFPLibDyn.Units.Choices.mass_type.Ideal, low_lim = 0, high_lim = 0.3, mass(displayUnit = "kg") = 3000, coeff_wind = 2e7) annotation(
Placement(transformation(origin = {35, 38}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Actuators.Cylinders.Cylinder cylinder(d_piston = 0.2, d_rod = 0.16, stroke = 0.3) annotation(
Placement(transformation(origin = {-4, 37}, extent = {{-18.5, -11}, {18.5, 11}})));
SFPLibDyn.Hydraulic.Sources.Tank tank annotation(
Placement(transformation(origin = {35, -50}, extent = {{-6, -4.5}, {6, 4.5}})));
SFPLibDyn.Hydraulic.Valves.ReliefValve reliefValve(p_crack = 4.5e6) annotation(
Placement(transformation(origin = {8, -6}, extent = {{-12, -12}, {12, 12}}, rotation = -90)));
SFPLibDyn.Hydraulic.Nodes.Node3p node3p annotation(
Placement(transformation(origin = {-17, -6}, extent = {{-6, -6}, {6, 6}})));
SFPLibDyn.Hydraulic.Nodes.Node3p node3p1 annotation(
Placement(transformation(origin = {35, -6}, extent = {{6, -6}, {-6, 6}}, rotation = -0)));
SFPLibDyn.Mechanical.Translational.Sources.ZeroForce zeroForce annotation(
Placement(transformation(origin = {61, 38}, extent = {{10, -10}, {-10, 10}}, rotation = -0)));
equation
connect(linearStages.y1, flowrateSource.u1) annotation(
Line(points = {{-53, -56}, {-45, -56}}));
connect(mass.t1, cylinder.t1) annotation(
Line(points = {{25, 38}, {14.5, 38}}));
connect(flowrateSource.h1, volume2p.h1) annotation(
Line(points = {{-21, -56}, {-17, -56}, {-17, -44}}));
connect(node3p.h1, volume2p.h2) annotation(
Line(points = {{-17, -12}, {-17, -24}}));
connect(cylinder.h1, node3p.h2) annotation(
Line(points = {{-17, 26}, {-17, 0}}));
connect(node3p.h3, reliefValve.h1) annotation(
Line(points = {{-11, -6}, {-4, -6}}));
connect(node3p1.h3, reliefValve.h2) annotation(
Line(points = {{29, -6}, {20, -6}}));
connect(cylinder.h2, node3p1.h2) annotation(
Line(points = {{7, 26}, {7, 15}, {35, 15}, {35, 0}}));
connect(node3p1.h1, tank.h1) annotation(
Line(points = {{35, -12}, {35, -45.5}}));
connect(zeroForce.t1, mass.t2) annotation(
Line(points = {{51, 38}, {45, 38}}));
annotation(
uses(SFPLibDyn(version = "3.2")),
__OpenModelica_simulationFlags(lv = "LOG_STDOUT,LOG_ASSERT,LOG_STATS", s = "dassl", variableFilter = ".*"),
experiment(StartTime = 0, StopTime = 10, Tolerance = 1e-08, Interval = 0.002),
Diagram(coordinateSystem(grid = {1, 1})),
Icon(coordinateSystem(grid = {1, 1})),
version = "");
end ex_3;
In questo esercizio si tenta il controllo di un cilindro a semplice effetto attraverso una sorgente di portata.
La sorgente di portata genera inizialmente un ingresso di 120 l/min di olio; raggiunto il finecorsa il segnale si inverte e (attraverso il segno negativo) vengono sottratti 120 l/min di olio dalla stessa camera.
Dai plot e dalle animazioni è possibile notare come il rientro del cilindro proceda molto più lentamente. Attenzione: CAVITAZIONE!
È possibile rendersi conto della cavitazione osservando le variabili del volume collegato al fondello del pistone, oppure osservando l'animazione dello schema.