07.11.2012, 11:58
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 ).
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
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 ).
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