Arrays in PC Worx

Daywalker

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,
ist es in PC Worx möglich, Arrays von der Länge her variabel zu halten und innerhalb einer FU oder eines FB's die Länge dieses Array auszulesen?

Hintergrund der ganzen Sache ist: Ich bekomme in mehreren Array's diverse Messdaten in die Phoenix SPS geschickt. Nun möchte ich mir eine FU oder einen FB schreiben der die Saklierung der Messdaten übernimmt. Problem dabei ist, dass die Array's im schlimmsten Fall immer eine unterschiedliche Länge haben. Für die Skalierung möchte ich in ST Schleifendurchläufe programmieren, das Array Feld für Feld durchparsen und die Werte auslesen. Hierfür (Laufvariable der Schleife) benötige ich dann aber genau die Länge des anliegenden Arrays.

Versteht man diese Problemstellung? :confused:

Vielen Dank im Vorraus.
 
Hallo,

variable Arraylänge ist in dem Sinne nicht möglich, du kannst eine konstante Variable deklarieren mit der du die Grenzen des Arrays festlegst.

Du müsstest versuchen eine Abbruchbedingung für deinen Schleifendurchlauf mit ein programmieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm...wie soll das mit der konstanten Variable für die Länge funktionieren. In PC Worx muss ich ein Array doch unter Datentypen neu deklarieren. Hier kann ich die Länge des Arrays nur im Stil [1..20] angeben. Ersetze ich die 20 in der Klammer durch eine Variable, meckert der Compiler.
 
Hm...wie soll das mit der konstanten Variable für die Länge funktionieren. In PC Worx muss ich ein Array doch unter Datentypen neu deklarieren. Hier kann ich die Länge des Arrays nur im Stil [1..20] angeben. Ersetze ich die 20 in der Klammer durch eine Variable, meckert der Compiler.

Och menno - ist denn das so schwer zu verstehen. In der SPS-Welt
gibt es im Prinzip keine dynamischen Arrays. D.h. du mußt deine
Arraygröße auf die maximal zu erwartende Arraygröße stellen.

Die Abbruchbedingung ist dann z.B. das erste Wertepaar, das komplett NULL ist.

Frank
 
ich habs mal als globale Variable gemacht, geht aber auch als lokale Variable:
Code:
VAR_GLOBAL CONSTANT
    Anz_Messdaten : INT:=20;
END_VAR
 
Zurück
Oben