INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Datenverlust beim RS232 auslesen



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!

20.04.2012, 08:40
Beitrag #1

Dominator Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Apr 2012

8.2
-
EN



Datenverlust beim RS232 auslesen
Hallo Leute,

mittlerweile läuft meine Routine nach einigen LabView Startschwierigkeiten ganz gut.
Ich habe jedoch ein Problem, welches ich und auch die anderen hier im Büro mit etwas LabView-Erfahrung nicht in den Griff bekommen.

Es geht um folgendes:
Ich kommuniziere über die RS232 mit einem MotionController der Firma Faulhaber + angeschlossener Motor.
Dabei gebe ich den Wert für die Geschwindigkeit vor und lese Regelmäßig den aktuellen Motorstrom sowie die Positionssignale der Hallsensoren des Motors aus. Funktioniert eigentlich alles Problemlos.
ABER: Ich habe, völlig unreglemäßig, mal alternierend, mal kurzfristig, mal länger, das Problem, dass mir beim Auslesen (oder danach vielleicht?) Teile des Strings den der Controller als Antwort zurück gibt fehlen. Um genau zu sein immer das erste ASCII-Zeichen. Schön zu beobachten ist das im Stillstand, wenn das Positionssignal konstant bleibt. Wenn mir der Controller also Position 9871276 übermittelt, wird oftmals nur 871276 ausgelesen. Der Wert wird mit der Sensor-Auflösung und der Getriebe-Übersetzung verrechnet. Meine Anzeige springt dann zb. zwischen 30 und 120 hin und her. Beim Strom das Selbe: Ich habe 120mA und hüpfe durch Verlust des ersten Zeichens zwischen 120 und 20 hin und her. Und das eben völlig nicht nachvollziehbar. Ich starte und hab keinen Fehler. Starte nochmal und hab einen. Dann passierts mal nur am Strom, dann nur bei der Position, manchmal auch beide... Manchmal scheint es sich zu ändern, wenn man die Position der Abfragen in der Flat Sequence Structure ändert. Beim nächsten Start ists wieder anders.

Ich habe die Sache soweit zurück verfolgt, dass ich weiß, dass bereits der "VISA Read" den Fehlerhaften String ausgibt.
Ich habe die Abfrage auch schon auf 2 verschieden Art und Weisen probiert, einmal selbstgebaute Sequenz und einmal einen Teil eingebaut, den ein Kollege mal von Faulhaber bekommen hatte. Beide haben das selbe Problem.

Wenn ich aber die Sequenz alleine in einem VI laufen lasse und mir z.B. nur den Positionswert hole ohne Nebenberechnungen, andere Abfragen etc., dann funktioniert es. Meistens zumindest.

Und, was immer funktioniert, ist die Abfrage mit der speziellen Software von Faulhaber. Es kann also eigentlich werder am MotionController noch an der Schnittstelle selber liegen.
Ich würd ja die Software beuntzen, aber die kann zu wenig, weswegen wir überhaupt erst auf Labview gegangen sind.

Wäre nett, wenn mir jmd ein paar Tips hätte.
Ist das Abfragen der Werte abhänig von der "Durchlauf-Frequenz" der Routine? Soweit ich weiß, meldet die Schnitstelle ja einfach nur, das Daten da sind und Labview hohlt das entsprechende Paket ab.

Grüße
Dominik


Angehängte Datei(en)
0.0 .rar  VI\'s.rar (Größe: 139,02 KB / Downloads: 299)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 09:41 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2012 09:43 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Datenverlust beim RS232 auslesen
Hallo Dominator,

dein VI bedarf mMn einer gründlichen Aufräumaktion...

Ich würde dir zu einer Statemachine raten, außerdem sind diese ganzen (quasi)parallelen Zugriffe auf eine Resource (hier: RS232) nicht so das Gelbe vom Ei. Unfein ist es auch, die Schnittstelle mittendrin zu schließen wie in dieser (unsinnigen, weil nur einmal durchlaufenden) Schleife zur Geschwindigkeitsabfrage.

Zitat:Ist das Abfragen der Werte abhänig von der "Durchlauf-Frequenz" der Routine? Soweit ich weiß, meldet die Schnitstelle ja einfach nur, das Daten da sind und Labview hohlt das entsprechende Paket ab.
Jein. Wenn du zu langsam abfragst, ist irgendwann der Lesebuffer voll...

Was soll das hier:
   
Das ist RubeGoldberg vom Allerfeinsten:
- Wenn Bool2=TRUE dann FALSE sonst TRUE
- Bools in DBL (!) umwandeln
- DBL-Werte verrechnen (in einer FormulaNode!), um boolschen Wert, verpackt als INT32 zu erhalten
- INT32 dann wieder zu BOOL umwandeln und dabei auch gleich noch negieren
Wieso nicht einfach: z = NOT(B1 AND NOT(B2)) in schöner einfacher boolscher Algebra, die in LabVIEW mit einer einzigen Compound-Arithmetik-Node abgebildet werden kann... So z.B.:
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 10:39
Beitrag #3

Dominator Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Apr 2012

8.2
-
EN



RE: Datenverlust beim RS232 auslesen
(20.04.2012 09:41 )GerdW schrieb:  Hallo Dominator,

dein VI bedarf mMn einer gründlichen Aufräumaktion...

Ich würde dir zu einer Statemachine raten, außerdem sind diese ganzen (quasi)parallelen Zugriffe auf eine Resource (hier: RS232) nicht so das Gelbe vom Ei. Unfein ist es auch, die Schnittstelle mittendrin zu schließen wie in dieser (unsinnigen, weil nur einmal durchlaufenden) Schleife zur Geschwindigkeitsabfrage.

Hallo Gerd,

danke erstmal fürs Durchschauen!

Also dafür, dass ich vor ner Woche mit Labview angefange habe, find ichs gar nicht so schlimm Big Grin Wink
Auch wenn das bestimmt einfacher und ordentlicher geht, aber Profi in ner Woche is nich Wink Sad
Von dem was ich bis jetzt so gesehen habe, wäre diese Event-Struktur was feines... Gibts aber nicht im "Base-Pack".

State Machine... ich hab das mal gegoogelt, was konkret das für mich bedeuten soll... Naja ;D Hab mich schon mal schlauer gefühlt Big Grin

Also das einmalige Schließen und die Schleife hab ich rausgekickt. Ach ja, ich setzte die Geschwindigkeit, frage sie nicht ab.
Das mit den Aufrufen ist so ne Sache. Ich muss eben 2 mal aufrufen, weil der blöde MotionController das so will. Ich schick ihm den nen Befehl und bekomm die Antwort. Ich brauch regelmäßig Position und Stromstärke. Und ich kann nicht beides auf einmal abfragen, der liefert dann nur ne Rückgabe auf den ersten Befehl. Wenn ich Strom und Position beides gleichzeitig abfrage (mit: pos grc) bekomm ich z.B. nur die Antwort für pos. Deswegen das mehrmalige Zugreifen.

(20.04.2012 09:41 )GerdW schrieb:  
Zitat:Ist das Abfragen der Werte abhänig von der "Durchlauf-Frequenz" der Routine? Soweit ich weiß, meldet die Schnitstelle ja einfach nur, das Daten da sind und Labview hohlt das entsprechende Paket ab.
Jein. Wenn du zu langsam abfragst, ist irgendwann der Lesebuffer voll...

Hm, ok. Meine Routine läuft in der Tat ar***lahm. 2-3 Durchgänge pro Sekunde.
Denkst du, das wird durch's aufräumen besser?
Oder gibts da andere Tricks? Ich mein, das System ist kaum ausgelastet, also sollte theoretisch doch auch noch mehr gehn.

(20.04.2012 09:41 )GerdW schrieb:  Was soll das hier:

Das ist RubeGoldberg vom Allerfeinsten:
- Wenn Bool2=TRUE dann FALSE sonst TRUE
- Bools in DBL (!) umwandeln
- DBL-Werte verrechnen (in einer FormulaNode!), um boolschen Wert, verpackt als INT32 zu erhalten
- INT32 dann wieder zu BOOL umwandeln und dabei auch gleich noch negieren
Wieso nicht einfach: z = NOT(B1 AND NOT(B2)) in schöner einfacher boolscher Algebra, die in LabVIEW mit einer einzigen Compound-Arithmetik-Node abgebildet werden kann... So z.B.:

Big Grin Jaaaa, was soll ich sagen. Ich wusste nich, dass es dieses nette Instrument gibt. Bzw. das dieses Symbol genau das macht, was ich will. Aber hey... ich habs mir selber ausgedacht und es hat funktioniert!! Wink
Aber ich habs jetzt auch geändert, sieht deutlich schöner aus jetzt Wink
Danke für den Tipp.

Aber so was ganz konkretes, wie "mach das und das" dann hast du den fehler nicht mehr fällt dir nicht ein? Blush

Liebe Grüße
Dominik
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2012, 14:43
Beitrag #4

Dominator Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Apr 2012

8.2
-
EN



RE: Datenverlust beim RS232 auslesen
Hey Gerd,

also an der Software liegts nicht. Wir waren grad im Labor an nem anderen Rechner, da funktioniert alles Problemlos ohne Fehler. Big Grin

Gruß
Dome
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  RS232 - Rückgabewerte auslesen Kaya 8 4.833 24.10.2023 14:28
Letzter Beitrag: GerdW
  Auslesen RS232 M.M.H. 3 5.374 12.11.2021 09:23
Letzter Beitrag: M.M.H.
  VISA: I/O Fehler beim Auslesen einer seriellen Schnittstelle konne 5 7.668 19.07.2017 13:04
Letzter Beitrag: konne
  Servomex Messwerte auslesen über RS232/RS485 Chefkoch 6 9.446 18.07.2016 13:54
Letzter Beitrag: jg
  Keithley K2000 über RS232 auslesen Alpenpower 6 14.259 09.09.2013 07:55
Letzter Beitrag: GerdW
  RS232 Schnitstelle auslesen mit VISA cRyo 2 13.513 09.07.2012 14:57
Letzter Beitrag: cRyo

Gehe zu: