-> Hier kostenlos registrieren
Schönen guten Abend,
ich hät da ein problem, das wie folgt aussieht:
Ich habe eine hand voll Arrays, in denen konfigurationen hinterlegt sind. Diese konfigurationen können sich in den einzelnen Systemen später unterscheiden, daher wird die länge über eine konstante festgelegt, so dass die länge später ohne viel Aufwand angepasst werden kann.
Nun war mein Plan diese Struktur von längen-konfiguration + eigentliche konfiguration auch nochmal in der Anzahl anpassbar zu machen.
Hierfür hatte ich die Konfigurationsarray 2dimensional gemacht und Längenangabe in ein Array umgewandelt. Dessen länge sollte nun über eine neu eingeführte Längenvariable festgelegt werden.
Nun... das funktioniert so nicht.
Codesys meint, die länge von den Arrays, in denen die länge der Konfigurationsarrays festgelegt werden, wäre unbekannt. Kommt wohl daher, dass die erste längenkonstante zu dem zeitpunkt, wenn die längenarrays erzeugt werden, noch nicht evaluiert wurde oder so ähnlich....
Was kann man dagegen tun, bzw. wie kann man das problem anders lösen?
Andreas
ich hät da ein problem, das wie folgt aussieht:
Ich habe eine hand voll Arrays, in denen konfigurationen hinterlegt sind. Diese konfigurationen können sich in den einzelnen Systemen später unterscheiden, daher wird die länge über eine konstante festgelegt, so dass die länge später ohne viel Aufwand angepasst werden kann.
Nun war mein Plan diese Struktur von längen-konfiguration + eigentliche konfiguration auch nochmal in der Anzahl anpassbar zu machen.
Hierfür hatte ich die Konfigurationsarray 2dimensional gemacht und Längenangabe in ein Array umgewandelt. Dessen länge sollte nun über eine neu eingeführte Längenvariable festgelegt werden.
Nun... das funktioniert so nicht.
Codesys meint, die länge von den Arrays, in denen die länge der Konfigurationsarrays festgelegt werden, wäre unbekannt. Kommt wohl daher, dass die erste längenkonstante zu dem zeitpunkt, wenn die längenarrays erzeugt werden, noch nicht evaluiert wurde oder so ähnlich....
Was kann man dagegen tun, bzw. wie kann man das problem anders lösen?
Code:
VAR_GLOBAL CONSTANT
cfg_DISP_MAX_loops: INT := 1;
cfg_DISP_MAX_SP_1 : ARRAY [1..cfg_DISP_MAX_loops] OF INT := 4;
cfg_DISP_MAX_SP_2 : ARRAY [1..cfg_DISP_MAX_loops] OF INT := 10;
END_VAR
VAR_GLOBAL PERSISTENT RETAIN
cfg_DI2SP_SP_Maske_B_1 : ARRAY [1..cfg_DISP_MAX_loops] OF t_DISP_16bits;
cfg_DI2SP_SP_CFG_B_1 : ARRAY [1..cfg_DISP_MAX_loops,1..cfg_DI2SP_MAX_SP_1] OF t_DISP_16bits;
cfg_DI2SP_SP_1 : ARRAY [1..cfg_DISP_MAX_loops,1..cfg_DI2SP_MAX_SP_1] OF REAL;
cfg_DI2SP_SP_Maske_B_2 : ARRAY [1..cfg_DISP_MAX_loops] OF t_DISP_16bits;
cfg_DI2SP_SP_CFG_B_2 : ARRAY [1..cfg_DISP_MAX_loops,1..cfg_DI2SP_MAX_SP_2] OF t_DISP_16bits;
cfg_DI2SP_SP_2 : ARRAY [1..cfg_DISP_MAX_loops, 1..cfg_DI2SP_MAX_SP_2] OF REAL;
END_VAR
Andreas