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