wonderfulworld
Level-1
- Beiträge
- 114
- Reaktionspunkte
- 10
-> Hier kostenlos registrieren
Hallo,
ich habe mehrere global deklarierte Arrays, die von mehreren Instanzen des selben FBs bearbeitet werden sollen. Wenn ich diese global deklarierten Arrays alle gleichgroß mache, dann bekomme ich ein Speicherplatzproblem, deshalb habe ich folgende Lösungsansätze probiert:
1. Lösungsansatz funktioniert leider nicht
Einem FB ein Array als IN_OUT Variable deklariere, und die Größe des Arrays mit einer Konstanten definiere.
Diese Konstante dann aber als INPUT_VARIABLE übergeben
Wenn ich das so mache, und den FB mit den nötigen Eingangsvaribalen versorge kommt immer die Fehlermeldung
2.Lösung die tutm gefällt mir aber nicht
Abhilfe würde das Arbeiten mit Pointern schaffen, etwa so.
Die zweite Lösung gefällt mir aus folgenden Gründen nicht:
1. Pointer sind an sich kein Problem, aber die obere Lösung wäre aus meiner Sicht schöner und auch sicherer.
2. Ich müsste bei der zweiten Lösung relativ viel im FB ändern.
3. Die erste Lösung hatte außerdem den Charme, dass man Konstanten an FBs übergeben kann. Das heißt ich sehe am FB-Eingang, dass er von Konstanten abhängig ist und von welchen.
Weiß jemand noch ne dritte Lösung oder wich ich das mit Lösung eins doch noch hinbekommen kann?
Vielen Dank schon mal im vorraus
wonderfulworld
P.S.
Das von mir eingesetzte System ist eine ELAU-Steuerung (EPAS-4 basiert auf Codesys 2.3). Wäre aber auch an einer Lösung die nur in Codesys V3 funktioniert interessiert.
ich habe mehrere global deklarierte Arrays, die von mehreren Instanzen des selben FBs bearbeitet werden sollen. Wenn ich diese global deklarierten Arrays alle gleichgroß mache, dann bekomme ich ein Speicherplatzproblem, deshalb habe ich folgende Lösungsansätze probiert:
1. Lösungsansatz funktioniert leider nicht
Einem FB ein Array als IN_OUT Variable deklariere, und die Größe des Arrays mit einer Konstanten definiere.
Diese Konstante dann aber als INPUT_VARIABLE übergeben
Code:
VAR_INPUT CONSTANT
MYCONSTANT : INT;
END_VAR
VAR_IN_OUT
myArray : ARRAY[0..MYCONSTANT] OF BYTE;
END_VAR
Unzulässiger Typ für Eingang myArray von Baustein TEST: KANN ARRAY[0..76] of BYTE nicht in ARRAY[0..MYCONSTANT] of BYTE(VAR_IN_OUT) konvertieren.
2.Lösung die tutm gefällt mir aber nicht
Abhilfe würde das Arbeiten mit Pointern schaffen, etwa so.
Code:
VAR_IN_OUT
startAdresseArray : WORD;
sizeOfArray : WORD;
END_VAR
Die zweite Lösung gefällt mir aus folgenden Gründen nicht:
1. Pointer sind an sich kein Problem, aber die obere Lösung wäre aus meiner Sicht schöner und auch sicherer.
2. Ich müsste bei der zweiten Lösung relativ viel im FB ändern.
3. Die erste Lösung hatte außerdem den Charme, dass man Konstanten an FBs übergeben kann. Das heißt ich sehe am FB-Eingang, dass er von Konstanten abhängig ist und von welchen.
Weiß jemand noch ne dritte Lösung oder wich ich das mit Lösung eins doch noch hinbekommen kann?
Vielen Dank schon mal im vorraus
wonderfulworld
P.S.
Das von mir eingesetzte System ist eine ELAU-Steuerung (EPAS-4 basiert auf Codesys 2.3). Wäre aber auch an einer Lösung die nur in Codesys V3 funktioniert interessiert.
Zuletzt bearbeitet: