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

Ergebnis 1 bis 4 von 4

Thema: Hilfe ????? Beckhoff Twincat

  1. #1
    Registriert seit
    10.08.2015
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo meine Lieben,

    kann jemanden von euch mir bitte helfen, ich will, dass die farben in Array speichern . und zwar die Aktuellste Farbe in der erste Position speichern und die alten einfach ein Position verschieben .



    code.jpg so sieht mein Code aus, die For-Schleife funktioniert leider nicht richtig.



    (******************************************************************************* *)

    (*
    ENUM Farben
    TYP
    (
    ROT,
    BLAU,
    GELB
    );
    END_TYP
    *)
    ----------------------------------------------
    VAR
    eFarben : Farben;
    aFeld : array [0..9] of Farben := LEER,LEER,LEER,....;LEER;

    i : usint;
    xLEER : bool;
    END_VAR
    ----------------------------------------------

    (* prüfen, ob Position 0 belegt ist *)
    if aFeld[0] = LEER then
    xLEER := TRUE; (* nicht belegt *)
    else
    xLEER := FALSE; (* belegt *)
    end_if

    if xLEER then (* wenn nicht belegt *)
    aFeld[0] := eFarben; (* erste Position belegen *)
    else (* wenn belegt *)
    for i:=0 by 1 to 9 do (* Verschiebung durchfüheren *)
    aFeld[i+1] := aFeld[i];

    end_for

    aFeld[0] := eFarben; (* erste Position mit aktuellem Wert überschreiben *)

    end_if






    vielen Dank
    Zitieren Zitieren Hilfe ????? Beckhoff Twincat  

  2. #2
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    Hi,
    so auf die schnelle:
    Du sprichst auf jeden Falls ein Indizes an, welches ausserhalb der Definition liegt:
    Arr[0..9] und läufst mit 0 to 9 : aFeld[9+1] auf einen fehler !!!

    Ich würde von 0 bis 8 laufen und dann Feld[i+1] := Feld[i]

    Dann den Rest...

    LG
    Shrimps

  3. #3
    Registriert seit
    06.04.2013
    Beiträge
    208
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Ich würde das Array per "MEMMOVE" verschieben
    Code:
    MEMMOVE(    destAddr := ADR(aFeld[1]),
            srcAddr := ADR(aFeld),
            n := (SIZEOF(aFeld) - SIZEOF(aFeld[0]))
            );
    Geändert von Hans54216 (16.09.2015 um 14:57 Uhr)

  4. #4
    Registriert seit
    05.05.2012
    Beiträge
    96
    Danke
    44
    Erhielt 14 Danke für 14 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo dachico,

    manchmal ist die Richtung und zeitliche Reihenfolge entscheidend!

    Code:
    FOR i:=0 TO 8 BY 1 DO        (* Verschiebung durchfüheren *)
        aFeld[9-i] := aFeld[8-i];
    END_FOR;
    Liebe Grüße
    Lilli

Ähnliche Themen

  1. Beckhoff Twincat
    Von AdrianS im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 09.01.2012, 19:33
  2. Beckhoff Twincat "Hilfe" installieren
    Von patti_9000 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 25.08.2011, 15:57
  3. Beckhoff Twincat Beginning
    Von klaus1 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 02.06.2010, 22:52
  4. Antworten: 15
    Letzter Beitrag: 08.04.2009, 17:19
  5. Begriffsdefinition Beckhoff TwinCat
    Von MSB im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 27.03.2008, 20:21

Lesezeichen

Berechtigungen

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