Hallo,
ich habe mir zur Aufgabe gemacht für eine kleine Windkraftanlage Drehzahl und Spannung zumessen. Die Messung erfolg über einen Mirkocontroller, der die folgenden Strings an den PC sendet.
Meine Problem liegt darin die strings in einem Graphen darzustellen bei dem Uhrzeit und Datum jeweils die Messwerte zugeordnet werden. Mein string sieht so aus:
!a18:52:36;27.3.2007b30,00c444,0e!a18:52:36;27.3.2007b30,00c444,0e!a18:52:36;27.3.2007b30,00c444,0e...
Hierbei ist ! stringStart hinter a folgt die Uhrzeit und das Datum hinter b folgt 30,00V hinter c 444,0 1/min und e markiert das Ende einer Messung.
Ich habe auch noch die Möglichkeit die Formatierung des Strings zu ändern um die Kommunikation zu erleichtern.
Leider habe ich noch keine sehr umfangreichen Erfahrungen mit Lab View.
vielen Dank für die Hilfe
PS: bisher habe ich versucht auf Basis diese Programms ein Diagramm anzuhängen bin aber an den strings gescheitert.[
attachment=34880]
e als Abschlusszeichen, ungewöhnlich, das könnte auch zur Zahl gehören (Bsp: 1e10).
Typische Abschlusszeichen einer Protokolls sind eher ein Newline oder ein Carriage Return.
Im deinem Fall sollte folgendes VI funktionieren:
[
attachment=34882]
Gruß, Jens
Hallo Kettensäge,
so könnte man die Daten analysieren:
[
attachment=34881]
Unten ein Beispiel, wie man es vereinfachen könnte bei "vernünftig" formatierter µC-Ausgabe: einfach Spaces zwischen den Werten und ein "normales" CR/LF als Endekennzeichen (was auch "schöner" für die serielle Kommunikation ist!)...
(26.07.2011 21:15 )chainsaw schrieb: [ -> ]Ich habe auch noch die Möglichkeit die Formatierung des Strings zu ändern um die Kommunikation zu erleichtern.
Wenn Du in dieser komfortablen Lage bist, den Controller selbst zu kontrollieren, dann würde ich doch vor allem dieses tun:
Diesen seltsamen Einfall mir a,b,c,d als Trennzeichen zwischen den Daten schnell wieder fallen lassen und den String in einem solchen Format zu senden, wie das der Rest der Welt in einem solchen Fall tun würde. Kreativität und Induvidualität kannst Du doch in andern Teilen des Programms durchaus entfalten, aber hier ist wirklich der falsche Platz.
Die String - optimiert für Labview - sähe dann so aus:
[
attachment=34885]
Die Zeichen zwischen Datum und Zeit: Leerzeichen
Die Zeichen zwichen den Daten: Tabulator
Die Zeichen am Ende eines Datensatzes: Zeilenendezeichen
Ein Zeichen für den Datenanfang wird nicht gebraucht.
Fakultativ sind:
- die Reihenfolge von Datum und Zeit. So wie ich es vorgeschlagen habe, ist es der "Ortsübliche Datum-Zeit String", wofür es in Labview ein besonderes einfaches Formatierungszeichen gibt
- Komma oder Punkt als Dezimaltrennzeichen. Ich selbst meide die sog. "französische Notation", wie wir sie leider hier in D haben, und bevorzuge die "angelsächsische Notation"
Die Umwandlung einer Zeile in Zahlendaten vereinfacht sich dann so:
[
attachment=34886]
Hi,
vielen Dank für die schnelle Antwort die allerdings noch ein paar Fragen aufwirft.
Lucki brauche ich für den string kein start zeichen? Was verstehst du unter dem Endzeichen? LF, und was bedeutet das %<%c>T%f%f
Hallo chainsaw,
Zitat:was bedeutet das %<%c>T%f%f
Schon mal die
Anleitung gelesen?
Zitat:brauche ich für den string kein start zeichen?
Nein - du beginnst einfach nach dem ersten Endezeichen mit dem Analysieren der Werte...
Zitat:Was verstehst du unter dem Endzeichen? LF,
LF (oder auch mal CR) sind da die Standardeinstellungen - was dir das SerialInit ja auch sagt...
Hallo,
Danke für den Link und den Wink mit dem Zaunpfahl...
mir werden jetzt Daten im Graph angezeigt. Allerdings entsteht für jeden neuen Wert eine Rampe anstatt einer Line. (Im Anhang ein Bild )
Noch eine Frage habe ich zum Wechsel der Ansicht im Diagramm. Wie kann ich statt mit der numerischen Anzeige, mit Schaltern meine Einzelsignale im Graph zu und abschalten?
In meiner Messstation ist der Mikrokontroller ein autarker Datenspeicher und Datenüberträger. Die Messdaten werden auf einer SD-Karte aufzeichnet solang kein PC angeschlossen ist. Der Mikrokontroller soll quasi zwischen den zwei Zuständen umgeschaltet werden( Speicher auslesen und aktiv Werte ausgeben ). Ich habe versucht das Programm von jg in das meine(zu Beginn gepostete ) Einzubinden um meinem Mirkokontroller auch Daten senden zu können.Leider nimmt es nicht einmal Daten im Graph auf obwohl der empfangene String der gleiche ist ( Kommunikation Wind ). Um meinem Mikrokontroller Daten zusenden muss ich strings, byte für byte an ihn übertragen. Wie realisiere ich so was am einfachsten?
vielen Dank für die Unterstützung
Hier noch mein aktueller String:
!28.07.2011 00:00:14 50,00 35,50 cr
zwischen Datum, Uhrzeit, den Messwerten und dem Endwert ist jeweils 1 Leerzeichen
Hallo chainsaw,
Zitat:Wie kann ich statt mit der numerischen Anzeige, mit Schaltern meine Einzelsignale im Graph zu und abschalten?
Du könntest einen Radiobutton verwenden, siehe Anhang...
(Oder ein Array of booleans, oder einen Cluster of booleans, oder einzelne Buttons, oder ...)
Zitat:Daten zusenden muss ich strings, byte für byte an ihn übertragen.
"VISA Write" erwartet Strings zum Versand...
Hi GerdW,
ich hänge noch an dem Problem mit dem Graph. Es entsteht für jeden Messpunkt im Diagramm eine Rampe. Eigentlich sollten nur Punkte an der Stelle stehen bzw es sollte eine mehr oder weniger waagrechte Linie dargestellt werden. Kann ich die Messpunkt Aneinanderreihung durch Verwendung eines anderen Graphen lösen und wen ja wie und mit welchen Graphen?
Ich habe mir schon die Lab View Beispiele durch gesehen und Versuch sie mit meinem Programm zu kombinieren. Leider war ich bisher erfolglos.
In dem Bild im Anhang werden nur 4 strings eingelesen dh. 4 roten und 4 weiße Messpunkte jeweils am Peak der Linien.
Grüße chainsaw[
attachment=34929]
Hallo chainsaw,
Zitat:Es entsteht für jeden Messpunkt im Diagramm eine Rampe. Eigentlich sollten nur Punkte an der Stelle stehen bzw es sollte eine mehr oder weniger waagrechte Linie dargestellt werden.
Du willst den Boten auswechseln, weil dir die Nachricht nicht gefällt? Was kann der Graph dafür, dass du "schlechte" Messwerte darstellen willst?
Kontrollier doch mal deine Messwerte! Der Graph ist jedenfalls der Meinung, dass du ihm immer wieder mal eine Null zwischendrin als Wert anbietest...