Step 7 Rampenfunktion Frage

danix46

Level-1
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr lieben Leut!!
Ich habe ein Problem mit einer Rampenfunktion die ich für die Schule programmieren soll.
Und zwar anstatt wie eine Rampe hochzufahren springt der Istwert einfach auf den Sollwert. Ich finde aber grade nicht heraus warum dies so ist.

Code:
      A     #io_X_Wertänderung
      AN    #io_X_Zeit_abgelaufen
      L     #io_T_Zeiteinheit_Rampe
      SD    #i_X_Zeit

      A     #i_X_Zeit
      =     #io_X_Zeit_abgelaufen


      A     #i_X_Zeit
      JCN   Nichts
// Auswertung Istwert < Sollwert
      L     #io_R_Istwert
      L     #io_R_Sollwert
      >R
      JCN   POS
      TAK
      L     #io_R_Wertänderung
      +R
      L     #i_R_Maximaldrehzahl
      >R
      JC    POS
      TAK
      L     #io_R_Sollwert
      >R
      JC    POS
      TAK
POS:  T     #io_R_Istwert
//--------------------------------------------------------------------

// Auswertung Istwert > Sollwert
      L     #io_R_Istwert
      L     #io_R_Sollwert
      <R
      JCN   NEG
      TAK
      L     #io_R_Wertänderung
      -R
      L     0.0
      <R
      JC    NEG
      TAK
      L     #io_R_Sollwert
      <R
      JC    NEG
      TAK
NEG:  T     #io_R_Istwert

Nichts : NOP 0

Sollte nicht bei jedem Mal wenn die Zeit abgelaufen ist der Istwert um die Wertänderung erhöht/verringert werden ?

Schöne Grüße,
Daniel
 
Hallo dies wäre der funtkionierende Programmcode.
Ich hab nur noch ein Problem und zwar wenn die Wertänderung + Istwert sich nicht genau auf Sollwert ausgeht, springt die Funktion hin und her (zB Sollwert 50, Wertänderung 2 --> springen zwischen 49 und 51 ) hat da jemand zufällig einen Lösungsansatz ?

Code:
      L     #io_R_Istwert
      L     #io_R_Sollwert
      <>R
      =     #io_X_Wertänderng

      A     #io_X_Wertänderng
      AN    #io_X_Zeit_abgelaufen
      L     #io_T_Zeiteinheit_Rampe
      SD    "Zeit"

      A     "Zeit"
      =     #io_X_Zeit_abgelaufen

      A     "Zeit"
      JCN   nix
// Auswertung Istwert < Sollwert
      L     #io_R_Istwert
      L     #io_R_Sollwert
      >R
      JC    POS
      TAK
      L     #io_R_Wertänderung
      +R
      L     #i_R_Maximaldrehzahl
      >R
      JC    POS
      TAK
      L     #io_R_Sollwert
      >R
      JC    POS
      TAK
      T     #io_R_Istwert
POS:  NOP 0

// Auswertung Istwert > Sollwert
      L     #io_R_Istwert
      L     #io_R_Sollwert
      >R
      JCN   NEG
      TAK
      L     #io_R_Wertänderung
      -R
      L     0.0
      <R
      JC    NEG
      TAK
      L     #io_R_Sollwert
      <R
      JC    NEG
      TAK
      T     #io_R_Istwert
NEG:  NOP 0

nix:  NOP 0
 
Moin Daniel,
ich verstehe überhaupt nicht, was Du da machst.
Du vergleichst Istwert und Sollwert und scheinst eine Regelung zu beabsichtigen und dann gibst Du den Istwert aus???
Der Sollwert muss von Dir vorgegeben werden, also eine treppenförmige Änderung des Sollwertes ansteigend bzw. abfallend, bis der angestrebte Endwert erreicht ist.
Wenn Du den Anfangswert und den Endwert vorgegeben bekommst, kannst Du z.B. aus der vorgegebenen Steigung die Anzahl der erforderlichen Stufen (und die dafür benötigte Zeit) ausrechnen oder aus der erforderlichen Anzahl Stufen (oder aus der vorgegebenen Zeit) die Steigung der Rampe.
Die Regelung, dass z.B. die jeweilige SollDrehzahl erreicht wird, darfst Du dem Antrieb überlassen und kannst die IstDrehzahl messen.
Was hat das aber mit der von Dir zu programmierenden Rampe zu tun?
Oder sollst Du z.B. eine Achse an einer vorgegebenen Position zum Stehen bringen und es geht darum, zu berechnen, an welcher Position Du das HerunterFahren an einer Rampe beginnen musst?

Gruss, Heinileini
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Heinilein,
es ist ein Sollwert vorgegeben und die ich solle eine Rampe erstellendie den Istwert zum Sollwert gehen lässt, mit einer von mir bestimmten Zeit und Wertänderung pro Zeit (beide Variabel, also zum Beispiel jede Sekunde 3 Einheiten oder jede halbe Sekunde 1ne Einheit).
Wenn der Istwert kleiner als der Sollwert ist geht die Rampe nach oben und andersherum nach unten. Ich glaube schon das ich das so ca. hinbekommen habe oder nicht ?

Jetzt geht es mir eigentlich nur mehr darum, das wenn die Wertänderung + Istwert sich nicht genau auf Sollwert ausgeht dann springt die Funkton zwischen POS und NEG. Ich will aber genau den Sollwert erreichen.
 
Zuletzt bearbeitet:
könntest du nicht einfach den Abstand ermitteln, also wenn Sollwert<>Istwertvergleich mit deiner Schrittlänge, wenn Schrittlänge größer als Differernz, dann verwende Schrittweite, wenn Differenz kleiner, dann verwende Differenz
 
Zurück
Oben