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

Ergebnis 1 bis 8 von 8

Thema: Vereinfachung direkte adressierung SCL DB REAL_WERT

  1. #1
    Registriert seit
    25.07.2012
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


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

    ich bräuchte eure Hilfe ich habe einen DB aus EXCEL daten erstellt in welchem Gleitkomma Zahlen sind im Bereich von 10,000 bis 50,000. Dieses Zahle muss ich weiter verarbeiten. Da leider die indirekte adressierung aller db.db... bei REAL zahlen nicht funktioniert muss ich diese leider direkt adressieren? Ich hoffe bis dahin habe ich alles richtig gemacht nun zu meinem code der aufbau sieht wie folgt aus jedoch habe ich etwa 2000 daten und dies alles per hand zu programmieren wäre echte sklaven arbeit. (i läuft seperat in 4er Schritten hoch). Im DB hat jeder Wert einen namen a1 bis a2000 und ist real. Hat jemand für mich einen TIPP wie ich dies vereinfachen könnte?

    Ich habe im Forum nichts gefunden.


    #FUNCTION_BLOCK FB1

    VAR_INPUT
    i:INT;
    END_VAR
    VAR_OUTPUT
    Out:REAL;
    END_VAR


    IF i = 4 THEN
    Out:=DB1.a1;
    END_IF;

    IF i = 8 THEN
    Out:=DB10.a2;
    END_IF;

    IF i = 12 THEN
    Out:=DB10.a3;
    END_IF;


    END_FUNCTION_BLOCK
    Zitieren Zitieren Vereinfachung direkte adressierung SCL DB REAL_WERT  

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

    Standard

    Am einfachsten wäre es sicher wenn du deinen DB mit einem Array oder ggf. Array of Struct aufbaust. Dann kannst du einfach über den Array-Index darauf zugreifen.

  3. #3
    Karlson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2012
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Könntest du mir sagen wie dieser Befehl heisen soll? Ich kriege ja die Daten über eine indirekte adressierung nicht aus dem DB

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

    Standard

    Das ist ja kein Befehl sondern nur eine andere Strukturierung.

    Datenbaustein so aufbauen:
    Code:
    DATA_BLOCK DB10
        STRUCT
            aa : ARRAY[1..2000] OF REAL;
        END_STRUCT;
    BEGIN
    END_DATA_BLOCK
    Abfrage dann z.B. so
    Code:
    VAR_INPUT
    i:INT;
    END_VAR
    VAR_OUTPUT
    Out:REAL;
    END_VAR
    
    BEGIN
    
    IF i >= 1 AND i <= 2000 THEN
        Out:= DB10.aa[i];
    END_IF;

  5. #5
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Jetzt fehlt noch der Bezug zu "i", weil hier der Faktor 4 auftaucht.
    Gibt es einen bestimmten Grund für die Schrittweite von 4?
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  6. #6
    Karlson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2012
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die schnelle Antwort. jedoch wie bekomme ich jetzt die Daten aus meiener Excel-Datei in dieses Array?

    Der runtergeladene Datei Create_S7DB_V11.xls wandelt meine Excel-Daten in einen DB und dort ist die Adresse von 0 in 4er schritten angegeben (Also ganz links im DB wenn man diesen öffnet).
    Geändert von Karlson (19.12.2012 um 22:49 Uhr)

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

    Standard

    Ich kenne dieses Excel Tool nicht. Aber wenn du die Daten in Excel hast kannst du dir daraus ganz einfach ein DB mit entsprechenden Startwerten erstellen
    Code:
    DATA_BLOCK DB10
        STRUCT
            aa : ARRAY[1..2000] OF REAL;
        END_STRUCT;
    BEGIN
    aa[1] := 123.0;
    aa[2] := 456.0;
    aa[3] := 789.0;
    // usw. usf.
    END_DATA_BLOCK
    Hier interessieren dich keine Adressen mehr, sondern nur die reine Strukturierung der Daten.

  8. #8
    Karlson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2012
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Läuft Vielen Dank ich wünsche euch schöne Weihnachtstage und einen guten Rutsch

Ähnliche Themen

  1. Absolute Adressierung in SCL
    Von ASi-Master im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 01.10.2015, 09:21
  2. Indirekte Adressierung in SCL
    Von Atlas im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.04.2014, 15:27
  3. Dynamische DB adressierung in SCL
    Von thomasgull im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 08.09.2010, 22:14
  4. indirekte Adressierung in SCL
    Von BiBi im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2007, 23:42
  5. direkte Adressierung in einer Multiinstanz
    Von psum im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.08.2006, 13:16

Lesezeichen

Berechtigungen

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