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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Werte im array verschieben

  1. #11
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MasterOhh Beitrag anzeigen
    Ja so kannst du einen Mittelwert über die letzten 10 Minuten bilden. Du erhälst aber nur alle 10 Minuten einen neuen Wert, wenn dir das reicht....
    Ansonsten befasse dich mal mit dem Thema "gleitender Mittelwert". Ich denke dazu findest du hier im Forum auch schon die ein oder andere Lösung.
    ok danke. ja den gleitenden mittelwert bilde ich mit den letzten 10 werten (ganz am anfang des threads) diesen 10 min mittelwert brauche ich für ein histogramm, das system soll theoretische jahrelang laufen, und alle 10 min mitteln.

  2. #12
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Caroli Beitrag anzeigen
    Wenn Du einen 10min Mittelwert bilden willst, kannst Du die For.. Schleife 1mal je min für 1 Zyklus aufrufen.
    wie funktioniert das? habe das mit zeitlichen angaben nie gesehen

  3. #13
    Registriert seit
    04.09.2012
    Beiträge
    54
    Danke
    4
    Erhielt 7 Danke für 7 Beiträge

    Standard

    (*..geht wieder über den Timer..*)

    VAR
    minTimer:ton;
    end_var

    minTimer(PT:=t#1m);
    minTimer.IN:=not minTimer.Q;

    IF minTimer.Q THEN
    (*hier packst Du die FOR.. ..END_FOR Sachen rein*);
    END_IF

  4. #14
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Caroli Beitrag anzeigen
    (*..geht wieder über den Timer..*)

    VAR
    minTimer:ton;
    end_var

    minTimer(PT:=t#1m);
    minTimer.IN:=not minTimer.

    IF minTimer.Q THEN
    (*hier packst Du die FOR.. ..END_FOR Sachen rein*);
    END_IF

    vielen dank, schaue ich mir mal genauer an

  5. #15
    Registriert seit
    28.08.2014
    Beiträge
    21
    Danke
    0
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Hi,
    warum verwendest Du nicht einen Ringpuffer anstatt jedesmal das komplette Array zu kopieren?
    Das mag bei 10 Werten keine große Sache sein, aber wenn das Array mal größer sein sollte...

    Code:
    Index := (Index MOD 10) + 1;
    vMerker[Index] := v;

  6. #16
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von singleton Beitrag anzeigen
    Hi,
    warum verwendest Du nicht einen Ringpuffer anstatt jedesmal das komplette Array zu kopieren?
    Das mag bei 10 Werten keine große Sache sein, aber wenn das Array mal größer sein sollte...

    Code:
    Index := (Index MOD 10) + 1;
    vMerker[Index] := v;
    das habe ich nicht genau verstanden. kannst du das bisschen erläutern bitte.

  7. #17
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    es funktioniert irgendwie nicht :/

  8. #18
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von fiftyone_88 Beitrag anzeigen
    es funktioniert irgendwie nicht :/
    Ich verstehe irgendwie nicht was Du meinst

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #19
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Ich verstehe irgendwie nicht was Du meinst

    Harald
    Er verschiebt die Werte irgendwie nicht. i wird auf 11 gesetzt und die werten nehmen den vom ersten arrayplatz an.

    hier mein Quellcode. vielleicht mache ich bei der variablen deklaration falsch?

    VAR
    signal:BOOL;
    sTakt:TON;

    flanke:F_TRIG;
    f,v,sumMerker,vGMittelwert:REAL:=0;
    n:Real:=0;
    vMerker:ARRAY[1..10] OF REAL;
    i:BYTE;
    END_VAR

    signal:=PiFace.byIn.1;
    sTakt(PT:=T#1S);
    zehnminTakt(PT:=T#600S);
    sTakt.IN:=NOT sTakt.Q;

    flanke(CLK:=signal);
    IF (flanke.Q) THEN n:=n+1; END_IF;
    IF (sTakt.Q) THEN f:=n; n:=0; END_IF;

    v:=0.048*f;

    FOR i:=9 TO 1 BY 1 DO vMerker[i+1]:=vMerker[i]; END_FOR;
    FOR i:=1 TO 10 BY 1 DO sumMerker:=sumMerker+vMerker[i]; END_FOR;
    vGMittelwert:=sumMerker*0.1;
    sumMerker:=0;

  10. #20
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von fiftyone_88 Beitrag anzeigen
    Code:
    FOR i:=9 TO 1 BY 1 DO vMerker[i+1]:=vMerker[i]; END_FOR;
    Wenn die Schleife rückwärts durchlaufen werden soll, muss die Schrittweite im Minusbereich sein. Hier also -1 und nicht 1.


    Und benutz' für Deine Programmauszüge bitte die Code-Tags [Code] ... [/Code], die Du z.B. mit dem letzten Button # in der 2. Zeile erzeugen kannst. Dann wird der Code besser lesbar dargestellt.
    Geändert von hucki (14.10.2015 um 19:44 Uhr) Grund: Da hat sich doch ein überflüssiges r eingeschlichen :(

Ähnliche Themen

  1. Aus einem ARRAY ausgewählte Werte in ein anderes ARRAY kopieren
    Von lacosta19 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 06.08.2014, 15:42
  2. Array schreiben und Werte vermitteln
    Von arcomp im Forum PHOENIX CONTACT
    Antworten: 10
    Letzter Beitrag: 14.02.2014, 07:14
  3. Antworten: 8
    Letzter Beitrag: 04.12.2012, 17:29
  4. Array verschieben
    Von MrChiliCheese im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.07.2012, 16:08
  5. INT Werte speichern bzw. verschieben
    Von steppenwolf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 09.03.2008, 18:35

Stichworte

Lesezeichen

Berechtigungen

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