Vereinfachung direkte adressierung SCL DB REAL_WERT

Karlson

Member
Beiträge
20
Punkte Reaktionen
0
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
 

Thomas_v2.1

Well-known member
Beiträge
8.821
Punkte Reaktionen
2.705
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.
 

Thomas_v2.1

Well-known member
Beiträge
8.821
Punkte Reaktionen
2.705
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;
 
OP
K

Karlson

Member
Beiträge
20
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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).
 
Zuletzt bearbeitet:

Thomas_v2.1

Well-known member
Beiträge
8.821
Punkte Reaktionen
2.705
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.
 
Oben