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!
(01.09.2011 15:03 )jg schrieb: Naja, wenn du "global" mit 0 initialisiert, alle deine Messwerte aber größer Null sind, wie soll dann der Vergleicher ein Minimum größer 0 erkennen?
Also, das Schieberegister mit der Minimumssuche gehört mit einer sehr großen (im Idealfall +unendlich) initialisiert (vgl. #11 von Gerd).
Gruß, Jens
Hallo Leute,
vielen dank für die viele hinweise und Vorschlage...das Mit der Max und Min Funktionniert mittleweile(Beitrag # 3 und #11 waren sehr hilfreich).
jetzt habe Schwierigkeiten mit der 'Zeit Einstellung'.
Ich versuche es mit ienen Flussdiagramm darzustellen.
Start gedrueckt ---> Ja----> Messung starten (Läuft bis gesamte Messdauer )--> (Sensor überträgt Anzahl messwerte in einer bestimmte zeit(Beides einstellbar)).
Abbruchbedingung ist die Stop Taste...
leider habe viel versucht aber keine Brauchbare lösung hat funktionniert und bekomme manschmal Visa fehler(zeitüberschreibung....->fuge morgen einen screeshoot des Fehles).
wär echt spitze wenn mir das jemand erklären könnte, ich zweifel grad echt an mir selbst...
Anbei meine Last VI...
Gruß Lebig
Anzeige
05.09.2011, 12:34 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2011 08:38 von Lucki.)
Wenn Du mich fragst: Die Kombination "Bytes at Port" --> "Lesen dieser Bytes" ist, wenn es um das Lesen von Daten geht, immer eine wackelige Konstruktion, wenn es denn überhaupt funktioniert. Denn Du willst ja nicht irgendwelche Bytes lesen, die zu einem bestimmten Moment zufällig im Empfangspuffer sind, sondern man möchte immer genau diejenigen Bytes lesen, die zu einem volständigen Datensatz gehören. Das erreicht man so nicht.
Vorschlag: Poste mal den erwarteten String, dann kann man Dir auch sagen wie man es machen kann. Vorweg sei gesagt, daß es optimal wäre, wenn jeder Datenstring mit einem Abschlußzeichen, also z.B "\n", enden würde.
06.09.2011, 13:08 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2011 13:35 von lebig.)
(05.09.2011 12:34 )Lucki schrieb: Wenn Du mich fragst: Die Kombination "Bytes at Port" --> "Lesen dieser Bytes" ist, wenn es um das Lesen von Daten geht, immer eine wackelige Konstruktion, wenn es denn überhaupt funktioniert. Denn Du willst ja nicht irgendwelche Bytes lesen, die zu ein einem bestimmten Moment zufällig im Empfangspuffer sind, sondern man möchte immer genau diejenigen Bytes lesen, die zu einem volständigen Datensatz gehören. Das erreicht man so nicht.
Vorschlag: Poste mal den erwarteten String, dann kann man Dir auch sagen wie man es machen kann. Vorweg sei gesagt, daß es optimal wäre, wenn jeder Datenstring mit einem Abschlußzeichen, also z.B "\n", enden würde.
Servus Lucki,
also habe nochmal das thema "Bytes at Port" angeschaut und es kommt diesen String: "+1.32e-3\r\n" oder "+1.173e-5\r\n"
(Anbei einfacher bsp Rs232 lesen mit Snippet und empfangene Text datei).
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Messgerät über RS-232 ansteuern
Kommen kann ich leider nicht.
Spaß beiseite: Was ist Dein Problem mit den Strings?
Gruß Markus
(06.09.2011 13:08 )lebig schrieb: hoffe ihr kommt mich helfen
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Also wenn du mich fragst sind das deine Werte die gelesen wurden plus Steuerzeichen wie sie beispielsweise in C zur formatierung der Ausgabe benutzt werden.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Messgerät über RS-232 ansteuern
Was hat aber Beitrag #21 mit Beitrag #23 zu tun?
In Beitrag #23 schreibst Du, dass Du Werte erhältst, in Beitrag #21 schreibst Du, dass Du Probleme mit der Kommunikation hast.
Gruß Markus
EDIT: Darum gehe ich davon aus, dass Beitrag #21 erledigt ist, wenn Du in Beitrag #23 schon Werte erhältst.
(06.09.2011 13:39 )lebig schrieb: bitte beitrag #21 lesen(Da ist my Problem erklärt)
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
07.09.2011, 07:02 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2011 07:24 von jg.)
So, erst mal wegen der VISA-Zeitüberschreitungen, stell mal das Lesen um:
Da deine Nachrichten IMMER mit einem \r\n enden, kannst du bei VISA-Read einfach eine "große" Zahl bei der Anzahl der Bytes einstellen, und stattdessen auf den Termination-Char warten.
Das hast du (zufälligerweise oder auch absichtlich) schon so konfiguriert.
VISA-Read wartet jetzt solange auf Zeichen, bis es den Termination-Char findet ODER bis die Anzahl der gewünschten Bytes dar ist.
Zusätzlich solltest du noch mögliche fehlerhafte Übertragungen abfangen. Es ist nicht ungewöhnlich, dass mal über RS-232 eine Nachricht ausbleibt. Das muss man halt entsprechend berücksichtigen.
Gruß, Jens
EDIT: Zum Problem aus Frage #21:
So weit ich bisher aus deinem Code schließe, überträgt dein Sensor einfach unaufgefordert immer wieder seinen Messwert. Da du an dieser Rate nichts einstellen kannst, macht es auch keinen Sinn, einen Wert "Pro Zeit [Min]" einzugeben.
Du musst dich also entscheiden: Soll eine Messung eine gewisse Zeit dauern oder x Werte erfassen? Alternativ könnte man noch beide Bedingungen per ODER verknüpfen.
EDIT 2: Das könnte z.B. so aussehen:
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Also ich schließe mich der Antwort von Jens an und empfehle, alle anderen Einlese-Experimente ad Acta zu legen.
Wenn unaufgefordert und kontinuierlich gesendet wird, mußt Du natürlich jeden Wert auch empfangen, damit der Empfangspuffer nicht überläuft. Du muß aber nicht jeden Wert speichern. Wenn Du nur einen Wert pro Minute haben willst, dann verwendest Du eben nur einen Wert pro Minute zum Speichern. Hilfreich dafür wäre z.B. das VI "Verstrichene Zeit": Immer wenn die verstrichene Zeit true ist, wird der Wert nicht nur empfangen, sondern auch verwendet. (Ich selbst würde es allerdings nicht so machen. Ich nutze jede Chance zur Mittelwertbildung. Hier würde ich aus den Werten von einer Minute den Mittelwert bilden und diesen Wert speichern)
(07.09.2011 08:59 )Lucki schrieb: Also ich schließe mich der Antwort von Jens an und empfehle, alle anderen Einlese-Experimente ad Acta zu legen.
Wenn unaufgefordert und kontinuierlich gesendet wird, mußt Du natürlich jeden Wert auch empfangen, damit der Empfangspuffer nicht überläuft. Du muß aber nicht jeden Wert speichern. Wenn Du nur einen Wert pro Minute haben willst, dann verwendest Du eben nur einen Wert pro Minute zum Speichern. Hilfreich dafür wäre z.B. das VI "Verstrichene Zeit": Immer wenn die verstrichene Zeit true ist, wird der Wert nicht nur empfangen, sondern auch verwendet. (Ich selbst würde es allerdings nicht so machen. Ich nutze jede Chance zur Mittelwertbildung. Hier würde ich aus den Werten von einer Minute den Mittelwert bilden und diesen Wert speichern)
Hallo Jungs,
vielen dank für die vielen Vorschlage.Probiere es mal gleich mit #28 und #29 und spreche auch mit dem Betreuer über die Projekt Vorgaben.
Melde mich nochmal.
Toller Forum und danke für die Blitzartigen Antworte