Seegangsfolgeeinrichtung

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralf,

also der Neigungssensor ändert seinen Wert von z. B. 15000 auf 17000 und dann wieder zurück auf 1500. Ich möchte den Arm nachfahren wenn der wert steigt und wieder zurückfahren wenn der Wert sinkt.
 
Eine (halbfertige) Lösung mit Regler und beiden Gebern liefe so ähnlich wie
Code:
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
HIV - Hatt ich vergessen ... hinters Netzwerk mit dem Cont_C
Code:
      L     #Hydraulik
      L     1.000000e+001
      +R    
      L     2.000000e+001
      /R    
      L     2.764600e+004
      *R    
      RND   
      T     #HydraulikRoh

Muß ja noch den -10 ... 10 V Wert zurücknormieren, Mist

Gruß Ralf
 
Hallo,

die Anlage läuft jetzt mit einem CONT_C. :D Allerdings habe ich jetzt Überschwingungen in meinem hydraulischen Arm, d. h. er fährt mir über den Sollwert und dann wieder zurück usw. :?

Wie bekommt man dieses in den Griff? Ich habe schon mit TI (sehr groß), Gain (sehr klein) und Totband herumprobiert aber noch keine zufriedenstellende Lösung gefunden. :?:

MfG
C-F
 
Zurück
Oben