INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Koordinaten auslesen -> in Array schreiben --> RAM Voll



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

07.11.2012, 11:58
Beitrag #1

man1acc Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2012

2012
2010
DE

81XXX
Deutschland
Koordinaten auslesen -> in Array schreiben --> RAM Voll
Hallo zusammen,

im Rahmen eines kleinen Projektes soll ich ein Labviewprogramm schreiben das folgendes tut (es tut auch was es soll, aber!)

Ich habe ein NC Programm einer 5 Achs Fräsmaschine, der Code sieht prinzipiell so aus:
"N299 ;FFO
N300 X3 Y5 Z6 A4 C5
N301 X3 Y5 Z6 A4 C5
N302 X3 Y5 Z6 A4 C5
N303 X3 Y5 Z6 A4 C5
N304 ;FF1"

Ich habe die FF0/FF1 als eine Art Trigger Funktion eingefürt. Über eine While Schleife wird zunächst jede Zeile des NC Programms (=String) eingelesen und auf meine Triggerwerte (FF0 = Start) untersucht (FFO ist hexadezimal für 4080, durch einen Vergleich sucht er die Zahl). Findet er den Wert wird die Zeilennummer gespeichert. Analog für die Stop Funktion FF1.
Das ganze ist notwendig da die 5Achs Fräse im NC Programm ca. 120.000 Zeilen hat und ich nur Sätzeweise die Koordinaten brauche (Satzlänge bis zu 20k Werten).
Hat er Start/Stop Zeile gefunden, wird der String entsprechend gekürzt. Aus diesem Suche ich mir dann die Koordinaten raus und speichere diese in einem Array (1 Array für X, 1 Array für Y). Anschließend kommen die Arrays dann in einen 3D graph und dann sieht man die Bahnen der 5-Achs Bearbeitung (wofür ich die brauche ist egal Smile ).

Bis ca. 5000 Zeilen NC Programm liest er alles brav aus und zeigt mir alles an. Leider können halt auch 20.000 Zeilen (also 3 Arrays mit jeweils 20k Zeilen) kommen, da jeder NC Satz in der Länge variabel ist. Daher krieg ich bei zu langen Sätzen irgendwann die Meldung das mein RAM voll ist und das Programm bricht ab.

Gibt es eine Möglichkeit das Problem zu umgehen? Leider kann/darf ich das Programm nicht hier hochladen da die hier in der Firma wo das ein Studi-Projekt ist sehr hohe Sicherheitsanforderungen gelten.
Bei Unklarheiten versuch ich das ganze schnellstmöglich zu klären.

Besten Dank & Gruß
Bastian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 12:04
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Hallo Bastian,

das Problem umgeht man, indem man nicht zu viele Datenkopien anlegt...
Schon mal nach "labview memory handling" gegoogelt?

Da du dein VI nicht zeigen darfst (was auch immer high-security sein soll bei einer Routine zum Einlesen und Auswerten von Daten) musst du selbst weiterschauen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 12:11 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2012 12:17 von man1acc.)
Beitrag #3

man1acc Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2012

2012
2010
DE

81XXX
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Danke schonmal dafür, ich kann halt leider nichtmal Screenshots auf den Rechnern erzeugen, geschweige denn was hochladen. Faktisch geht es nur darum das mir der Rechner "beim befüllen der Arrays" sogesehen überläuft.
Ich schau mal ob ich zumindest irgendwie einen Screenshot hier reingeschleust krieg, weil so komm ich nicht weiter Sad

So mein Arbeitskollege hatte dann doch mehr Internetrechte als ich, sodass er zumindest einen Screenshot machen konnte, siehe Anhang. Ich hoffe das Programm ist jetzt nicht zu fehlerhaft, seid bitte gnädig Smile

Anmerkung: Die Koordinaten dort sind in einem anderen Format (ohne Werkzeugkompensation, daher ist nicht die Form: X4Y5 sondern X4+(Verrückte Formel)Y5+(...).


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 12:16
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Was du falsch machst, ist auf Grund deiner Beschreibung schwer zu sagen. Die pure Datenmenge alleine kann es nicht sein. 120.000 Zeilen a ca. 20 Zeichen, da reden wir über 2 MegaByte Daten. Dann schreibst du noch was von 3 Zahlen-Arrays (ich hoffe, die sind alle 1-dimensional) a 20.000 Element. Da sind wir selbst bei Double gerade bei 0,5 MB Speicherbedarf.

Das kann es nicht sein.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 12:21
Beitrag #5

man1acc Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2012

2012
2010
DE

81XXX
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Das ist schonmal gut zu wissen, ich hoffe der Screenshot hilft. Das ich einen Fehler drin hab, hab ich mir gedacht. Die Zahlen sind jeweils z.B. 123,048375 (also glaub 5 oder 6 Kommastellen), aber bei 4GB RAM muss der Fehler woanders liegen Sad

Was mir auch sauer aufschlägt, die Arrays sind ja 1D in der Schleife und dann 2D beim rausziehen. Wenn ich die Indizierung dann rausnehme ist meine 3D Darstellung für die Katz, sieht eher nach einem riesen Durcheinander aus...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 12:32
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Hilfe! Wink Was machst du denn da?

Du schneidest doch immer nur 1 Zahl (X,Y,Z) aus dem String aus, wieso wandelst du das in ein 1D-Array?
Die Feedback-Node sind uninitialisert, merken sich also alles aus dem vorherigen Durchlauf des VIs.

Wenn ich es auf die Schnelle richtig interpretiere, erreichst du (vereinfacht dargestellt) hiermit dasselbe:
   

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
07.11.2012, 12:39 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2012 12:53 von man1acc.)
Beitrag #7

