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!
Ich möchte Daten mit einer iCCD-Kamera (PI-MAX 3 von Princeton Instruments) aufnehmen und das möglichst schnell. Hierbei erreiche ich Aufnahmegeschwindigkeiten von etwa 200 ms pro Bild, die ich mir seperat auslese und abspeichere. Jedes Bild speichere ich mir in eine separate Datei, da ich große Dateien nach längeren Aufnahmezeiten nicht mehr öffnen kann (größer 2 GB ungefähr).
Ich bin mir ziemlich sicher, dass eine schnellere Auslesegeschwindigkeit möglich ist, da ich bei kleineren Chipgrößen bzw. Auslesegebieten auf dem Chip (Pixelzahl ist insgesamt 1024x1024) schnellere Geschwindigkeiten hinbekommen habe. Außerdem bin ich sicher, dass die Kamera eine höhere maximale Aufnahmegeschwindigkeit besitzt.
Kurze Erläuterung zu meinem VI:
Auf der linken Seite sind jede Menge SubVIs (aus dem Scientific Imaging Toolkit von Roper Scientific) mit denen ich alle notwendigen Einstellungen für die Kamera eingeben kann (Trigger, Pulslänge, Belichtungszeit, Wellenlänge, Temperatur des Chips). Das ganze läuft einmal durch. Die Datenaufnahme läuft dann separat in der Schleife mittels Producer/Consumer- Architektur ab. Die Zeit pro Schleifendurchlauf schreibe ich mir parallel in eine Textdatei.
Gibt es in dem VI irgendwelche Fehler, die mich Geschwindigkeit kosten und vermeidbar sind? Ich weiß, dass jedes Mal eine neue Datei erstellen Zeit kostet (dazu fehlt mir im Moment aber eine Idee um das zu umgehen) und das lokale Variablen Zeit kosten (auf die ich so weit es ging verzichtet habe).
Für die Unübersichtlichkeit im VI muss ich mich entschuldigen, aber ich bin noch recht unerfahren in LabView und wusste keinen besseren Weg, das zu umgehen.
ich kann vorher nicht sagen wie lange ich messen muss, also auch nicht wie viele Dateien ich genau brauche.
Die CPU-Auslastung ist nicht so besonders hoch, sie liegt in der Regel unter 30%, meistens sogar noch unter 20%. Auch der Arbeitsspeicher (2 GB) wird nicht voll ausgelastet. Ich habe den virtuellen Arbeitsspeicher erhöht und Labview höchste Priorität zugewiesen, auch damit wird der Rechner nicht voll ausgelastet.
@ Marc
Ja, das ist richtig. I32 ist notwendig, wenn ich hohe Intensitäten habe. Das Limit der CCD-Chips liegt auch im Bereich von 16 Bit, bevor Überladung einsetzt. Ich kann leider nicht sagen, ob tatsächlich höhere Intensitäten nicht von der Software dargestellt werden können oder der Chip überladen ist und sie nicht mehr registriert. Und ohne die Kamera zu beschädigen, kann ich es leider nicht testen. Im Handbuch steht es leider auch nicht explizit drin, wann das Blooming eintritt.
Ein Lösungsansatz den ich im Moment verfolge, ist eine neue Festplatte mit erhöhter Schreibgeschwindigkeit. Hier hab ich eine SSD-Festplatte im Sinn, da hier die Zugriffs- und Schreibzeiten erheblich kürzer sind als bei meiner jetzigen Festplatte. Ich hoffe damit näher an die maximale Geschwindigkeit der Kamera zu kommen. Die liegt bei etwa 25 Bilder pro Sekunde, wenn ich den kompletten Chip messe.
Falls es nicht wichtig ist, dass es einen Integer pro Datei gibt könntest du dir überlegen nach einer bestimmten Anzahl Schleifendurchgängen (z.B. 256 für 1kB grosse Dateien) eine neue Datei anzulegen und nicht nach jedem Schleifendurchgang.
Dadurch sollte das ganze wesentlich schneller werden, da das erstellen frischer Dateien wesentlich mehr Zeit benötigt als ein einfacher Dateizugriff!
@M Nussbaumer: Wenn ein Rechner ein Bild mit 1024 x 1024 Pixel verlustfrei auf 32 Bit komprimiert, dann schafft er zwar kein 25 Bilder/s, aber der Erfinder des Kompressionsalgos bekommt die Fields-Medaille und den Turing Award. Wenn er bei drei nicht auf dem Baum ist vllt noch den Friedensnobelpreis
Spaß beiseite, ich glaube, der Fehler liegt nicht an der Hardware, sondern da stimmt irgendwas mit deinem Code nicht. Eventuell benutzt du die mitgelieferten VIs nicht richtig, oder du wartest beim Queue-Wait, oder es gibt irgendein Synchronitätsproblem. So richtig weiterhelfen kann ich dir nicht, denn die VIs deines Lieferanten sich mir gänzlich unbekannt.
(22.08.2011 20:51 )schrotti schrieb: @M Nussbaumer: Wenn ein Rechner ein Bild mit 1024 x 1024 Pixel verlustfrei auf 32 Bit komprimiert, dann schafft er zwar kein 25 Bilder/s, aber der Erfinder des Kompressionsalgos bekommt die Fields-Medaille und den Turing Award. Wenn er bei drei nicht auf dem Baum ist vllt noch den Friedensnobelpreis
Hahahaha, soweit hab ich gar nicht gedacht, als ich mir den Code angesehen habe
Nur den Datentyp gesehen