Array-Name dynamsich

hulla66

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin, Moin.

Ich bin derzeit auf der Suche der Lösung folgenden Problems:

Ich habe in SCL eine INPUT-Variable, die mir eine sog. Steinnr liefert. Außerdem habe ich Arrays mit dem Namen STEIN_1, STEIN_2,...

Nun möchte ich in einer Schleife das Array ansprechen, das mir in der Übergabevariable gleifert wurde, ich brauche also eine Verknüpfung von "Array_" & STEIN

Gibt es da was, oder muss ich mir den ganzen Namen übergeben lassen?

Code:
VAR_INPUT
    // statische Variablen
    Messwert_IN    : WORD;
    STEIN : INT;
END_VAR

VAR
    STEIN_1: ARRAY[1..50] OF INT;
    STEIN_2: ARRAY[1..50] OF INT;
    STEIN_3: ARRAY[1..50] OF INT;
    STEIN_4: ARRAY[1..50] OF INT;
    STEIN_5: ARRAY[1..50] OF INT;
END_VAR
 
Das geht wohl so nicht. Wie wäre es mit IF-Abfragen oder Case? Anhand der Steinnummer dann das richtige Array bearbeiten. Wenn du es öfter benötigst, dann umkopieren in ein internes Arbeitsarray und mit diesem rechnen.

PS: Was meinst du mit "ganzen Namen übergeben"?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke. Habs jetzt anders gelöst. Aber da ist mir noch eine andere Frage gekommen: Gibt es eine Art sleep Befehl oder ähnliches in SCL? Ich will letztlich mit meinem FB alle 100 ms einen Messwert aufnehmen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke. Habs jetzt anders gelöst. Aber da ist mir noch eine andere Frage gekommen: Gibt es eine Art sleep Befehl oder ähnliches in SCL? Ich will letztlich mit meinem FB alle 100 ms einen Messwert aufnehmen.

Gruß

Nein, das geht in der SPS so nicht, das Programm läuft ja immer. Entweder du bildest dir einen 100ms-Flanken-Impuls und nimmst jedesmal, wenn der Impuls True ist einen Meßwert auf oder du packst deinen FC in einen Zeit-OB, den du so parametrierst, daß er alle 100ms aufgerufen wird. Du kannst natürlich auch den kompletten FC umspringen, wenn der Zeitimpuls False ist, aber einen Input am FC fände ich schöner.

PS: In der Hardwarekonfig der SPS kann man ein Byte angeben, das dann je Bit unterschiedliche Impulse ausgibt! Allerdings mußt du aus dem Signal noch eine Flanke machen.
 
Am elegantesten kannst du dieses Problem mit einem 2-dimensionalen Array lösen.

etwa so ähnlich (weiß jetzt nicht ob es ein Semikolon sein muß bei der ARRAY-Deklaration

Code:
VAR_INPUT
    // statische Variablen
    Messwert_IN    : WORD;
    STEIN_NR : INT;
END_VAR
 
VAR
    STEIN: ARRAY[1..5, 1..50] OF INT;
END_VAR
 
BEGIN
 
STEIN[STEIN_NR, 33] := Messwert_IN ;
...

Moin, Moin.

Ich bin derzeit auf der Suche der Lösung folgenden Problems:

Ich habe in SCL eine INPUT-Variable, die mir eine sog. Steinnr liefert. Außerdem habe ich Arrays mit dem Namen STEIN_1, STEIN_2,...

Nun möchte ich in einer Schleife das Array ansprechen, das mir in der Übergabevariable gleifert wurde, ich brauche also eine Verknüpfung von "Array_" & STEIN

Gibt es da was, oder muss ich mir den ganzen Namen übergeben lassen?

Code:
VAR_INPUT
    // statische Variablen
    Messwert_IN    : WORD;
    STEIN : INT;
END_VAR
 
VAR
    STEIN_1: ARRAY[1..50] OF INT;
    STEIN_2: ARRAY[1..50] OF INT;
    STEIN_3: ARRAY[1..50] OF INT;
    STEIN_4: ARRAY[1..50] OF INT;
    STEIN_5: ARRAY[1..50] OF INT;
END_VAR
 
Guten Morgen Sarek.

Genau das habe ich nach dem Post auch getan und was soll ich sagen? So ein 2D Array ist gar nicht sooo schlecht. Danke für eure Hilfen!
 
Zurück
Oben