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

Ergebnis 1 bis 5 von 5

Thema: Arraybereich durch Variable bestimmen

  1. #1
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin,

    ich habe mir ein Array erstellt :

    W: ARRAY [0 .. 19] OF Wagen;

    Ich würde aber gerne die 19 durch eine Variable ersetzen.
    Wenn ich aber z.b. 'WagenMax' deklariere und da eine 19 reinschreibe geht das nicht. also so:

    W: ARRAY [0 .. WagenMax] OF Wagen;

    Dann kommt folgender Fehlercode:

    Fehler 3750: Globale_Variablen(4): Obergrenzen 'WAGENMAX' unbekannt


    Vielleicht weiß da ja jemand eine Lösung

    Danke. Gruß
    Boggle
    Zitieren Zitieren Arraybereich durch Variable bestimmen  

  2. #2
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Du musst WagenMax als Konstante deklarieren:

    Code:
    VAR CONSTANT
        WagenMax: INT := 19;
    END_VAR
    A programmer is just a tool which converts caffeine into code.

  3. #3
    boggle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2008
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok. Das habe ich gemacht.
    Aber es geht trotzdem nicht.

    Wo muss ich den Code einfügen? Globale Variablen? Main?

    Das sind meine Globalen Variablen:
    Code:
    VAR_GLOBAL
    
    (* Struktur "Wagen" *)
    	W: ARRAY [0 .. WagenMax] OF Wagen;
    
    	WagenAnzahl: INT := 20;	(* Anzahl der Wagen *)
    END_VAR
    Und ich berechne in der Main mein WagenMax:
    Code:
    WagenMax := WagenAnzahl - 1;

  4. #4
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Du fügst in den globalen Variablen nach dem "VAR_GLOBAL"-Block noch den folgenden Block ein:

    Code:
    VAR_GLOBAL CONSTANT
        WagenMax: INT := 19;
    END_VAR
    Das Problem ist nur, dass du diese Variable nicht verändern kannst. Sie ist konstant. Das Array hat in dem Fall also immer 20 Einträge. Mir ist aber auch keine Möglichkeit bekannt wie ich ein variables Array anlegen könnte.
    A programmer is just a tool which converts caffeine into code.

  5. Folgender Benutzer sagt Danke zu Cerberus für den nützlichen Beitrag:

    boggle (18.09.2009)

  6. #5
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    Mir kam gerade noch eine Idee wie du deinen dynamischen Speicher organisieren könntest. Du könntest es mit einer verketteten Liste realisieren. Inwieweit das für dich sinnvoll ist bzw. ob sich der Aufwand lohnt, musst du selber entscheiden.

    Gruß Cerberus
    A programmer is just a tool which converts caffeine into code.
    Zitieren Zitieren Dynamischer Speicher  

Ähnliche Themen

  1. Bild aufrufen durch PLC-Variable?
    Von D4K!ZZ4 im Forum HMI
    Antworten: 1
    Letzter Beitrag: 21.10.2011, 13:27
  2. Arraybereich auslesen
    Von Limette im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 13.10.2011, 17:01
  3. Timer Zeit durch Variable ersetzen
    Von Otti20vt im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 04.09.2008, 10:14
  4. Antworten: 7
    Letzter Beitrag: 18.11.2007, 09:10
  5. Datenwort durch Variable zuweisen?
    Von Tigerkroete im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 22.06.2006, 11:35

Lesezeichen

Berechtigungen

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