Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Kurvenprogramm

  1. #1
    Registriert seit
    26.11.2011
    Beiträge
    139
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo,

    hat vielleicht jemand ein Beispielprogramm oder ein Idee für ein Kurven verlauf.

    die Kurve soll nachfolgende Beschreibung laufen:

    vom P1=20 bis P2=220 (T1=0 bis T2=10 ) läuft mi einer Steigung von 20.
    vom P2=220 bis P3=470 (T1=10 bis T2=20 ) läuft mi einer Steigung von 25.
    vom P3=470 bis P4=470 (T1=20 bis T2=30 ) läuft mi einer Steigung von 0.
    vom P4=470 bis P5=40 (T1=30 bis T2=40 ) läuft mi einer Steigung von -43.
    Zitieren Zitieren Kurvenprogramm  

  2. #2
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Du willst einfach ne einfache XY kurve?

    Also Eingang X1 gibt Ausgang Y1 und Eingang X2 gibt Ausgang Y2? Und dazwischen einfach eine Gerade?

    Code:
    FUNCTION X_Y: REAL
    (*Umwandlungsoperation*)
    TITLE = 'REAL scalierung von X nach Y'
    VERSION : '1.0'
    AUTHOR  : vor
    NAME    : X_Y
    FAMILY  : data
    
    (*X umskalieren nach Y*)
    (*X1 nach Y1, X2 nach X2, X wird in Bereichen X1 und X2 begrenzt*)
    (*Negative sowie Positive Lineare und Werte sind erlaubt*)
    {S7_tasklist:='false';
     S7_blockview:='small'}
    
    VAR_INPUT
       X: REAL; 
      X1: REAL;
      X2: REAL;
      Y1: REAL;
      Y2: REAL;
    END_VAR
    
    VAR_TEMP
     LIM_X_UG: REAL;
     LIM_X_OG: REAL;
     LIMIT_R: REAL;
     END_VAR
    
    (*Eingang X wird Limitiert*)
     BEGIN
      IF X1 < X2 THEN
         LIM_X_UG:= X1;
         LIM_X_OG:= X2;
      ELSIF X2 < X1 THEN 
         LIM_X_UG:= X2;
         LIM_X_OG:= X1;
      END_IF;   
    
    (*Eingang X wird Limitiert*)
    LIMIT_R:=LIMIT(Mn:=LIM_X_UG, IN:=X, Mx:=LIM_X_OG); 
    
    (*Umrechnung des limitierten X Wertes*)
    X_Y:=((Y2-Y1)/(X2-X1)*LIMIT_R+(Y2-(Y2-Y1)/(X2-X1)*X2));
    END_FUNCTION

  3. #3
    ka1978 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2011
    Beiträge
    139
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Danke für die Schnelle Antwort.

    es muss die 5 Werte (P1 bis P5(Temperaturwerte) mit (T1 bis T5)(Zeitwerte) als Eingaben am TochPanel.

  4. #4
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Sorry mit der Beschreibung hab ich so meine Mühe. Kannst du das näher ausführen?

  5. #5
    ka1978 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2011
    Beiträge
    139
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok , ich formuliere ganz anders, die folgende Koordinaten :P1 (0h,20°C); P2 (10h,220°C); P3 (20h,470°C), P4(30h,470°C) und P5(40,200°C) sind

    als Eingabe Werte am Touchpanel zum Darstellung von der Kurve.

    ich hoffe, dass es jetzt deutlicher ist.

  6. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Ah okay, da könntest du obiges Programm im Ganzen erweitern um weitere Stützpunkte oder du erweiterst den Baustein mit einem Output (Act)

    und dem Code:
    Code:
     Act := (X >= X1) AND (X <= X2);
    Damit du siehst wenn X sich in den Grenzen X1 und X2 befindet.

    Dann rufst du für die Gerade P1-P2, P2-P3, P3-P4 und P4-P5 den baustein auf jeweils auf wobei X1/Y1 z.B. 0h/20.0 drin hat X2/Y2 10h/220.0

    An X hängst du einen TON Zeitausgang an oder was du halt willst. Und lässt den dann laufen.

    Mit dem Ausgang Act kopierst du die Werte auf deinen Rückgabewert den du dann verwenden willst.

    Und Sämtliche Anschlüsse beschickst du mit den Variablen welche du vom Touch schreiben willst.

    mfg René

  7. #7
    ka1978 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2011
    Beiträge
    139
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke.

    ich habe nicht so richtig verstanden, wenn es möglich den Code in AWL zu schreiben, es wäre ganz nett.

    ich habe Ein code geschrieben aber leider bis jetzt läuft nicht richtig Sauber.wenn Sie mir Ihre mail adresse geben, sende ich Ihnen den

    Code.Natürlich, wenn Sie nicht was dagegen haben.

  8. #8
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    poste doch hier was du bis jetzt hast. Hier gilt ja auch. Viele Wege führen nach Rom.

  9. #9
    Registriert seit
    05.10.2005
    Beiträge
    2.373
    Danke
    321
    Erhielt 296 Danke für 266 Beiträge

    Standard

    Schau mal hier rein:

    Analogwert in abhängigkeit einer Zeit erhöhen !!



    Gesendet von meinem GT-N7100 mit Tapatalk 2

  10. #10
    ka1978 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    26.11.2011
    Beiträge
    139
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Da poste ich den Code , was mache ich hier nicht so Richtig.

    Code:
         U    "DB_werte".Freigabe
    
          SPB   Anf
    
          R     M    190.0
          R     M    190.2
    
          L     0.000000e+000
          T    "DB_werte".Zielwert
    
          L     1.000000e+000
          T    "DB_werte".Steigung
    
          SPA   END
    
    Anf:  NOP   0
          NOP   0
          NOP   0
    
          L     "DB_Werte".p1
          T     "DB_werte".Zielwert
    
          L     "DB_werte".Sollwert
          L     "DB_werte".Zielwert
          >=R   
    
          SPB   m02
    
          L     "DB_werte".p1
          L     "DB_werte".p0
          -R    
          L     "DB_werte".T1
          /R    
          T     "DB_werte".Steigung
    
          SPA   END
    
    m02:  NOP   0
          L     "DB_werte".p2
          T     "DB_werte".Zielwert
    
          L     "DB_werte".Sollwert
          L     "DB_werte".Zielwert
          >=R   
    
          SPB   m03
    
          L     "DB_werte".p2
          L     "DB_werte".p1
          -R    
          L     "DB_werte".T2
          /R    
          T     "DB_werte".Steigung
    
          SPA   END
    
    m03:  NOP   0
    
          L    "DB_werte".p3
          L     "DB_werte".p2
          ==R   
          =     M    190.0
    
          SPBN  m06
    
          L     "DB_werte".p3
          T     "DB_werte".Zielwert
    
          L     0.000000e+000
          T     "DB_werte".Steigung
    
    
          U     M    190.2
          SPB   m08
    
          SPA   END
    
    m06:  NOP   0
    
          L     "DB_werte".p3
          T     "DB_werte".Zielwert
    
          L     "DB_werte".Sollwert
          L     "DB_werte".Zielwert
    
          >R    
    
          SPB   m08
    
    
          L    "DB_werte".p3
          L     "DB_werte".p2
          -R    
          L     "DB_werte".T3
          /R    
          T     "DB_werte".Steigung
    
          SPA   END
    
    
    m08:  NOP   0
    
          L     "DB_werte".p4
          T     "DB_werte".Zielwert
    
          L    "DB_werte".Sollwert
          L    "DB_werte".Zielwert
    
          >=R   
    
          SPB   END
    
          L     "DB_werte".p4
          L     "DB_werte".p3
          -R    
    
          L     "DB_werte".T4
          /R    
          T     "DB_werte".Steigung
    
          SPA   END
    
    END:  NOP   0

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •