Supermario73
Level-2
- Beiträge
- 77
- Reaktionspunkte
- 2
Nönö berechnen ist schon okay. Kann man sich n baustein machen. 10kubikmeter auslitern kann sich hinziehen.
Ich würd der übersichtlichkeithalber SCL vorziehen.
Anscheinend wurde dem TE aber aufgetragen, mit variablen Werten (Eingaben) zu rechnen.aber wenn sich in der Praxis die Behältermaße nicht ständig ändern
d= Eingabe Durchmesser
h= Eingabe Füllstand
L= Eingabe Länge des Tanks
Auf seinem Bild mit der Originalformel steht ja auch "Horizontal cylinder" ... ich wollte ihn aber auch schon auf die Formel für den stehenden Zylinder hinweisen.nebenbei, die Formel sieht eher nach nem liegenden Tank aus, stehend wäre sie V=pi/4*d²*h
CALL "Potenz" (
P_in := #Temp_Real_1,
X_in := 2.500000e+000,
Y_out := #Teil_1);
Hi
Mhm Mir hat ein schlauer mann bei Siemens gesagt das beim rechnen mit real zahlen fehler auftreten ( rechenfehler) in der cpu) hatte mengenrechner mit realzahlen gemacht die aber falsch rechneten nicht viel aber ein bischen. er sagte ich muss da umdispunieren und mit int und ganzen zahlen rechnen sprich vergleich wann ich eine gewisse zahl adieren kann und die dann adieren aber im ganzzahlbereich mit gleitzahlen rechnet die s7 falsch. Ob das bei jeder S7 ist weis ich nicht.
Werde nun noch die runden Ende des Tanks links und rechts berechnen
FUNCTION FC 3 : VOID
TITLE =Potenz
VERSION : 0.1
VAR_INPUT
P_in : REAL ; //Basis
X_in : REAL ;
END_VAR
VAR_OUTPUT
Y_out : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =Potenz
L #P_in;
LN ;
L #X_in;
*R ;
EXP ;
T #Y_out;
END_FUNCTION
FUNCTION "Vol_Tank_Calc" : VOID
TITLE =Berechnet das Volumen eines Tankes
VERSION : 0.1
VAR_INPUT
Durchmesser_Tank : REAL ;
Laenge_Tank : REAL ;
Hoehe_Wasserspiegel : REAL ;
END_VAR
VAR_OUTPUT
Liter : REAL ;
END_VAR
VAR_TEMP
Temp_Real_1 : REAL ;
Temp_Real_2 : REAL ;
Temp_Real_3 : REAL ;
Teil_1 : REAL ;
Teil_2 : REAL ;
Teil_3 : REAL ;
Teil_4 : REAL ;
Teil_1_mul_Teil_2 : REAL ;
Teil_3_mul_Teil_4 : REAL ;
Zylinder : REAL ;
Koepfe : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =Teil 4 berechnen
L #Durchmesser_Tank;
L #Hoehe_Wasserspiegel;
*R ;
T #Temp_Real_1;
L #Hoehe_Wasserspiegel;
L #Hoehe_Wasserspiegel;
*R ;
T #Temp_Real_2;
L #Temp_Real_1;
L #Temp_Real_2;
-R ;
T #Temp_Real_3;
CALL "Potenz" (
P_in := #Temp_Real_3,
X_in := 5.000000e-001,
Y_out := #Teil_4);
NETWORK
TITLE =Teil 3 berechnen
L #Durchmesser_Tank;
L 2.000000e+000;
/R ;
L #Hoehe_Wasserspiegel;
-R ;
T #Teil_3;
NETWORK
TITLE =Teil 3 mit Teil 4 multiplizieren
L #Teil_3;
L #Teil_4;
*R ;
T #Teil_3_mul_Teil_4;
NETWORK
TITLE =Teil 1 berechnen
L #Durchmesser_Tank;
L 2.000000e+000;
/R ;
T #Temp_Real_1;
CALL "Potenz" (
P_in := #Temp_Real_1,
X_in := 2.000000e+000,
Y_out := #Teil_1);
NETWORK
TITLE =Teil 2 berechnen
L #Durchmesser_Tank;
L 2.000000e+000;
/R ;
T #Temp_Real_1;
L #Teil_3;
L #Temp_Real_1;
/R ;
T #Temp_Real_2;
ACOS ;
T #Teil_2;
NETWORK
TITLE =Teil 1 mit Teil 2 multiplizieren
L #Teil_1;
L #Teil_2;
*R ;
T #Teil_1_mul_Teil_2;
NETWORK
TITLE =#Teil_1_mul_Teil_2 von Teil_3_mul_Teil_4 subtrahieren
L #Teil_1_mul_Teil_2;
L #Teil_3_mul_Teil_4;
-R ;
T #Temp_Real_1;
NETWORK
TITLE =...mit der Länge multiplizieren
L #Temp_Real_1;
L #Laenge_Tank;
*R ;
T #Zylinder;
NETWORK
TITLE =Köpfe berechnen
L #Hoehe_Wasserspiegel;
L #Hoehe_Wasserspiegel;
*R ;
T #Temp_Real_1;
L 3.141593e+000;
L 6.000000e+000;
/R ;
L #Temp_Real_1;
*R ;
T #Temp_Real_2;
L 1.500000e+000;
L #Durchmesser_Tank;
*R ;
L #Hoehe_Wasserspiegel;
-R ;
T #Temp_Real_3;
L #Temp_Real_2;
L #Temp_Real_3;
*R ;
T #Koepfe;
NETWORK
TITLE =Zylinder und Köpfe addieren
L #Koepfe;
L 2.000000e+000;
*R ;
L #Zylinder;
+R ;
L 1.000000e+003;
*R ;
T #Liter;
END_FUNCTION
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?