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

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

Thema: Array schreiben und Werte vermitteln

  1. #1
    Registriert seit
    11.02.2014
    Ort
    Kapstadt
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Schoenen Guten Tag zusammen,

    Ich muss ein Array schreiben und damit Werte vermitteln. Danach gehts " First in - Last out"

    Erst das Array definieren

    Type

    Channel1_ARRAY: ARRAY[1..20] OF REAL;

    END_TYPE

    ( Beim kompilieren gibts eh schon mal Fehlermeldung)

    1.) Dann muessen die real Werte aus dem Analog Modul ( Variable Channel1 als REAL) dem Array zugeordnet werden. Wie mach ich das ??

    2.) Dann muessen alle Werte addiert werden and anschliessend durch 20 geteilt werden. Resultat ist mein gemittelter Wert x

    3.) Dann den aeltesten Wert 'rausnehemen und den aktuellsten Wert wieder hinzuaddieren und ab gehts wieder zu Nr. 2.)


    Vielleicht koennte jemand helfen.

    Gruss aus SA
    Zitieren Zitieren Array schreiben und Werte vermitteln  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Zitat Zitat von arcomp Beitrag anzeigen
    Ich muss ein Array schreiben und damit Werte vermitteln. Danach gehts " First in - Last out"
    [...]
    3.) Dann den aeltesten Wert 'rausnehemen und den aktuellsten Wert wieder hinzuaddieren
    Das widerspricht sich.
    Es muß FIFO - "First In - First Out" sein.
    Man löst sowas z.B. mit einem Ringpuffer.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo,

    vielleicht stellst du auch einfach mal "etwas mehr" Code als eine blosse Typ-Deklaration, die ja noch gar nichts bewirkt, hier ein.

    Gruß
    Larry

  4. #4
    arcomp ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2014
    Ort
    Kapstadt
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    (* erste Version------------------------------------------------------------------------------------------

    IF n = 20 THEN
    Channel1_ARRAY[n] := Channel2_read;
    n := 1;
    ELSE
    FOR n := 1 TO 19 BY 1 DO
    m := n + 1;
    Channel1_ARRAY[n] := Channel1_ARRAY[m];
    END_FOR;
    END_IF;



    IF i > 0 and i < 21 THEN
    Additionswert := Additionswert + Channel1_ARRAY[i];
    i := i + 1;
    ELSIF i = 21 THEN
    Mittelwert := Additionswert / 20.0;
    i := 1;
    END_IF;
    ------------------------------------------------------------------------------------------------------*)









    (*zweite Version------------------------------------------------------------------------------------------

    Additionswert := 0.0;
    FOR n := 1.0 TO 20.0 BY 1.0 DO
    m := n + 1.0;
    IF n < 20.0 THEN
    Channel1_Array[n] := Channel1_Array[m];
    Additionswert := Additionswert + Channel1_Array[n];
    Mittelwert := Additionswert / n;
    ELSE
    Channel1_Array[n] := Channel2_read;
    Mittelwert := (Mittelwert + Channel1_Array[n]) / n;
    END_IF;
    END_FOR;
    ------------------------------------------------------------------------------------------------------*)






    (*Dritte Version------------------------------------------------------------------------------------------
    Additionswert := 0.0;
    FOR n := 1.0 TO 20.0 BY 1.0 DO
    m := n + 1.0;
    IF n < 20.0 THEN
    Channel1_Array[n] := Channel1_Array[m];
    ELSE
    Channel1_Array[n] := Channel2_read;
    END_IF;
    Additionswert := Additionswert + Channel1_Array[n];
    END_FOR;
    Mittelwert := Additionswert / n;

    ------------------------------------------------------------------------------------------------------*)


    Geht leider alles nicht

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo,
    ich bleibe mal bei deiner 1. Version :
    Code:
    n := n +1 ;
    if n > 20 then n:=1 ; end_if ;
    Channel1_ARRAY[n] := Channel2_read;
    
    Additionswert := 0 ;
    for i:= 1 to 20 by 1 do
        Additionswert := Additionswert + Channel1_ARRAY[i];
    end_for ;
    Mittelwert := Additionswert / 20.0;
    Anmerkungen dazu :
    Der Code sollte natürlich in einem FB stehen (ein FC würde von Zyklus zu Zyklus wieder alles vergessen).
    Die Variablen Channel1_ARRAY und n sollte als STAT deklariert sein.
    Die Variablen Channel1_ARRAY, Additionswert, Mittelwert, Channel2_read sollten vom gleichen Typ (hier REAL) sein.

    Mehr ist mir im Augenblick nicht aufgefallen ...

    Gruß
    Larry

  6. #6
    arcomp ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2014
    Ort
    Kapstadt
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Alles gemacht aber beim debuggen kommt Fehelermeldung " POU ' Array_testen " not used in any resource! Debug for Worksheet 'Array_testen' not possible!.

    Was heisst eine variable als "STAT" deklarieren ??

    Danke

  7. #7
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Guten Morgen

    Wie wärs wenn du mal etwas kommentar dazu schreibst was du eigentlich mit welcher zeile machst.
    Dann eine Schleife mit Real würde ich nie machen.

    und das wichtigste wann kommt welcher fehler bzw kannst du es gar nicht ausführen

    und ist das ganze eine Hausübung

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Ja ... poste mal deinen ganzen Code - inklusive der Deklaration.

    Wenn du nicht weißt was STAT heißt - wie hast du dann überhaupt deine Variablen deklariert ?

    Gruß
    Larry

  9. #9
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Wenn du nicht weißt was STAT heißt - wie hast du dann überhaupt deine Variablen deklariert ?
    also das hätte ich so nicht gesagt nur gedacht

  10. #10
    Registriert seit
    29.07.2008
    Beiträge
    143
    Danke
    4
    Erhielt 27 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    bei PCWORX erstellst du einen FB, im Variablenarbeitsblatt sind die variablen dann auomatisch "STAT"

    POU not used, bedeutet das diese nicht durchlaufen wird, ist ja auch nur ein FB, hierzu muss der FB in einem Programm instanziert werden, und die Programminstanz dann einer Task zugeodnet werden

    wenn du ein leeres Projekt startest, hast du ein Programm namens Main, welches der Task Default zugeordnet ist, in dieser Main einfach mal deinen Funktionsbaustein aufrufen

    bei der PCWORX Installation findest du auch eine PDF Datei "Quickstart", vielleicht einfach mal durchlesen ?

Ähnliche Themen

  1. WinCC Flex Werte in ein Array schreiben
    Von Neuling74 im Forum HMI
    Antworten: 15
    Letzter Beitrag: 30.12.2015, 00:14
  2. Antworten: 6
    Letzter Beitrag: 21.03.2014, 15:12
  3. Antworten: 13
    Letzter Beitrag: 12.07.2012, 21:26
  4. DB initialisieren und neue werte schreiben
    Von sb9674 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 01.12.2009, 12:15
  5. PS3 auslesen und Werte in MySql-DB schreiben
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 22.01.2006, 15:08

Lesezeichen

Berechtigungen

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