|
schnellste Messdatenerfassung?!?
|
|
09.07.2010, 11:37
Beitrag: #1
|
|||
|
|||
|
schnellste Messdatenerfassung?!?
[/font][/size]Hallo!
Ich fertige gerade meine Masterarbeit im Fach Technische Chemie an und bin ein absoluter Neuling mit dem Programm VEE. Deshalb hab ich gerade viel mehr Fragen als Antworten. Für die Arbeit benötige ich eine schnelle Messdatenerfassung von 25 Sensoren (Dehnungsmesssstreifen, Drucksensoren und Temperaturfühler). die Zeit sollte nicht länger als 100 ms für den gesamten Zyclus betragen. (Also gleichzeitige Aufnahme von 25 Messdaten pro 100 ms) Nun meine Frage: Ist dieses überhaupt mit VEE 9.2 machbar? Wenn ja, wie bekomme ich das am einfachsten und am geschicktesten hin. Zur Zeit öffnet VEE eine EXCEL Tabelle wo dann einzelt die Daten in bestimmte Felder eingetragen werden. (wie gesagt, absoluter Neuling im Bereich VEE Programierung) Ich denke mir, dass dabei viel Zeit verloren geht, bräucht ich eine schnelle Methode um Datensätze zu speichern und in eine EXCEL Datei zu übertragen? Soweit ich informiert bin, gehen mehrere Ansätze, nur mir fehlt die Zeit alle auszuprobieren und sie zu testen. Also falls jemand mir da weiterhelfen kann...... Im Handbuch sind mehrere Methoden aufgelistet. - Testdaten in Arrays ablegen - den Collector verwenden - das Objekt To / From file verwenden - Records u. s. w. Vielen Dank im voraus Marko |
|||
|
09.07.2010, 12:14
Beitrag: #2
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Hallo Marko,
also ich würde die Daten in ein Array puffern und erst nach Abschluss der gesamten Messung an Excel senden. Natürlich hast du dann das Problem, wenn das Programm abstürzt sind die Daten weg. Also evtl mit einem ToFile Objekt in eine Puffer-Datei zwischenspeichern, was aber wieder Zeit kostet. Oder du probierst den Puffer-Vorgang in einem anderen Thread auszuführen. Aber wie lange die Messung im Gesamten dauert kann ich dir lieder nicht sagen^^ bin ja selbst erst seit ein paar Monaten mit Vee am Arbeiten. Viel Erfolg weiterhin noch loki |
|||
|
09.07.2010, 13:13
Beitrag: #3
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Moin,
25 Messdaten in 100ms abzuspeichern ist kein Problem. Hier ist nicht VEE entscheidend, sondern die Hardware. Zuerst muß man doch erstmal wissen womit (einzelne Geräte, Multiplexer) und wie (Seriell [Baudrate], IEE 488, USB) die Datenaufnahme erfolgt. Allein ein Datenabruf via USB dauert min. 2ms, das würde bei 25 Einzelgeräten schon mal 50ms + Overhead in Anspruch nehmen. Die schnellste Methode der Datenübertragung erfolgt via IEEE488 (HPIB). Wenn, dann würde hier nur eine getriggerte Methode die Datenerfassung in dem Zeitrahmen erlauben und danach die Übertragung ins Programm. Also Trig All, get1, get2, get3 ...get25, Trig All get1, ... Die übertragenen Datensätze können dann als Variable später abgespeichert oder nach Excel transferiert werden. Gruß Bratbaecker |
|||
|
09.07.2010, 14:12
(Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2010 14:14 von Marc1897.)
Beitrag: #4
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Kann man eigentlich mehrere Geräte quasi-gleichzeitig ansprechen (Multithreading), wenn man nur einen Prozessor / Kern hat? Die Geräte sind ja langsamer als der PC.
oder werden die Threads nacheinander ausgeführt? |
|||
|
09.07.2010, 14:22
Beitrag: #5
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Bratbaecker hat da mal wieder Recht.
Erst die Hardware, dann die Software..... Also, wie werden die Daten eingelesen?? Wenn man da 25 mal die serielle Schnittstelle abfragen will, duerften 100ms nicht reichen ;-) waeren so 2000 Bit, also 80 Bit oder 10 Byte pro Geraet bei 19800 Baud...und dann kommt da noch der Overhead drauf. Komm mal mit ein paar Hardwarefacts rueber, und welche Geschwindigkeit die Schnittstellen haben. |
|||
|
09.07.2010, 15:16
(Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2010 15:19 von Marko.)
Beitrag: #6
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Also erstmal vielen Dank für die schnellen Antworten
Daten des PC´s 4096 MB (2x2MB) DDR2-800 Prozessor Intel Core 2 Duo E7400 Die Daten sollen parallel über über 4 USB Anschlüsse mit 4 Meilhausboxen eingelesen werden. 1. Meilhausbox; 7 Termoelemente 2. und 3. Meilhausbox; 6 Dehnungsmessstreifen + 1 Termoelement 4. Meilhausbox; 2 Drucksensoren + 2 Näherungsschalter |
|||
|
11.07.2010, 22:29
Beitrag: #7
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Ah, das ist schon mal was konkreteres.
Trotzdem fehlen noch Infos: Wie heißen die Meilhausboxen? In welcher Betriebsart werden sie angesteuert ? Gibt es einen gemeinsamen Trigger ? Gruß Bratbaecker |
|||
|
12.07.2010, 13:23
Beitrag: #8
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
[b]so, also wie du merkst, bin ich blutiger Anfänger :-) deshalb sorry das so viele wichtige Daten fehlen. Hab da auch ehrlich gesagt nicht so den Durchblick mit den PC - Daten und so!
Also zu den Fragen: wie heißen die Meilhausboxen? 1. MB (RedLab TC) 2. und 3. MB ( RedLab 1208) 4. MB (RedLab 1008) Datenblätter unter: http://www.meilhaus.de/fileadmin/upload/...redlab.pdf In welcher Betriebsart werden sie angesteuert? ich weiß zwar nicht ganz genau was du meinst aber ich denke es ist "singel end" gibt es einen gemeinsamen Trigger? NEIN! Also ich hoffe das sind alle benötigten Infos. Vielen Dank nochmals |
|||
|
12.07.2010, 15:55
Beitrag: #9
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Das sind doch schon brauchbare Infos.
Ich selbst habe die Boxen nicht, ich schau mal was die Downloads beinhalten. Normalerweise sind dort immer Beispiele drin. Hast du die Beispielsoftware aufgespielt und schon mal ausprobiert ? Werden die Boxen alle erkannt, per USB ? Gruß Bratbaecker |
|||
|
13.07.2010, 18:00
(Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2010 16:17 von Bratbaecker.)
Beitrag: #10
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Moin,
ich habe mir die Red-Labs angeschaut, die Ansteuerung basiert auf dem Programm Instacal (als Gerätemanager) und der mccdaq.dll mit den Funktionaufrufen. Das geht im Prinzip ganz easy mit dem .NET und VEE. Man muß (leider nur) erraten welche benötigten/gewünschten Aufrufe zu welchem Gerät gehören. Hilfreich ist dazu die Datei Universal-Library-Help_8_7_Feb_2010.pdf die im Download RedLab_Web_2_9.zip zu finden ist. Wie man die DLL in das .NET von VEE integiert steht in der Datei Anleitung_RedLab_in_VEE.pdf generelle Vorgehensweise: 1. die Boxen mit Instacal adden und ihnen Geräteadressen zuweisen. 2. In VEE die Geräte initalisieren und Object-Variablen zuweisen 3. Die einzelnen Funktionen und Ports der Geräte konfigurieren 4. Messabfragen starten und abfragen 5. Messdaten aufbereiten und auswerten Am Anfang muß erstmal jedes Gerät einen Datensatz aufnehmen können. Das heißt erstmal für jeden Boxentyp die Ports konfigurieren und eine Messrountine schreiben. Wenn das klappt, kann man das Programm umschreiben, damit alle Abfragen zeitgleich starten. Das Redlab-TC läßt aber nur ein Abfrage-Zeitintervall von 0.5 sec zu. Hier müßte man den 100ms Zyklus mit den "alten" Daten auffüllen. Aber bis dahin ist noch viel zu tun. ![]() Diese Bilder beinhalten eine Abfrage des Demo-Boards. Die Variable mccBoard1 muß dazu mit der Demo-Board Adresse ( meist 0)inititialisiert werden. Der Orange-Teil bei der Messung begrenzt die Anzahl der Messungen auf 21 und kann wenn nicht gewünscht entfernt werden. Im Anzeigeobjekt wird aus den 100 Sample ein Meanwert gebildet, falls man eine reine Spannungsmessung haben möchte. Gruß Bratbaecker |
|||
|
29.07.2010, 13:05
Beitrag: #11
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Hallo zusammen,
ich versuche mich im Moment auch mit einer "Echtzeitanwendung" mit einer RedLab-Box 1408. Wärend einer Netzhalbwelle (10ms) will ich vier Analogeingange einlesen. Dazu triggere ich den eingebauten Ereigniszähler mit der Netzhalbwelle. Das VEE-Programm liest wiederholt den Ereigniszähler aus und wartet auf eine Veränderung (Erhöhung um mindestens eins). Danach werden die vier Analogeingänge gemessen und in ein Array gepuffert. Daten gehen nach Excel nach der "Echtzeitphase". Wie schon bemerkt dauert das Einlesen eines Analogwerts ca. 2-3ms. Vier (Einzel-)Werte plus Änderung Ereigniszähler klappt nicht in 10ms. Es muß als der "Burstmodus" her. Und da fangen die Probleme an. Von der "mccdaq.dll" fuktionieren die meisten Befehle nicht. Von der "WinBufToArray" Funktion klappt nur die (wie oben im Beispiel) die, die ein Real64 Array übergeben bekommt. Ich gehe aber davon aus, das die "AInScan" Funktion UInt16 Werte scant, da es sich um einen 14bit- AD Wandler handelt. Die Real64 Werte die hinten rauskommen haben gigantische Werte (540M). Einen Typecast wie unter C oder Pascal bekomme ich in VEE nicht gebacken. Genauso verstehe ich die "WinBufAlloc" Funktion nicht da werden im Beispiel 800 Werte allokiert, nach "Universal-Libary" sind das (800) UInt16 Werte, also insgesamt 1600 Byte. Die "WinBufToArray" Funktion liest dann aber 800 Stück Real64 Werte aus dem Speicherbereich, die aber 6400 Byte benötigen würden. Lese ich bei "AInScan" nur einen Wert ein, kommt aus dem Puffer auch ein Wert heraus, der halbwegs nach einem "echten" Meßwert aussieht. Lese ich zwei Werte ein kommt ein "großer" Wert raus, lese ein drei Werte ein kommt ein großer und ein halbwegs echter Wert raus. Es scheinen also zwei Messungen (UInt16 ?) zu einer Real64 verwurschtet zu werden. Also ich werd aus der Sache nicht schlau. Kann jemand Licht ins Dunkle bringen ? Ist ein Typcast unter VEE möglich (also gleicher Speicherbereich unter verschiedenen Aspekten auslesen). Warum funktionieren die anderen "WinBufToArray" Funktionen nicht, bei denen Integer byRef übergeben werden. Viele Fragen, aber das ist das Zeichen der Verzweiflung ! Gruß Peter |
|||
|
29.07.2010, 16:38
Beitrag: #12
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Moin,
ich habe das gleiche Problem mit den UInt16-Werten erlebt. Anscheinend funktioniert die Typ Unterstützung nicht richtig. Mit .NET ( C#) hat es allerdings funktioniert ! VEE 9.x unterstützt diesen Datentyp und daher sollte es kein Problem sein, ging aber trotzdem nicht. Vieleicht liegt es an der Implementierung VEE/.NET, eigentlich ist VEE relativ "gutmütig" wenn der Datentyp nicht stimmt. Doch hier läßt sich die Funktion (mit UInt16 Array) überhaupt nicht aufrufen, obwohl der gewählte Datentyp stimmt. Wende dich doch mal an Meilhaus, ansonsten mußt du ein Wrapper mit .NET (c# oder c++) schreiben, der die Daten von/an VEE übergibt. Gruß Bratbaecker |
|||
|
29.07.2010, 17:30
Beitrag: #13
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Nabend,
Wenigstens beruhigend, daß es nicht nur an mir liegt ! Meilhaus kauft die Boxen nur zu (Measurement Computing) und wissen selbst nicht viel dazu. Das gemeine ist das die Beispiele zum ScanInput unter ftp://ftp.measurementcomputing.com/downl...App_Notes/ laufen, zumindest mit der MccDaq.dll Version 1.4.0.0 aber ich es nicht hinbekomme (trotz Kopie) die Sachen in meinem Programm zum Laufen zu bringen (Kennt Funktionen nicht ect.) Das mit dem vermeintlich zu kleinen Buffer ist mir ein Rätsel, nun ja wenn man den Buffer größer macht gehts auch, kann ja vielleicht nichts schaden. (vielleicht ein Fehler, der nicht auffällt weil Speicher dahinter ungenutzt) Das zu übergebende Array muß bei dem .NET Befehl "byRef" übergeben werden, allerdings verlangt die Funktion kein Array sondern einen Integerwert, das ist mir zu hoch. Ist der Integerwert der Pointer auf das Array ? Geht sowas in VEE, Pointerprogrammierung ? Und schon sind wir wieder beim TypeCast, hast du eine Ahnung wie das gehen kann ? Gruß Peter |
|||
|
29.07.2010, 19:02
(Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2010 20:21 von Bratbaecker.)
Beitrag: #14
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Die Beispiele kannte ich noch nicht.
Nur die MccDaq.dll Dateiversion 1.4.0.0 hat eine lauffähige Funktion mit Int32 Werten. Die DLL ist im Download in den Beispielen auf dem FTP-Server. Aber Achtung: Die Funktion ist nicht unter MccService, sondern unter ServiceInvoke zu finden. In der MccDaq.dll Dateiversion 1.3.13.0 gibt es das Assembly überhaupt nicht. Also liegt es an der DLL und nicht an VEE. Der alte Methodenaufruf zuvor war auch widersprüchlich in Bezug zum Datentyp. Ich habe die neue DLL nach Windows/system32 kopiert und mit regsvr32 /s MccDaq.dll registiert. (Ob das so richtig ist weiß ich auch nicht ?) Das VEE-Programm muß über die .NET Referenz mit browse natürlich auch mitgeteilt werden wo die neue DLL ist. Viel Erfolg.
Gruß Bratbaecker |
|||
|
29.07.2010, 21:59
(Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2010 11:59 von detlef.)
Beitrag: #15
|
|||
|
|||
|
RE: schnellste Messdatenerfassung?!?
Habe hier auch eine Redlab DIO , und hatte auch Verstaendnisprobleme.
Die Beschreibungen scheinen wohl nicht up to date zu sein. Allerdings finden sich die einzelnen Befehle in der Help Datei zu jedem speziellen Geraet aufgelistet, wenn man das erst mal findet...war bei mir so ab 142 oder so. Habt ihr da eure Karte schon gefunden? Dann noch ein Tip: ich habe die .Net Einbindung ueber den VEE -net manager gemacht..da sieht die Syntax dann mal wieder leicht anders aus als in der Beschreibung. Das komische bei mir war, dass es 3mal 8 Kanaele gibt, die als Port A, B und C angesprochen werden, die Kanaele aber dann alle unter Port A von 1 bis 32 laufen, sehr logisch ;-( Und Meilhaus scheint da ja wirklich ein kleines Defizit zu haben....aber trotzdem mal weiter loechern! Weiteres auf Seite 2 ;-) |
|||
|
|

Suche
Mitglieder
Kalender
Hilfe




