Hallo,
ich sende mit einem Atmel Microcontroller Daten (von einem Beschleunigungssensor) über die Rs232 Schnitttelle an meinem Pc.
Kann ich den COM-Port (Rs232 Schnittestelle) mit LabVIEW auslen und anzeigen(im prinzip muss LabVIEW ja nur mit der richtigen Abtastrate und Boudtrate den COM-Port abfrageb)?
Müsste das nicht mit "Measurement and Automation" gehen?
Gruß,
Peter
Hallo Peter,
das sollte mit dem VISA-Treiber gehen. Den findest du unter "Instrument I/O"
Gruß
Chris
(24.07.2012 11:58 )Peter765 schrieb: [ -> ]Müsste das nicht mit "Measurement and Automation" gehen?
Im 'Max' kannst du generell die Kommunikation mit deinem Gerät testen:
[
attachment=40794]
In LabVIEW kannst du dir am besten das 'Basic Serial Read and Write'-Vi im Examplefinder ansehen
Beste Grüße,
NWO
Danke erstmal,
also mit VISA schein es zu gehen
Jedoch versteh ich etwas nicht so ganz.
Ich hab das Beispielprogramm "Serial Write and Read" genommen.
Da kann ich den Com-Port, Baud rate, usw. alles einstellen und hab ein kleines Fenster "read String" welches mir meine Werte anzeigen soll. Desweiteren noch eine Anzeige " bytes read".
Ich bin jetzt ein wenig verwirt,
wenn ich das Programm starte sollte es mir doch 1 Wert anzeigen(der ausgelen wird), es Zeit mir jedoch immer mehrere Werte (2 oder 3) bei "read String" an und bei "bytes read" auch immer Werte zwischen 9 und 12.
meine baudrate ist 9600, data bits 8, parity one, stop bit 1.
Kann mirjemand sagen was ich falsch mache?
Ich hab mal versuch ein Beispielprogramm für meinen Zweck zu verändern, was auch funktioniert und die Werte werden in einem String ausgelsen
Ich komme jetzt nur leider nicht mehr weiter
Vieleicht könnt ihr mir ja ein wenig auf die Sprünge helfen.
Mein Vorhaben ist eigentlich die Messwerte von einem analog Sensor, welcher mit dem DQA-Assistenten eingebunden ist (Bild 1) mit mit den Messwerten eines Digitalen Sensors (welcher die Daten über den COM-Port an den Pc sendet) zu vergleichen.
Das Programm für den analogen Sensor habe ich schon (Bild 1) in das Programm würde ich nun gerne noch den Digitalen Sensor via VISA einbinden um beide in eimem Graphen anzeigen zu können.
In meinem Programm für den Digitalen Sensor (Bild 2) habe ich mal versucht den String in einen Zahlenwert umzuwandeln.
Könnt ihr mir sagen was ich machen muss um die Werte (welche ich mit VISA auslese) in einem Graphen anzeigen zu können?
Ich muss ja für beide Signale (analog Senso/digitaler Sensor) die Gleiche Abtastrate haben damit ich die Werte vergleichen kann, für den analogen Sensor stell ich es ja im DQA-Assistenten ein aber wie kann ich das beim auslesen mit VISA ? über die Baud-rathe?
Gruß,
Peter
Hallo Peter,
Zitat:In meinem Programm für den Digitalen Sensor (Bild 2) habe ich mal versucht den String in einen Zahlenwert umzuwandeln. Könnt ihr mir sagen was ich machen muss um die Werte (welche ich mit VISA auslese) in einem Graphen anzeigen zu können?
Dazu müsste man wissen, wie der "read string" so aussieht. Das zeigst du uns leider nicht...
Allgemein: Ich verwende gern ScanFromString für solche Aufgaben.
Zitat:Ich muss ja für beide Signale (analog Senso/digitaler Sensor) die Gleiche Abtastrate haben damit ich die Werte vergleichen kann, für den analogen Sensor stell ich es ja im DQA-Assistenten ein aber wie kann ich das beim auslesen mit VISA ? über die Baud-rathe?
Du bringst da was durcheinander. Beim (NI-)DAQ kannst du die Samplerate vorgeben. Bei Daten, die über den seriellen Port gelesen werden, bestimmt der Sender die "Samplerate" (hier: "dein Atmel"). Du kannst nicht einfach auf PC-Seite die Baudrate ändern, dann würde die Kommunikation nicht funktionieren! Du kannst aber gerne die Programmierung des Atmel ändern, sodass dieser bei einer höheren Baudrate arbeitet und öfter Werte sendet...
Trotzdem wirst du kaum identische Sampleraten für beide Messwege hinbekommen. Deshalb: Verwende parallele Schleifen. Speicher die Werte beider Messungen zwischen. Vergleiche immer den gerade gespeicherten (und damit "aktuellen") Wert miteinander...
Hallo GerdW,
danke für deine Antwort.
Zitat:Zitat:Ich muss ja für beide Signale (analog Senso/digitaler Sensor) die Gleiche Abtastrate haben damit ich die Werte vergleichen kann, für den analogen Sensor stell ich es ja im DQA-Assistenten ein aber wie kann ich das beim auslesen mit VISA ? über die Baud-rathe?
Du bringst da was durcheinander. Beim (NI-)DAQ kannst du die Samplerate vorgeben. Bei Daten, die über den seriellen Port gelesen werden, bestimmt der Sender die "Samplerate" (hier: "dein Atmel"). Du kannst nicht einfach auf PC-Seite die Baudrate ändern, dann würde die Kommunikation nicht funktionieren! Du kannst aber gerne die Programmierung des Atmel ändern, sodass dieser bei einer höheren Baudrate arbeitet und öfter Werte sendet...
Ja da hab ich wohl was durcheinader gebracht, klar das stell ich natürlich bei meinem Atmelcontroller ein.
Zitat:Trotzdem wirst du kaum identische Sampleraten für beide Messwege hinbekommen. Deshalb: Verwende parallele Schleifen. Speicher die Werte beider Messungen zwischen. Vergleiche immer den gerade gespeicherten (und damit "aktuellen") Wert miteinander...
Kannst du mir das ein wenig genaur beschreiben?
Das Probelm ist ja eigentlich dass ich die Werte zur selben Zeit bekommen sollte und sie miteinader zu vergleichen.
Wie bau ich den eine Schleife mit Speicher?
Wenn ich die gerade gespeicherten Werte mit einader vergleiche sind dich doch trozdem nicht synchron oder?
Gruß,
Peter
Hallo Peter,
du musst für dich erstmal "synchron" definieren. Du hast zwei verschiedene Messkanäle, die komplett anders arbeiten und (wahrscheinlich) nicht miteinander (per Hardware!) synchronisiert werden können.
Deshalb mein Vorschlag: merke dir für jeden Kanal den aktuellen Messwert und vergleiche diese "gemerkten" Werte miteinander. Für den Anfang sollten zwei globale Variablen als "Speicher" für diese zwei Messwerte ausreichen. Die beiden Erfassungen und der Vergleich sollten in 3 parallelen Schleifen laufen...
Zitat:du musst für dich erstmal "synchron" definieren. Du hast zwei verschiedene Messkanäle, die komplett anders arbeiten und (wahrscheinlich) nicht miteinander (per Hardware!) synchronisiert werden können.
Ja genau, und ich weiß ja auch nicht wie lange die jeweilige Hardware braucht um das Signal zu verarbeiten und an den Pc zu übergeben.
Dadurch bekomme ich ja die Werte von den 2vSensorenZeitversetzt zueinander.
Hab ich dein Vorschlag richtig verstanden ich soll beide Sensoren eine Zeit X aufzeichnen, und danach die Aufezeicheeten Zeitbereiche (zb. in einem Graph) so übereinader legen das es Synchron ist?
Das synchronisieren muss ich ja dann im nachhinen Manuel vornem, oder sind dafür die 3 Schleifen gedacht (sorry das mit dem Schleifen ist mir immer noch nicht ganz klar
Gruß,
Peter
Hallo Peter,
du kannst gerne noch Timestamps mitspeichern, wenn du das für nötig hälst.
Meine einfache Lösung im Anhang:
Zwei Schleifen erledigen den schnellen und langsamen DAQ. Die dritte Schleife vergleicht den jeweils aktuellen Wert beider DAQ-Schleifen miteinander. Für's erste Verstehen habe ich "nur" lokale Variablen als "Speicher" verwendet, auch hier kann man sich beliebig komplizierte Strukturen ausdenken (globale Variablen hatte ich schon genannt, aber FGV/Melder/etc gehen auch)... (Zum Beenden den Stopp-Button länger als 250ms gedrückt halten
)