FUNCTION_BLOCK "Schiff"
TITLE =
VERSION : 0.1
VAR_INPUT
RohNeigSchiff : INT ; //Neigungsgeber Schiff
RohNeigAusgl : INT ; //Neigungsgeber Ausgleich
VerstellOben : BOOL ; //Von Hand nach oben fahren
VerstellUnten : BOOL ; //Von Hand nach unten fahren
END_VAR
VAR_OUTPUT
WinkelSchiff : REAL ; //Winkel Neigungssensor 1
WinkelAusgleich : REAL ; //Winkel Neigungssensor 2
HydraulikRoh : INT ; //+/- 10V an Ventil
END_VAR
VAR
Winkel1Offset : REAL := -4.500000e+001; //Offset Geber 1
Winkel1Faktor : REAL := 9.000000e+001; //Skalierung Geber 1
Winkel2Offset : REAL := -4.500000e+001; //Offset Geber 2
Winkel2Faktor : REAL := 9.000000e+001; //Skalierung Geber 2
WinkelDiffSoll : REAL ; //SollWertWinkeldifferenz
Hydraulik : REAL ;
Restart : BOOL ;
END_VAR
VAR_TEMP
WinkelDifferenzIst : REAL ; //IstWertWinkeldifferenz
END_VAR
BEGIN
NETWORK
TITLE =Scale
//Skaliere Neigungssensor 1
L #RohNeigSchiff;
ITD ;
DTR ; // mach erstmal REAL
L 2.764800e+004; //
/R ;
L #Winkel1Faktor;
*R ;
L #Winkel1Offset;
-R ;
T #WinkelSchiff;
NETWORK
TITLE =Scale1
//Skaliere Neigungssensor 1
L #RohNeigAusgl;
ITD ;
DTR ; // mach erstmal REAL
L 2.764800e+004; //
/R ;
L #Winkel2Faktor;
*R ;
L #Winkel2Offset;
-R ;
T #WinkelAusgleich;
L #WinkelSchiff;
-R ;
T #WinkelDifferenzIst; // Istwertspeichern
NETWORK
TITLE =
//Manuelles Fahren abfragen
U #VerstellOben;
O #VerstellUnten;
SPB man;
NETWORK
TITLE =
CALL "CONT_C" , DB 80 (
COM_RST := #Restart,
SP_INT := #WinkelDiffSoll,
PV_IN := #WinkelDifferenzIst,
LMN_HLM := 1.000000e+001,
LMN_LLM := -1.000000e+001,
LMN := #Hydraulik);
NETWORK
TITLE =
//Restart Löschen und ab zum Normieren Propventil
SET ;
R #Restart;
BE;
NETWORK
TITLE =
//Restart Setzen
man: SET ;
S #Restart;
L WinkelDifferenzIst
T WinkelDifferenzSoll // Hinterher ergänzt, sonst gehtnich!
NETWORK
TITLE =
//Manuelles fahren der Hydraulik (aber jetzt nur ganz einfach ein Schritt / Zyklus
//... und ich weiß, daß ich hierfür totgeschlagen werde ....
UN #VerstellOben;
SPB runt;
L 1;
L #HydraulikRoh;
+I ;
T #HydraulikRoh;
SPA norm;
NETWORK
TITLE =
runt: L #HydraulikRoh;
L 1;
-I ; // Minus! vorher stand hier nen Plus. Ich DOOF! :oops:
T #HydraulikRoh;
NETWORK
TITLE =
norm: L #HydraulikRoh;
ITD ;
DTR ;
L 2.764800e+004;
/R ;
L 2.000000e+001;
*R ;
L 1.000000e+001;
-R ;
T #Hydraulik;
BE ;
END_FUNCTION_BLOCK