man1acc Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2012

2012
2010
DE

81XXX
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Tut mir Leid das ich durch Unwissenheit/Dummheit glänze Smile Prinzipiell funktioniert das ja.
Das Problem: Bei mir kommt aus der Funktion "Dezimal-String nach Zahl" (das meinst du doch in deinem Screenshot, oder?) eine Zahl und kein Array raus (wie bei dir...)

Edit: Du meinst bestimmt "Bruch/Exponentioal-String nach Zahl" oder?
Mea Culpa

Edit2: soweit scheint es zu klappen, die Arrays werden korrekt gelesen. ABER: Mein 3D Plot sieht einfach nur grauselig aus (als ob ich wie in meiner alten Lösung die Indizierung am Durchgang der Schleife aus den Arrays entferne Sad Sogesehen passen X,Y,Z Koordinatenpärchen nicht)

Edit3: es liegt glaub ich daran das er die - (Minuszeichen) nicht liest und ich nur pos. Werte in den Arrays hab)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 12:55 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2012 12:57 von jg.)
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
(07.11.2012 12:39 )man1acc schrieb:  Tut mir Leid das ich durch Unwissenheit/Dummheit glänze Smile Prinzipiell funktioniert das ja.
Das Problem: Bei mir kommt aus der Funktion "Dezimal-String nach Zahl" (das meinst du doch in deinem Screenshot, oder?) eine Zahl und kein Array raus (wie bei dir...)
Genau, und das ist die Lösung deines Problems. Innerhalb der Schleife gehst du zeilenweise durch deinen String und schneidest doch immer nur den X/Y/Z-Zahlenanteil aus. Das ist jeweils 1 Zahl (kein Array). Das wandle ich also in 1 Zahl und erstelle per AutoIndexing am Ausgang der For-Schleife die 3 1D-Arrays.

Deine Arrays am Schleifenausgang sind bis zu 20000x20000 Elemente große 2D-Arrays, mit einem Haufen unnötigen und doppeltem Datenmüll.
(07.11.2012 12:39 )man1acc schrieb:  Edit: Du meinst bestimmt "Bruch/Exponentioal-String nach Zahl" oder?
Genau.

Gruß, Jens

EDIT:
(07.11.2012 12:39 )man1acc schrieb:  Edit3: es liegt glaub ich daran das er die - (Minuszeichen) nicht liest und ich nur pos. Werte in den Arrays hab)
Dann solltest du vielleicht einmal einen "wahren" Ausschnitt aus deiner Datei posten, nicht einen Prinzip-Ausschnitt.

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 13:00 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2012 13:09 von man1acc.)
Beitrag #9

man1acc Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2012

2012
2010
DE

81XXX
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
So, mehr Tipp ich von dem Kack aber nicht ab:

N129X=4.63871+(.718005*$TC_DP15[$P_TOOLNO,$P_TOOL])Y=166.98004+(.011404*$TC_DP15[$P_TOOLNO,$P_TOOL])Z=292.58878+(.695944*$TC_DP15[$P_TOOLNO,$P_TOOL])A-87.71432C-4.65516
N130X=4.45164+(.712857*$TC_DP15[$P_TOOLNO,$P_TOOL])Y=166.97765+(.015121*$TC_DP15[$P_TOOLNO,$P_TOOL])Z=292.79355+(.701146*$TC_DP15[$P_TOOLNO,$P_TOOL])A-87.7216C-4.41556

Das ist aber nur ein Test NC Programm, welches noch nicht berechnet wurde, ein fertiges NC Programm hat den Teil von "+(.....)" nicht mehr, sodass die Koordinaten direkt aneinander hängen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2012, 13:43
Beitrag #10

man1acc Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2012

2012
2010
DE

81XXX
Deutschland
RE: Koordinaten auslesen -> in Array schreiben --> RAM Voll
Leider geht Edit nicht mehr:

Ein Problem ist auf jeden Fall, dass mein NC Programm auch teilweise ungeänderte Koordinaten enthält. Also z.b.

N1 X4Y6Z6
N2 X4Z7

Also Y gleich bleibt. Da die Suche im String Funktion dann eben eine Null ausgibt, schreibt er eine Null in den Array und meine Darstellung wird Käse Smile

Ich schreibe mir das jetzt so um, dass Zeile N und und N+1 eingelesen werden und der N+1 mit N abspeichert. Wenn dann in N ungleich 0 und N+1 0 ist soll er dann z.B. das Y aus der Zeile N in N+1 übernehmen...oder so...wie genau ich dsa mache weiß ich noch nicht, aber ich glaub das ist der entscheidende Fehler..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Koordinaten Listenfeld simcum 5 4.311 18.01.2022 16:43
Letzter Beitrag: jg
  Array mit Array auslesen und Array erzeugen Harry2000 10 9.119 08.05.2021 06:32
Letzter Beitrag: Martin.Henz
  Aus 2D-Array jede x-te Zeile in weiteres 2D-Array schreiben P.J. 5 6.353 13.11.2020 09:05
Letzter Beitrag: GerdW
  Werte in Array schreiben- Mittelwert bilden und ausgeben um0k 10 8.782 25.08.2020 14:19
Letzter Beitrag: GerdW
  Werte nacheinander in Array schreiben über ein Schieberegister BlackEagle 5 8.620 13.12.2019 13:40
Letzter Beitrag: GerdW
  OHNE VI: Arbeitsspeicher läuft voll ddrayss 8 6.487 12.10.2019 17:05
Letzter Beitrag: ddrayss

Gehe zu: