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

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

Thema: mal wieder Array + Hochregallager ;-)

  1. #1
    Registriert seit
    05.05.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    kann mir mal jemand sagen was ich alles falsch gemacht habe? x)
    Ich möchte ein 2D-Array als DB115 anlegen. Zum Befüllen, Anfahren etc benötige ich bestimmte Werte, welche im FB15 ermittelt werden sollen. Leider habe ich noch sehr wenig Ahnung vom Programmieren in SCL. Ich dachte mir das wie folgt:

    DATA_BLOCK DB115
    Belegung : ARRAY [1 .. 7, 1 .. 7 ,1 .. 7, 1 .. 7] OF BOOL ;

    BEGIN
    END_DATA_BLOCK
    FUNCTION_BLOCK fb15
    VAR
    END_VAR
    LABEL
    M1;
    END_LABEL
    VAR_OUTPUT
    i:INT:=1;
    j:INT:=1;
    Zeins:INT;
    Zzwei:INT;
    END_VAR;
    WHILE i<4 DO
    j:=1;
    WHILE j<8 DO

    IF Belegung[i,j]=false THEN
    Zzwei:=i+1;
    CASE j OF
    1: Zeins:=1;
    2: Zeins:=2;
    3: Zeins:=3;
    4: Zeins:=4;
    5: Zeins:=5;
    6: Zeins:=6;
    7: Zeins:=9;
    8: Zeins:=10;
    END_CASE;
    GOTO M1;
    END_IF;
    j:=j+1;
    END_WHILE;
    i:=i+1;
    END_WHILE;
    M1: ;
    END_FUNCTION_BLOCK

    Vielen Dank schon mal!
    Zitieren Zitieren mal wieder Array + Hochregallager ;-)  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ohne jetzt weiter drüber nachdenken zu wollen:

    ARRAY [1 .. 7, 1 .. 7 ,1 .. 7, 1 .. 7] isn 4D-Array ...

    [OT] in einer welt, die mit 1 beginnt möchte ich nicht existieren! [/OT]
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    sdv ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    dann heißt das wohl so:
    DATA_BLOCK DB115
    STRUCT
    Belegung:ARRAY [1..7,1..4] OF BOOL;
    END_STRUCT
    BEGIN
    END_DATA_BLOCK



    die Abfrage
    IF Belegung[i,j]=false THEN
    macht mir irgendwie noch Probleme
    -> Bezeichner existiert nicht
    -> Array-Dimensionen überschritten
    -> Ausdruck muss vom Datentyp BOOL sein
    Geändert von sdv (20.05.2010 um 09:08 Uhr)

  4. #4
    sdv ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das Übergeben des Arrays vom DB an den FB funktioniert wohl noch nicht.
    Muss ich im DB das als Var_Output definieren? So in die Richtung:

    DATA_BLOCK DB115

    STRUCT
    Belegung:ARRAY [1..7,1..4] OF BOOL;
    END_STRUCT

    VAR_OUTPUT
    Belegung;
    END_VAR;

    END_DATA_BLOCK


    -> Syntaxfehler
    Geändert von sdv (20.05.2010 um 09:22 Uhr)

  5. #5
    sdv ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich glaube so passt es jetzt nur noch Hoffen, dass das Programm auch das macht, was ich möchte

    DATA_BLOCK DB115
    STRUCT
    Belegung:ARRAY [1..7,1..4] OF BOOL;
    END_STRUCT
    BEGIN
    END_DATA_BLOCK
    FUNCTION_BLOCK fb15
    VAR
    END_VAR
    LABEL
    M1;
    END_LABEL
    VAR_OUTPUT
    i:INT:=1;
    j:INT:=1;
    Zeins:INT;
    Zzwei:INT;
    END_VAR;
    WHILE i<4 DO
    j:=1;
    WHILE j<8 DO

    IF DB115.Belegung[i,j]=false THEN
    Zzwei:=i+1;
    CASE j OF
    1: Zeins:=1;
    2: Zeins:=2;
    3: Zeins:=3;
    4: Zeins:=4;
    5: Zeins:=5;
    6: Zeins:=6;
    7: Zeins:=9;
    8: Zeins:=10;
    END_CASE;
    GOTO M1;
    END_IF;
    j:=j+1;
    END_WHILE;
    i:=i+1;
    END_WHILE;
    M1: ;
    END_FUNCTION_BLOCK

  6. #6
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    i und j mal vertauschen sollte helfen.
    Achte auf die Indices beim Array-Zugriff.
    Geändert von argv_user (20.05.2010 um 09:38 Uhr)

  7. #7
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    du hast ein gewaltiges grundlagenproblem!

    Code:
    *
    DATA_BLOCK DB200
        STRUCT
            Belegung : ARRAY[0..6,0..3] OF BOOL;
        END_STRUCT
    BEGIN
    
    END_DATA_BLOCK
    
    
    FUNCTION FC300 : VOID
    
    VAR_TEMP
        i : INT;
        j : INT;
    
    END_VAR
    
        IF NOT(DB200.Belegung[i,j]) THEN
            ;
        END_IF;
        
    END_FUNCTION
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    sdv (20.05.2010)

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    ich denke auch, dass das als Schleife (und mit Einrückungen) schon viel übersichtlicher aussieht und auch praktikabler ist ...

    Gruß
    LL

  10. #9
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ich denke auch, dass das als Schleife (und mit Einrückungen) schon viel übersichtlicher aussieht und auch praktikabler ist ...

    Gruß
    LL
    wo du wieder hindenkst
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  11. #10
    sdv ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vierlagig Beitrag anzeigen
    du hast ein gewaltiges grundlagenproblem!
    ich weiß habe hier war zig Bücher rumliegen, aber keines hilft mir so richtig bei der Einarbeitung. Wie habt ihr euch das Fachwissen angeeignet? Mein Prof spricht alles nur kurz an aber das reicht nicht für mein Projekt

    aber soweit hab ich das jetzt schon mal verstanden ^^

    kann ich die Werte i und j auch einem symbolischen Zähler "Zähler 1" übergeben? Bzw. wie mache ich das?

Ähnliche Themen

  1. Hochregallager mit Sucosoft S40
    Von Kiddy im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 03.11.2010, 10:06
  2. Hochregallager: First first out in SCL
    Von mays im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.10.2010, 18:38
  3. hochregallager ansatz
    Von erwin2010 im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 13.08.2010, 13:23
  4. Hochregallager Modelle...
    Von Jochen Kühner im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 10.10.2007, 21:37
  5. Fragen zum Hochregallager 2D-Array
    Von sr-83 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 18.08.2007, 09:17

Lesezeichen

Berechtigungen

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