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

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

Thema: For- Schleife mit Arrays

  1. #1
    Registriert seit
    21.09.2004
    Beiträge
    95
    Danke
    50
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Codesys - Gemeinde,

    ich bin gerade dabei in Codesys einzusteigen ...davor habe ich schon fast 20 Jahre S7 auf dem Buckel
    und stell mich gerade wahrscheinlich etwas doof an.

    Ich Versuche gerade einen Array mit dem Wert der laufvariable auszufüllen, der Wert von i wird aber immer in das erste Element des Arrays eingetragen,
    mit SCL vom BigS funktioniert der Code einwandfrei.

    Ich arbeite gerade mit Codesys V2.3 in Verbindung mit Bosch Indralogic und versuche den Baustein zu simulieren mit dem Simulator

    Könntet Ihr mir ein bisschen auf die Sprünge helfen hab echt ein Brett vorm Kopf.

    Vielen Dank

    FUNCTION_BLOCK Indirekt

    VAR_INPUT
    Start:BOOL;
    END_VAR

    VAR
    FM :BOOL;
    FP :BOOL;
    Daten :ARRAY [0..100] OF INT;
    END_VAR

    VAR_TEMP
    i :INT;
    END_VAR

    (*Flanke Start*)
    FM:=Start AND NOT FP;
    FP:=Start;

    (*Array ausfüllen*)
    IF FM THEN
    FOR i:= 0 TO 100 BY 1 DO
    Daten[i]:=i;
    END_FOR;
    END_IF;
    Zitieren Zitieren For- Schleife mit Arrays  

  2. #2
    Registriert seit
    07.06.2007
    Beiträge
    143
    Danke
    2
    Erhielt 24 Danke für 24 Beiträge

    Standard

    Hallo,

    der Code muss so funktionieren wenn du ein Array willst, dass den Inhalte 0,1,2,3... hat. Wenn ich dich richtig verstanden habe hast du nur im ersten Element einen Wert?

    Die Variable FM kannst du dir sparen. Ändert zwar nicht an der Funktion aber ist etwas kompakter:

    IF Start AND NOT FP THEN
    FOR i := 0,...

    END_FOR;
    END_IF;
    FP := Start;

  3. #3
    Registriert seit
    21.09.2004
    Beiträge
    95
    Danke
    50
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ...genau ich will eigentlich nur den Array mit 0,1,2,3 usw. ausfüllen, bei mir trägt es aber nur den letzten Wert nach dem Schleifendurchlauf in Daten[0] ein.

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

    Standard

    Hi
    Bin mir nicht sicher aber ist i in var-temp gut aufgehoben ?
    Muss die nicht auch nach var ?
    Sorry, ich setze Temp selten ein ...
    LG
    Shrimps

  5. #5
    Registriert seit
    21.09.2004
    Beiträge
    95
    Danke
    50
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ...das hab ich auch schon veruscht, leider ohne Verbesserung.
    Kann das vielleicht an der Simulation liegen ??

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    @Shrimps:
    Nein ... mit der Laufvariablen (i) ist das schon korrekt so. Die würde ich auch immer im TEMP anlegen.

    @TE:
    Änder doch mal deine Flanke wie von excelite vorgeschlagen.
    Aber wie auch schon geschrieben : der Code sollte so funktionieren (wie gewünscht).
    Was passiert denn außerhalb des Baustein noch so ?

  7. #7
    Registriert seit
    21.09.2004
    Beiträge
    95
    Danke
    50
    Erhielt 3 Danke für 3 Beiträge

    Standard

    30-10-2015 14-17-06.jpg.... hab die Flanke mal geändert ...alllerdings ohne Erfolg
    Ausserhalb des Bausteins passiert eigentlich nichts...hab ihn nur im PLC_PRG aufgerufen als Instanz (siehe Screenshot)

  8. #8
    Registriert seit
    07.06.2007
    Beiträge
    143
    Danke
    2
    Erhielt 24 Danke für 24 Beiträge

    Standard

    sehr merkwürdig,... in so einem Fall würde ich:

    a) Alles bereinigen, neu übersetzen,...
    b) mit einem Breakpoint Zeile für Zeile durchlaufen und das Programm bewerten

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Beobachte mal Array-Werte im Programm nach der FOR-Schleife:
    Code:
    ...
        END_FOR;
    END_IF;
    FP:=Start;
    
    i:=Daten[0] + Daten[1] + Daten[99] + Daten[100];
    Du könntest auch mal das IF.. deaktivieren und die FOR-Schleife immer ausführen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    Registriert seit
    21.09.2004
    Beiträge
    95
    Danke
    50
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    30-10-2015 16-36-41.jpg

    ...hab die Anweisung von PN/DP mal hinten angehängt sieht dann wie im Screenshot aus.
    Das ganze ist irgendwie mysteriös.
    Kann jemand von euch mal versuchen wie das ganze sich in der Simulation verhält??

Ähnliche Themen

  1. TIA CTU_DINT mit Arrays versorgen
    Von SanjaDO im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.06.2014, 22:16
  2. Step 7 Unterschied zwischen IF- Schleife und While-Schleife
    Von Vokal12 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 29.10.2013, 22:52
  3. keine Offsetanzeige bei Arrays mit UDTs
    Von Bertl im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 29.08.2012, 14:45
  4. SCL -Arrays mit einander vergleichen
    Von MatthiasH24 im Forum Simatic
    Antworten: 89
    Letzter Beitrag: 09.09.2008, 19:54
  5. arrays mit udt...
    Von Jochen Kühner im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 01.12.2005, 14:27

Stichworte

Lesezeichen

Berechtigungen

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