-> Hier kostenlos registrieren
Hallo Zusammen,
ich versuche gerade den Umstieg von v2.3 auf v3.5 notgedrungener Weise, da die 750-880 für meine benötigten Datenmengen zu klein wird.
Für ein Tanksmesssystem mit 32 Tanks, bei denen die geometrie nicht durch einfache Funktionen abbildbar ist, benötige ich am liebstens ein Array [1..9] of Array [1..32] of Array [1..109,1..2] OF REAL als Konstante definiert (Ein Array [1..9,1..32,1..109,1..2] of REAL geht grundsätzlich auch, ich empfinde es aber als Übersichtlicher in der anderen Schreibweise).
Zur Erläuterung, ich habe 32 Tanks die jeweils, für eine halbwegs genaue Volumenanzeige, 109 Stützstellen benötigen, für jeden Tank gibt es nochmal 9 Unterschiedliche Tabellen, da diese Tanks auf einem Schiff sind und durch unterschiedliche Trimstufen jeweils andere Verhältnisse von Höhe zu Volumen besitzen.
Das Array kann ich auf der 880er zwar noch abbilden (gerade so) aber wenn ich das Array mit seinen Werten initialisiere platzt mir der Quellcode bzw. das übersetzte Programm aus allen Nähten.
Daher habe ich mich nun für einen PFC100 750-8100 entschieden, da hier deutlich mehr Programmspeicher zur Verfügung stehen.
Beim Umstieg auf Codesys v3.5 habe ich nun aber ein paar Probleme bekommen.
Zum einen bekomme ich mehrere Fehlermeldungen wenn ich unter Var Global Constant folgenden Code habe.
Fehler 1 ist "Zu viele Initialisierer für Datenfeld" obwohl die Anzahl der Werte in jedem Fall kleiner ist als die Gesamtgröße des Arrays, hier scheint V3.5 im Vergleich zur 2.3 die Anzahl der Initialisierungswerte mit der Anzahl der Felder nur des letzten Arrays zu vergleichen. Erstelle ich ein Array[1..9,1..32,1..109,1..2] geht es.
Fehler 2 Eine "0" wird als Bit erkannt und nicht als Real, daher Fehler kann Bit nicht in Real konvertieren. Wenn man das Array als Array [1..9,1..32,1..109,1..2] abbildet kommt diese Fehlermeldung nicht.
Das dritte ist eher ein Darstellungsproblem anstatt eines Fehlers. Möchte ich mir nun das Array in der Steuerung im Online-Modus anschauen endet die Liste bei [1,5,64,2]. Kann e!Cockpit nicht mehr als 1000 Zellen anzeigen? Hier zeigt sich gerade der Vorteil der verschachtelten Arrays, ich muss sie zwar alle einzeln Aufklappen, habe aber immer nur maximal 218 Zeilen.
Der oben dargestellte Code ging auf der 880 problemlos durch, dort hatte ich bisher nur diese erste Dimension des Arrays mit 1..9 nicht. Da diese nun aber benötigt wird reicht der Platz auf der 880er nicht mehr.
Viele Grüße
Bastian
ich versuche gerade den Umstieg von v2.3 auf v3.5 notgedrungener Weise, da die 750-880 für meine benötigten Datenmengen zu klein wird.
Für ein Tanksmesssystem mit 32 Tanks, bei denen die geometrie nicht durch einfache Funktionen abbildbar ist, benötige ich am liebstens ein Array [1..9] of Array [1..32] of Array [1..109,1..2] OF REAL als Konstante definiert (Ein Array [1..9,1..32,1..109,1..2] of REAL geht grundsätzlich auch, ich empfinde es aber als Übersichtlicher in der anderen Schreibweise).
Zur Erläuterung, ich habe 32 Tanks die jeweils, für eine halbwegs genaue Volumenanzeige, 109 Stützstellen benötigen, für jeden Tank gibt es nochmal 9 Unterschiedliche Tabellen, da diese Tanks auf einem Schiff sind und durch unterschiedliche Trimstufen jeweils andere Verhältnisse von Höhe zu Volumen besitzen.
Das Array kann ich auf der 880er zwar noch abbilden (gerade so) aber wenn ich das Array mit seinen Werten initialisiere platzt mir der Quellcode bzw. das übersetzte Programm aus allen Nähten.
Daher habe ich mich nun für einen PFC100 750-8100 entschieden, da hier deutlich mehr Programmspeicher zur Verfügung stehen.
Beim Umstieg auf Codesys v3.5 habe ich nun aber ein paar Probleme bekommen.
Zum einen bekomme ich mehrere Fehlermeldungen wenn ich unter Var Global Constant folgenden Code habe.
Code:
ps_sensor_tank_curve: ARRAY [1..9] OF ARRAY [1..32] OF ARRAY [1..109,1..2] OF REAL:=[0,0,0.1,1.03,0.2,2.505,0.3,4.228,0.4,6.159,0.5,8.258,0.6,10.489,0.7,12.726,0.8,14.98,0.9,17.276,1,19.626,1.1,22.024,1.2,24.485,1.3,26.868,1.4,29.164,1.5,31.549,1.6,34.026,1.7,36.586,1.8,39.1,1.9,41.582,2,44.099,2.1,46.651,2.2,49.238,( hier folgen noch weiter 30.000 Werte)];
Fehler 2 Eine "0" wird als Bit erkannt und nicht als Real, daher Fehler kann Bit nicht in Real konvertieren. Wenn man das Array als Array [1..9,1..32,1..109,1..2] abbildet kommt diese Fehlermeldung nicht.
Das dritte ist eher ein Darstellungsproblem anstatt eines Fehlers. Möchte ich mir nun das Array in der Steuerung im Online-Modus anschauen endet die Liste bei [1,5,64,2]. Kann e!Cockpit nicht mehr als 1000 Zellen anzeigen? Hier zeigt sich gerade der Vorteil der verschachtelten Arrays, ich muss sie zwar alle einzeln Aufklappen, habe aber immer nur maximal 218 Zeilen.
Der oben dargestellte Code ging auf der 880 problemlos durch, dort hatte ich bisher nur diese erste Dimension des Arrays mit 1..9 nicht. Da diese nun aber benötigt wird reicht der Platz auf der 880er nicht mehr.
Viele Grüße
Bastian
Zuletzt bearbeitet: