02.02.2006, 16:16
Beitrag #1
|
bemecha
LVF-Grünschnabel
Beiträge: 49
Registriert seit: Aug 2005
kA
|
Seriell Daten empfangen und auswerten
Hi Zusammen,
ich hab ein problem, das keine Lösung findet und ich sitz da schon seit Monaten dran und weiß echt nicht weiter. Will bald schon wieder auf C-Programmierung umsteigen um vielleicht das "Problem" besser in den Griff zu bekommen.
Ich hab einen Lasersensor, der über die Serielle Schnittstelle an mein Rechner den Messwert in 2 Bytes sendet. Laut Hersteller ist der Datenstrom kontinuierlich, d.h. ich kann es ständig abfragen. Die Auswertung des Messwertes ist ja kein Problem, aber irgendwie liegen nicht immer 2 Bytes am Eingang der seriellen Schnittstelle an oder zumindest hab ich den Eindruck, dass es so ist. Im gewissen Messbereich des Sensors wird richtig gemessen und sobald ich den Sensor bewege, also den Abstand zum Messobjekt ändere, oder versuche einen Wert an einer Stelle zu lesen, dann bricht die Auswertung zusammen und/oder LabVIEW zeigt irgendeinen komischen Wert an.
Also ich hab den Eindruck, dass es teilweise ein Byte falsch läuft bzw unvollständig und dieser verfälscht dann das ganze.
Tut mir leid für die komische Erklärung - ich wüßte sonst nicht wie ich es beschreiben soll
Komischerweise kann die Herstellersoftware aber alles Problemlos auswerten.
Einige Ingenieure haben mir schon gesagt, dass es sich nach einem Synchronisationsproblem anhört, aber mit "Synchronisation bei VISA" kann ich nix anfangen.
Habt Ihr eine Idee oder hatte jemand schon ein ähnliches Problem?
Danke für eure Mühe
Gruß
thomas
|
|
|
02.02.2006, 16:30
Beitrag #2
|
|
|
02.02.2006, 17:03
Beitrag #3
|
bemecha
LVF-Grünschnabel
Beiträge: 49
Registriert seit: Aug 2005
kA
|
Seriell Daten empfangen und auswerten
Danke und ich ich muss schmunzeln, weil der Sensor wirklich von Leuze ist!
Ich schau gerade mal!
Danke vielmals!!!!
|
|
|
02.02.2006, 17:13
Beitrag #4
|
|
|
02.02.2006, 17:24
Beitrag #5
|
|
|
02.02.2006, 17:47
Beitrag #6
|
A.Berndsen
LVF-Team
Beiträge: 2.437
Registriert seit: Feb 2005
8.2.1 - 2011
2004
DE
724xx
Deutschland
|
Seriell Daten empfangen und auswerten
Ich schau's mir morgen mal an!
Gruß
Andreas
|
|
|
03.02.2006, 18:22
Beitrag #7
|
A.Berndsen
LVF-Team
Beiträge: 2.437
Registriert seit: Feb 2005
8.2.1 - 2011
2004
DE
724xx
Deutschland
|
Seriell Daten empfangen und auswerten
Hallo Thomas,
ich habe den ODS 96 im Einsatz gehabt. Bei dem hat des Programm jedoch tadellos funktioniert.
Anfangs hatte ich auch das Problem, daß von Zeit zu Zeit ein Byte nicht gelesen wurde. Die Abfolge Low-Byte, High-Byte, Low-Byte etc. war dann durcheinander.
Da das niederwertigste Bit anzeigt ob es sich um das High- (1) oder Low-Byte (0) handelt, habe ich da einfach nach diesem Bit verglichen und damit die Zuordnung der gelesenen Werte zu den Schiebeoperation durchgeführt.
Ich hab eben das Datenblatt durchgesehen, die Protokolle sind identisch.
Was mir bei Deinem Programm unklar ist, was der Vergleich kleiner 2847 und größer 8827 bedeutet.
Du parametrierst die serielle Schnittstelle mit 2 Stopbits. Das Protokoll beinhaltet nur 1 Stopbit.
Ich hab leider keinen Sensor mehr hier, sonst hätte ich Dein Programm mal damit laufen lassen.
Aber ganz ehrlich, wie die Hex-Operationen zum Ergebnis führen sollen, ist mir nicht klar. Du hast das c-Beispiel in der Doku bestimmt auch gelesen. Das kannst Du genau so mit LV nach vollziehen.
Gruß
Andreas
|
|
|
05.02.2006, 16:50
Beitrag #8
|
bemecha
LVF-Grünschnabel
Beiträge: 49
Registriert seit: Aug 2005
kA
|
Seriell Daten empfangen und auswerten
Hi Andreas,
das VI ist das erste VI was ich je in LabVIEW geschrieben hab. Das waren die ersten Versuche und damit hab ich es auch hinbekommen den Sensor auszulesen, nur mit einem Problem - dem unseren. sonst war mein Vorgehen, dass ich die 2 bytes splitte, das Low-byte logisch schiebe, die 2bytes wieder richtig zusammensetze und wieder logisch schiebe. So hab ich die "Erkennungs-Bits" für High- & Lowbyte entfernt und das Ergebnis ist der Abstand (ohne Komma). Die nachfolgende Subtraktion von 2500 (25,00mm), sowie die Abfrage auf auf größer 0 und kleiner 2000 (20,00mm) ist nur für das endgültige Anzeigen des Wertes für meine Anwendung gedacht.
Die Abfrage auf kleiner 2847 und größer 8827 ist der MEssbereich des Lasersensors genau 25,00mm bis 45,00mm in Hex-kodiert.
Bin noch ein Newbie und bei der Konfiguration der VISA-serielle Schnittstelle hab ich mir gedacht, dass man 2 Stopbits einstellen muss, weil im Protokoll stand, dass ein Start- & Stopbit verwendet werden.
Wie gesagt - es klappt eigentlich ganz gut außer dass in manchmal richtig komische werte entstehen. Ich hab mich jetzt nochmal gefragt, ob es vielleicht sein könnte ,dass die Fremdlichteinwirkung doch zu groß ist. Man das wäre echt dumm.
Gruß
thomas
|
|
|
| |