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

Ergebnis 1 bis 8 von 8

Thema: Variablennamen zusammensetzen

  1. #1
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich möchte gerne die Daten meiner Wetterstation speichern und danach Trends generieren. Hierzu möchte ich die
    Werte für Temperatur, Feuchte, Wind und Globalstrahlung 1x/Minute Speichern. Dafür habe ich mir Arrays erstellt

    Bsp. für die aktuelle Globalstrahlung

    Tag 1 des Monats schreibt in arrWertepuffer_T1: ARRAY [0..1500] OF DWORD;
    Tag 2 des Monats schreibt in arrWertepuffer_T2: ARRAY [0..1500] OF DWORD; usw.

    Die Positionsangabe in der der aktulle Wert geschrieben werden soll weiise ich mit einem Variable zu (iZS_ArrPosition)
    wobei diese Variable der aktuellen Minute des Tages entspricht, also um 0:01Uhr auf Pos. 1, um 0:02 auf Pos. 2 usw..
    (also arrWertePuffer_T1[iPos] = dwZR_Solar). Wie kann ich im Array-Namen, zb in arrWertePuffer_T1, die 1 durch eine
    weitere Variable ersetzen die dann den Tag des Datums enthällt?

    DANKE für eure Info, Gruss Norbert
    Zitieren Zitieren Variablennamen zusammensetzen  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.719
    Danke
    729
    Erhielt 1.159 Danke für 970 Beiträge

    Standard

    Du könntest ein zweidimensionales Array nehmen:
    arrWertepuffer_T: ARRAY [0..31, 0..1500] OF DWORD

  3. #3
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hoi Markus,
    an so etwas hatte ich auch schon gedacht, also in dem Falle 3dimensional mit arrWertepuffer: [0..12, 0..31, 0..1500] of DWord also für Monat, Tag und Minute, aber mir ging es hierbei eigentlich mal um die prinzipielle Frage ob ich mir einen Variablennamen dynamisch "zusammenbasteln" kann.

    Gruss Norbert

  4. #4
    Registriert seit
    24.02.2009
    Beiträge
    1.243
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Du willst während das Programm läuft neue Variablen erzeugen deren Namen erst bei der Erzeugung generiert werden? Wüsste jetzt auf Anhieb keine Programmiersprache bei der das gehen würde.....
    Die Vorstufe zu deinem Vorhaben, die dynamische Speicherverwaltung, ist in der SPS Welt schon der erste Stolperstein......

    Außerdem existieren nach dem compilieren von deinem Variablennamen eh nur noch die Adressinformtionen. Mehr braucht ein Programm nicht. Die namentliche Deklaration ist nur dafür da, damit man beim Programmieren nicht wahnsinnig wird.

  5. #5
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    nein, ich will diese Variablen nicht neu erzeugen. Ich habe zB die arrays arrWertespeicher_1 , arrWertespeicher_2 und arrWertespeicher_3 als globale Variablen deklariert und möchte, je nach Stand einer Zählervariable in das Array 1, 2 oder 3 schreiben, also ähnlich wie das 3dimsionale Array, nur mit ca. 15 Arrays.

    Gruss Norbert

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Da bleibt dir nur die Option mit einer Case-Anweisung je nach Wert der Variable auf das jeweilige Array zu schreiben.

    Evtl. reicht es auch über die Case-Anweisung einen Pointer auf das jeweilige Array zu setzen, und dann im Folgenden mit diesem auf das Array zuzugreifen. Aber bei Codesys ist ein POINTER TO ARRAY [x..y] sehr unschön zu verwenden/dereferenzieren, da der Zugriff auf die Array-Variablen nicht mehr direkt über den Array-Index funktioniert, sondern man den Pointer zu Fuß passend berechnen und setzen muss.

    Edith sagt: geht doch mit dem Array:
    Deklaration:
    Code:
    VAR
    	ARR1 : ARRAY [0..10] OF INT;
    	ARR2 : ARRAY [0..10] OF INT;
    	ARR3 : ARRAY [0..10] OF INT;
    	ARR4 : ARRAY [0..10] OF INT;
    	ARR5 : ARRAY [0..10] OF INT;
    	pARR : POINTER TO ARRAY [0..10] OF INT;
    END_VAR
    Pointer setzen:
    Code:
    CASE DST_ARR OF
    	1:	pARR := ADR(ARR1);
    	2:	pARR := ADR(ARR2);
    	3:	pARR := ADR(ARR3);
    	4:	pARR := ADR(ARR4);
    	5:	pARR := ADR(ARR5);
    END_CASE
    und dann Zugriff mit:
    Code:
    pARR^[0] := VALUE;
    Geändert von Thomas_v2.1 (03.08.2013 um 20:09 Uhr)

  7. #7
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hoi,

    ok, das schau ich mir mal an.

    DANKE

  8. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MasterOhh Beitrag anzeigen
    Du willst während das Programm läuft neue Variablen erzeugen deren Namen erst bei der Erzeugung generiert werden? Wüsste jetzt auf Anhieb keine Programmiersprache bei der das gehen würde.....
    Batch!


Ähnliche Themen

  1. Variablennamen automatisch im Projekt mit ändern
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 20.10.2012, 13:51
  2. SCL Variablennamen zusammensetzen
    Von Adenauer im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 17.04.2012, 21:51
  3. Variablennamen mit VB auslesen
    Von Adenauer im Forum HMI
    Antworten: 0
    Letzter Beitrag: 26.08.2010, 08:50
  4. B&R Variablennamen ändern
    Von kiestumpe im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 28.04.2008, 21:29
  5. Auf Variablennamen im DB zugreigen?
    Von Darkhobbit im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 07.02.2008, 17:59

Stichworte

Lesezeichen

Berechtigungen

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