28.07.2011, 10:41
Beitrag #1
|
Hep
LVF-Grünschnabel
Beiträge: 20
Registriert seit: Oct 2007
2009
2008
DE
80339
Deutschland
|
matlab-scriptknoten oder dll?
Hallo Zusammen!
ich programmiere ein größeres Programm zur Scanmirkoskopsteuerung. Es werden also daten aufgenommen und verwertet. Gerade versuche ich die Performance etwas zu verbessern, da ich über 6Mdatenpunkte(U16) Memory-Probleme bekomme.
Die Grobstruktur läuft folgendermaßen: ich initialisiere einen Array entsprechend der Aufnahmeparameter, lese innerhalb einer Schleife die neu dazu gekommenen Werte aus, schreibe diese in den Array und zeige jeweils das aktuelle Bild an.
Da ich fünfdimensional aufnehme (x,y,z,zeit,unterschiedliche Farben) wird die initialisierung mir zu unübersichtlich in Labview, und daher mache ich das mit Matlab. Ich rufe einen Matlab-Skriptknoten auf, von dem aus ein .m file aufgerufen wird, das mir einen Array erstellt, den ich aus dem Knoten auslese. Meine Daten sind U16, der Scriptknoten verwendet Double. Das braucht sicher einiges an Konvertierung. Außerdem benötige ich Speicher in LV für die Daten und redundant dazu auch in Matlab.
Nun war meine Idee, aus dem Matlab-code eine dll zu machen und die einzubinden. Hat da jemand erfahrung? geht das gut?
Und außerdem: kann man den LV zur verfügung stehenden Speicher erweitern?
LV version 2009
danke, viele Grüße H
|
|
|
28.07.2011, 10:59
Beitrag #2
|
GerdW
______________
Beiträge: 17.470
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: matlab-scriptknoten oder dll?
Hallo H,
Zitat:Da ich fünfdimensional aufnehme (x,y,z,zeit,unterschiedliche Farben) wird die initialisierung mir zu unübersichtlich in Labview,
Ähem:
Unübersichtlich?
|
|
|
28.07.2011, 11:44
Beitrag #3
|
Hep
LVF-Grünschnabel
Beiträge: 20
Registriert seit: Oct 2007
2009
2008
DE
80339
Deutschland
|
RE: matlab-scriptknoten oder dll?
(28.07.2011 10:59 )GerdW schrieb: Unübersichtlich?
das unübersichtliche ist ehrlich gesagt sogar nur 2dimensional - der ansteuerungsarray für die positionierung, der von vielen parametern abhängt.
|
|
|
28.07.2011, 11:47
Beitrag #4
|
GerdW
______________
Beiträge: 17.470
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: matlab-scriptknoten oder dll?
Hallo Hep,
Zitat:der ansteuerungsarray für die positionierung, der von vielen parametern abhängt.
Wie wäre es mit einem 1D-Array of (typedef'd) Cluster?
|
|
|
28.07.2011, 11:52
Beitrag #5
|
Hep
LVF-Grünschnabel
Beiträge: 20
Registriert seit: Oct 2007
2009
2008
DE
80339
Deutschland
|
RE: matlab-scriptknoten oder dll?
(28.07.2011 11:47 )GerdW schrieb: (typedef'd)
Hallo Gerd,
wie meinst du das? Bzw was heißt denn das? kenn ich gar nicht..
H
|
|
|
28.07.2011, 11:56
Beitrag #6
|
GerdW
______________
Beiträge: 17.470
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: matlab-scriptknoten oder dll?
Hallo Hep,
du kannst eigene Datentypen per Typdefinition festlegen - bewährt haben sich Cluster mit benannten Elementen...
Schön, dass es die Kontext-/Onlinehilfe gibt...
|
|
|
29.07.2011, 07:09
Beitrag #7
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
RE: matlab-scriptknoten oder dll?
(28.07.2011 10:41 )Hep schrieb: Da ich fünfdimensional aufnehme (x,y,z,zeit,unterschiedliche Farben) wird die initialisierung mir zu unübersichtlich in Labview, und daher mache ich das mit Matlab. Ich rufe einen Matlab-Skriptknoten auf, von dem aus ein .m file aufgerufen wird, das mir einen Array erstellt, den ich aus dem Knoten auslese. Meine Daten sind U16, der Scriptknoten verwendet Double. Das braucht sicher einiges an Konvertierung. Außerdem benötige ich Speicher in LV für die Daten und redundant dazu auch in Matlab.
Nun war meine Idee, aus dem Matlab-code eine dll zu machen und die einzubinden. Hat da jemand erfahrung? geht das gut?
Die Matlab DLL wird an Deinem Performance Problem kaum etwas ändern. Der Transfer mit Datenkonvertierung wird im wesentlichen bestehen bleiben. Dein Problem ist ein typisches: will man während der Entwicklung Zeit und Gehirnschmalz sparen kostet das später jedesmal Zeit und Performance bei jedem Run. Wenn man sich dagegen hinsetzt und einmal genau darüber nachdenkt was wie getan werden muss, kann man mit etwas "trial and error" auch 5-dimensionale Arrays bändigen. Das geth in LaVIEW selbst sehr einfach da Du da ja auch nicht jedesmal crasht wenn etwas nicht stimmt. In C oder mit DLLs kann ein Byte zu wenig schon genug sein und Du darfst die Applikation wieder neu starten. Man macht sich diese Mühe einmal und hat dann eine Applikation die auch schnell läuft.
Zitat:Und außerdem: kann man den LV zur verfügung stehenden Speicher erweitern?
LabVIEW kann soviel Speicher benützen wie Windows per Applikation zur Verfügung stellt. Unter Windows 32 bit ist das 4GB von dem die Hälfte für Windows reserviert ist. Mit einem switch in boot.ini kann der verfügbare Speicher per App auf 3GB erhöht werden. Natürlich sollte die Maschine dann auch 4GB verfügbaren Speicher haben (eventuellen shared Video Speicher kann da ziemlich negativ reinschlagen) anders macht der 3GB Switch die Dinge nur noch schlimmer.
Unter 64 Bit Windows mit 64 Bit LabVIEW hast Du per Applikation erst mal beinahe soviel Speicher verfügbar wie die Maschine an physikalischem Memory zur Verfügung hat.
|
|
|
29.07.2011, 10:05
Beitrag #8
|
Hep
LVF-Grünschnabel
Beiträge: 20
Registriert seit: Oct 2007
2009
2008
DE
80339
Deutschland
|
RE: matlab-scriptknoten oder dll?
(29.07.2011 07:09 )rolfk schrieb: Dein Problem ist ein typisches: will man während der Entwicklung Zeit und Gehirnschmalz sparen kostet das später jedesmal Zeit und Performance bei jedem Run.
na gut, dann investier ich mal Gehirnschmalz
Wie ist denn das, wenn ich zu test/alignment/überwachungszwecken in einer case struktur ein matlabskript aufrufe - dann sollte das meine Performance doch im normalbetrieb, wenn er also einen anderen case abarbeitet, nicht beeinträchtigen?
Danke für die hilfreiche Antwort!
|
|
|
29.07.2011, 15:53
Beitrag #9
|
BerndDasBrot
LVF-Gelegenheitsschreiber
Beiträge: 128
Registriert seit: Feb 2008
8.2.1, 2012, 2017, 2020
2007
EN
7206
Schweiz
|
RE: matlab-scriptknoten oder dll?
Hallo
Poste doch mal ein VI oder Bild, dann sieht man was Du meinst.
Gruss, BDB
|
|
|
01.08.2011, 12:31
|
|
|
| |