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

Ergebnis 1 bis 6 von 6

Thema: Leistung mit array berechnen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ich nehme Leistungsdaten auf und speicher diese in einem Array ab zugleich nehme ich auch die Zeit auf und speicher diese in einem zweiten Array.Jetzt möchte ich die durchschnitlliche Leistung berechnen.Dazu habe ich die Algemeine Formel A=(fn + fn+1)/2 * (tn+1 - tn).
    Dies hab ich als Code so umgesetzt.
    Leistung:=(F[n] + F[n+1])/2
    Zeit:=(T[h+1) -T[h])
    FlaecheLeistung:=Leistung*Zeit
    Habe Impuls vorgeschaltet der mir alle 100ms die Werte in die Arrays schreibt.I und H werden dabei immer um 1 erhöht.Bekomme aber nur komische Werte bei den Berechnungen heraus.
    Zitieren Zitieren Leistung mit array berechnen  

  2. #2
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Kannst du mal deinen Code reinstellen?!
    A programmer is just a tool which converts caffeine into code.

  3. #3
    timod79 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.02.2009
    Beiträge
    26
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    (*Energieoptimiert*)
    IF Zaehler.CV =1 THEN
    rt1 (CLK:=AN);(*Mit steigender Flanke bei Ansaugen wird Speicher auf True gesetzt*)
    SP1(SET:=rt1.Q);
    SP1(RESET1:=rt2.Q );(*Ausschalten unseres Impulses wenn Messung + Nachlaufzeit beendet ist*)
    IF rt1.Q THEN
    Leistungref:=0.0;
    Leistungges:=0.0;
    Laufzeit:=T#0s;
    LZR:=0.0;
    LVar[1]:=fileTime.dwLowDateTime;
    Minwert:=1000.0;
    END_IF

    (*Array alle 100 ms mit Messwerten des Durchflusses füllen*)
    Timer1 (IN:=SP1.Q1 AND NOT Timer2.Q,PT:=T#50ms);
    Timer2 (IN:=NOT Timer1.Q,PT:=T#50ms);
    ft1 (CLK:=Timer2.Q);(*Bei negativer Flanke an Ausgang von Timer 1, wird Messwert in Array geschrieben*)
    IF ft1.Q THEN
    MVar[i]:=LeistungI;(*Messwert in Array schreiben*)
    i:=i+1;(*Array um eins hochzählen*)
    Leistungref:=leistungref+Leistung;
    Maxwert:=MAX(Leistung,Maxwert);
    Minwert:=MIN(Leistung,Minwert);
    DTime:=fileTime.dwLowDateTime-LVar[1];
    RTime:=DWORD_TO_REAL(DTime);
    LRVar[H]:=RTime/10000000.00;
    H:=H+1;
    LesitungFlaeche:=(MVar[i-1]+MVar[i])/2.0;
    FlaecheZeit:=(LRVar[H]-LRVar[H-1]);
    END_IF

  4. #4
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    So auf die Schnelle fällt mir kein Fehler auf. Mir fehlt aber leider gerade die Zeit dazu, mir dein Programm näher anzuschauen.

    Was mir allerdings auffällt, ist deine umständliche Benutzung der 2 Timer. Wieso nimmst du nicht einfach einen Timer, der 100 ms läuft?
    A programmer is just a tool which converts caffeine into code.

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    was mir hier auffällt ist, dass keine Flanke für das Hochzählen des Index und das Abspeichern der Werte verwendet wird. Der Zyklus des Programms wird ja wohl sehr viel kleiner sein als die Timer-Laufzeit.
    Versuch doch mal folgendes :
    Code:
    IF ft1.Q and not Flanke THEN
    ...
    end_if ;
    Flanke := ft1.Q ;
    Gruß
    LL

  6. #6
    timod79 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.02.2009
    Beiträge
    26
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Larry hab es hin bekommen.

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Mechanische Leistung im Stillstand
    Von dizz3l im Forum Antriebstechnik
    Antworten: 8
    Letzter Beitrag: 06.06.2011, 18:53
  3. analogausgang und trotzdem leistung
    Von jigge im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 20.10.2008, 20:58
  4. Leistung kontaktlos übertragen
    Von Plasmablaster im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 23.08.2008, 19:49
  5. Leistung, einfach messen
    Von Josef Scholz im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 19.06.2003, 09:20

Lesezeichen

Berechtigungen

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