RS232 Übertragung mit SLIP protokoll - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: RS232 Übertragung mit SLIP protokoll (/Thread-RS232-Uebertragung-mit-SLIP-protokoll) Seiten: 1 2 |
RS232 Übertragung mit SLIP protokoll - IchSelbst - 28.12.2007 17:21 ' schrieb:also ich komm da auf keinen grünen Zweig wie ich es schaffe mir immer ein Byte reinzuholen und dann entsprechend abzuarbeiten. ..Zeig' doch mal, was du programmiert hast. Schön wär ein VI. RS232 Übertragung mit SLIP protokoll - maltejahn - 28.12.2007 20:30 Hallo, ja Dein Programm ist nicht viel gewachsen bis auf eine Funktion die den Port öffnet und eine die vom Port Daten abholt. Trotzdem im Anhang, Version 8.2. RS232 Übertragung mit SLIP protokoll - IchSelbst - 28.12.2007 22:00 ' schrieb:Dein Programm ist nicht viel gewachsen bis auf eine Funktion die den Port öffnetIch hab mal alle Drähte gerade gezogen und weitere Sachen gemacht, die man so machen sollte. Ist denn gewährleistet, dass zwischen dem Öffnen (respektive der Konfiguration) und dem Lesen der Schnittstelle das Endgerät Daten gesendet hat? RS232 Übertragung mit SLIP protokoll - maltejahn - 29.12.2007 13:23 Hallo, das funktioniert. Habe jetzt das ganze noch durch ein "array to cluster" und "unbundle" erweitert um mit den einzelnen Elementen weiter arbeiten zu können. Momentan ist meine Aktualisierungsrate des Mikroprozessors höher als die Zeit die das Programm wartet um Daten zu sammeln. Zum einen ist das gut, da es so nie dazu kommt das die Werte wieder auf null zurückfallen. Andererseits kommt es vor das das Programm so zwei Datensätze sammelt. Eigentlich fast egal, die Elemente sind ja immer noch an ihrer stelle. Nur wird der zweite Datensatz nicht verwertet. Jetzt müsste ich - es so Gestalten das die Daten behalten werden, zumindest für mehrere Zyklen damit die Anzeigen nicht auf null zurückfallen (dies z.B. wenn die Aktualisierungsrate des µC geringer ist als die Zeit um sammeln von LabVIEW) - Wenn das Ende empfangen wurde dann array Löschen. Also hab ich in der While Schleife jedes Element auf 0xC0 überprüft, falls ja, dann Zähler der Schleife zurück auf null. Geht aber leider scheinbar nicht RS232 Übertragung mit SLIP protokoll - IchSelbst - 30.12.2007 10:49 ' schrieb:Jetzt müsste ichz.B. so vorgehen: Ich mach mir ein SubVI, das nichts weiter tut, als die Serielle Schnittstelle zu bearbeiten. Dieses SubVI besteht aus einer Statemachine (guckst du Onlinehilfe von LV bzw. Internet etc.) - eine Statemachine ist eine Whileschleife mit einer Case-Sequenz drinnen. Es gibt da z.B. folgende States: VISA konfiguriueren, VISA öffnen, Daten lesen, VISA schließen, SubVI beenden, etc. Das SubVI selbst wird mittels einer Queue (guckst du wieder Onlinehilfe und Beispiele) gesteuert, d.h. welcher State ausgeführt werden soll, wird von außen über die Queue mitgeteilt. Hauptsächlich wird sich dieses SubVI - das einmalig gestartet wird und dann prinzipiell ewig läuft - sich also im State "Daten lesen" befinden. Immer wenn ein Datensatz gelesen wurde, wird der in eine Queue (oder einen Melder (den wieder nachlesen)) geschrieben und somit ist der Datensatz für die Außenwelt verfügbar. Zitat:das die Daten behalten werden, zumindest für mehrere Zyklen damit die Anzeigen nicht auf null zurückfallen (dies z.B. wenn die Aktualisierungsrate des µC geringer ist als die Zeit um sammeln von LabVIEW)Das kannst du machen, indem du die Daten in einen Melder schreibst. Dort bleiben sie dann stehen, bis sie überschrieben werden. "Herausholen" aus dem Melder tust du sie NICHT mit "Meldedaten lesen" (hiermit würden sie gelöscht werden), sondern mit "Meldestatus lesen" (hiermit sind sie bei jeden Lesen verfügbar). Wenn du die Daten z.B. nur Anzeigen willst, ist ein Melder ausreichend. Wenn du sie z.B. mit einem Timestamp abspeichern willst, würde ich eine Queue nehmen. Queues sind flexibler einsetzbar, bedürfen aber einen ausführlicheren Programmierung. Zitat:Wenn das Ende empfangen wurde dann array Löschen. Also hab ich in der While Schleife jedes Element auf 0xC0 überprüft, falls ja, dann Zähler der Schleife zurück auf null.Das würde im SubVI alles automatisch gehen. Die Sache mit dem SubVI ist aufwändig. Da hab ich bisher keine Lust gehabt, eine Mustervorlage zu erstellen. Aber wer weiß, das Jahr ist ja noch lang. Ich hab mal angefangen, eine Whileschleife zu machen, die praktisch zeichenweise einen Datensatz lesen könnte - nach entsprechendem Ausbau. RS232 Übertragung mit SLIP protokoll - maltejahn - 30.12.2007 15:56 Hallo, leider verstehe ich nicht ganz wie das Programm funktioniert - Die Whileschleife wird alle 5ms ausgeführt - bei weniger als 5 byte 20ms warten, bei mehr auswerten - alle 5ms wird dann das array mit den im Buffer befindlichen Daten zur Auswertung gefüllt - das n elemente des Arrays werden wieder gelöscht Problem ist nur, das ich zum senden (wie ich es eingefügt habe) und zum empfangen jedesmal des Stop Button zum beenden der While schleife drücken muss (wobei das ja selbst erledigt werden sollte ->while schleife). Man herangenesweise wäre gewesen - wobei ich nciht weiß ob es so in LabVIEW abbildbar ist: - lauschen ob auf der RS232 was kommt. - wenn was kommt, dann ab damit in das array - solange füllen bis ein 0xC0 kommt - wenn ein 0xC0 kam, dann auswerten und gleichzeitig das array zurücksetzen Anbei der aktuelle Stand () RS232 Übertragung mit SLIP protokoll - IchSelbst - 30.12.2007 23:34 ' schrieb:eider verstehe ich nicht ganz wie das Programm funktioniertDas macht nichts. - Naja. Eigentlich schon. Aber warte nur, bis du diesen Anhang heruntergeladen hast. Der macht jetzt nämlich das, was du willst (naja größtenteils hoffe ich), so wie ich mir das vorgestellt habe. Zitat:wobei ich nciht weiß ob es so in LabVIEW abbildbar ist:Es gibt nichts - naja vielleicht eher wenig - was nicht in LV abbildbar ist. Zitat:- lauschen ob auf der RS232 was kommt.Das würde wohl auch gehen. Würde aber voraussetzen, dass der Datensatz immer gleich aussieht. Wegen dem nicht explizitem Start. RS232 Übertragung mit SLIP protokoll - IchSelbst - 31.12.2007 18:12 ' schrieb:Anbei der aktuelle StandZwei Sachen möchte ich hierzu anmerken. Erstens: Elemente im Cluster. In deinem Falle kannst du dir einigen Platz im BD sparen, wenn du die jeweils 8 Boolschen Werte in einem Cluster zusammenfasst. Zweitens: Ich empfehle, alles so zu programmieren, dass nirgends die roten Konvertierungspunkte erscheinen. Viele lassen sich ganz einfach dadurch entfernen, indem du die Bedienelemente bzw. Konstanten manuell von Int32 auf double umstellst. An gegebener Stelle kann man auch ein Int32 - in deinem Falle U8 - einfügen (wie du das ja an mehreren Stellen schon praktiziert hast). Nicht immer kommt bei einer automatischen Konvertierung (durch den roten Punkt am Eingang) das heraus, was man haben will. Der Typ der Eingänge sollte immer so sein, wie der Typ des Ausganges respektive des Anzeigeelementes es verlangt. Drittens: Die Forderung, in einem Blockdiagramm nicht mehr zu programmieren als auf eine Bildschimseite passt, ist auf den ersten Blick vielleicht übertrieben. Auf den zweiten - wie in deinem Falle - aber nicht: Die Sache wird einfach übersichtlicher. Wenn man den Bildschirminhalt verschieben muss, nur um ein Wire zu verfolgen, dann wird das mit der Zeit lästiger als mehrere SubVIs zu haben. Berechnungen oder z.B. Whileschleifen mit selbst nur einem Eingang und einem Ausgang sollte man lieber in ein SubVI auslagern. Das Icon hierfür verbraucht erheblich weniger Platz - was der Übersichtlichkeit dient. Entsprechendes gilt eben auch für das Zusammenfassen von Elementen in einem Cluster. RS232 Übertragung mit SLIP protokoll - maltejahn - 01.01.2008 12:15 Oje, das erschlägt. Werde mal versuchen erst die ganzen unter VIs zu verstehen. Das man die Aufgaben in einer großen Endlosschleife bearbeitet ist sicherlich sinnvoll. Aber jetzt muss ich auch noch herausfinden wie ich vom Frontpanel aus auf die "Aln_Klasse" mit dem Datenarray zurückgreifen kann. Zitat:Zweitens:Werde ich versuchen zu beherzigen Zitat:Drittens: Am Anfang tat ich das auch und hab mir so mini VIs z.B. 32Bit in 4x8 Bit wandeln usw. Muss wohl damit wieder anfangen. Aber damit habe ich noch nicht so intensiv gearbeitet. Nebenbei, ein gutes neues und Danke für die Hilfe! Gruß Malte RS232 Übertragung mit SLIP protokoll - IchSelbst - 01.01.2008 15:09 ' schrieb:Aber jetzt muss ich auch noch herausfinden wie ich vom Frontpanel aus auf die "Aln_Klasse" mit dem Datenarray zurückgreifen kann.Indirekt. Eben mittels Queue und/oder Melder. Zitat:Am Anfang tat ich das auch und hab mir so mini VIs z.B. 32Bit in 4x8 Bit wandeln usw. Muss wohl damit wieder anfangen. Aber damit habe ich noch nicht so intensiv gearbeitet.Du kommst früher oder später (eher früher) in Teufels Küche, wenn du's nicht machst. |