[TC3] Array an selbstgeschrieben FB übergeben

naheliegend

Level-1
Beiträge
87
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, ich möchte einen Array und einen path an einen Funktionsblock übergeben, damit er damit etwas macht.

Mein FB-Initalisierungsfenster für den Input.
Code:
VAR_INPUT
  
 sSafePathStart : STRING(100);        //String mit der Länge 100, muss ggf noch höher gesetzt werden: Fängt den Inputpath in der main hier in dem FB auf
 iSizeOfValueArray : DINT;          //Größe des Arrays der Daten, die abgespeichert werden sollen. SIZEOF(...)  
 aValueArray : ARRAY [0..iSizeOfValueArray] OF LREAL;  //Hierdrin stehen die LREAL Werte, die abgespeichert werden sollen
 
END_VAR

In meiner Main rufe ich den FB : "x" so auf:

Code:
x(sSafePathStart := '', iSizeOfValueArray := SIZEOF(aEL3632), aValueArray := lr_aEL3632)

Er meckert jedoch, dass iSizeOfValueArray kein constant value ist.
Ich übergebe aber unterschiedlich lange Arrays an diesen Funktionsblock.

Kann ich sowas wie VAR_INPUT_CONSTANT einrichten, dass Inputs innerhalb des FB als CONSTANT gelten, aber außerhalb unterschiedlich sein können?

Edit: Außerdem kann er den Array den ich in der Main reinstecke nicht in den Array aus dem FB konvertieren, obwohl beide ARRAY [...] OF LREAL sind....
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Zum Thema Arrays mit Variabler Länge aus dem Beckhoff Infosys:

Arrays: LINK

du solltest dann aber auch die implizite Funktion Checkbounds verwenden um eine Verletzung der Arraygrenzen auszuschließen. => Infos dazu im Infosys.
POU_Checkbounds

Alternativ kannst du auch mit Pointern Arbeiten, indem du deinem FB die Adresse und die Größe des Arrays übergibst.

Wichtig ist halt wirklich, das du die Feldgrenzen nicht verletzt, denn das kann unvorhersehbare Folgen haben.
 
Danke für die schnelle Antwort.

Was ist das denn für eine Funktion : UPPER_BOUND(.. , ..) ?

Die finde ich zum Beispiel nicht in dem InfoSys von Beckhoff.
 
Zurück
Oben