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 

Dieses Thema hat akzeptierte Lösungen:

Daten von Seriellen Port in While-Schleife auswerten



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!

23.10.2015, 14:18
Beitrag #1

Bensch Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2015

14.0 (32 Bit)
2014
DE



Daten von Seriellen Port in While-Schleife auswerten
Moin,

ich möchte gerne einen Motorcontroller über LabVIEW und RS232 ansteuern. Bis jetzt gab es auch noch keine Probleme, die ich nicht über Google oder LabVIEW Beispiele selber lösen konnte. Allerdings stehe ich jetzt vor einem mir unverständlichem Problem. Aber kurz zu dem Projekt und wie ich mir den Ablauf geplant habe:

- Port wird geöffnet
- Kommunikation wird überprüft
- Motorcontroller wird initilisiert
- ab in die While-Schleife und den Status abfragen, da von dem ja die möglichen Aktionen abhängen
- dann kann eine Referenzfahrt (Der Motor treibt einen Schlitten auf einer Lineareinheit bis an den Endlagentaster) durchgeführt werden, was sich auch im Motorcontroller-Status niederschlägt, da es ein Bit gibt welches dann auf High gesetzt wird sobald eine Referenzfahrt erfolgreich ausgeführt wurde
- Sobald der MC referenziert wurde kann man in den Positionierbetrieb wechseln (welchen ich in diesem Beispiel noch nicht eingebaut habe)
- Wenn man das Programm beendet wird noch der Port geschloßen und das wars dann

Ich würde mir gerne den aktuellen Motorcontroller-Status anzeigen lassen, was auch alles funktioniert, allerdings nur im High-Light Modus, welchen ich zur Überprüfung immer benutze. Sobald ich im "normalem" Modus das Programm betreibe wird mir nichts angezeigt und ich habe auch den Eindruck dass die Auswertung der Statusabfrage am Anfang der While-Schleife überhaupt nicht arbeitet.

Das komische ist nun mein Statusauswerter: Hier wird die Antwort vom MC aufgedröhselt und die einzelnen Bits ausgewertet. Wie gesagt, mein Eindruck ist, dass der nur im High-Light Modus arbeitet oder ist das ein Anzeige Problem? Was dafür spricht dass die Auswertung gar nicht stattfindet ist: Im normalen Betrieb fährt der MC den Schlitten immer wieder gegen den Endlagentaster (wenn man den Referenzfahrtschalter gedrückt lässt), was jedoch durch die Abfrage des MC-Status verhindert werden sollte da der MC nach einmaliger Referenzfahrt den Status "referenziert" erhält und die Referenzfahrt dann geblockt sein sollte. Was wiederum im High-Light Modus funktioniert.

Bei der Suche im Forum bin ich leider auf nichts gestoßen was mir tatsächlich hilft, deshalb hoffe ich auf diesem Weg auf eine kleine Hilfestellung.

Achja, ich benutze übrigens LabVIEW 2014

Grüße und Danke im Vorraus
Ben


Angehängte Datei(en)
14.0 .vi  Kommunikationsabfrage.vi (Größe: 12,94 KB / Downloads: 305)

14.0 .vi  Befehlgeber.vi (Größe: 13,4 KB / Downloads: 276)

14.0 .vi  Statusauswerter.vi (Größe: 13,46 KB / Downloads: 293)

14.0 .vi  Versuch2.vi (Größe: 43,64 KB / Downloads: 281)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2015, 14:24 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2015 14:27 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Daten von Seriellen Port in While-Schleife auswerten
Hallo Bensch,

Zitat:was auch alles funktioniert, allerdings nur im High-Light Modus
VI öffnen, Fehler sehen:
   
Wenn TermChar aktiviert ist, dann bitte auch damit arbeiten! Und all die Threads zu Problemen mit der seriellen Schnittstelle lesen: in 99.9% der Fälle wird davon abgeraten, BytesAtPort zu nutzen! (Das gilt sowohl im MainVI als auch in den subVIs.)
(Den Empfangbuffer zu löschen, ist auch selten hilfreich.)

Tipp zum "Statusauswerter":
- die Konstanten am IndexArray sind unnötig
- es wäre hilfreich/schön/sinnvoll, die ganzen boolschen Outputs in einem typdefinierten Cluster zu vereinen und ihnen sinnvolle Namen zu geben…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2015, 14:56
Beitrag #3

Bensch Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2015

14.0 (32 Bit)
2014
DE



RE: Daten von Seriellen Port in While-Schleife auswerten
Hmm ok,

ich werde da nochmal einiges durcharbeiten müssen. Auch weil ich deine Antwort gerade nur bedingt verstehe. Trotzdem schon einmal danke dafür. Da ich mit dem Abschlußzeichen zwischendurch Probleme hatte und nach langem rumprobieren das in der Form funktioniert hat bin ich dabei geblieben. Und sorry, aber das mit dem High-Light Modus will einfach gerade nicht in meinen Kopf rein. We will see...

Ich werde mich hier noch einmal melden wenn es etwas neues gibt bei der Problematik.
Trotzdem erst einmal schönes Wochenende Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2015, 17:06 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2015 17:08 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Daten von Seriellen Port in While-Schleife auswerten

Akzeptierte Lösung

Hallo Bensch,

Zitat:Und sorry, aber das mit dem High-Light Modus will einfach gerade nicht in meinen Kopf rein.
Du hast folgendes programmiert:
- du schreibst einen Befehl in den VISA-Ausgabebuffer
- direkt danach fragst du ab, wieviele Zeichen im VISA-Empfangsbuffer vorhanden sind und liest diese aus

Dummerweise beachtest aber nicht, dass
- das Schreiben in den Ausgabebuffer nicht gleichbedeutend damit ist, das dein externes Gerät diese Zeichen auch "sofort" (innerhalb µs) ausgeliefert bekommt (die Zeit, die nötig ist, kannst du dir über die Baudrate berechnen!)
- dass das Gerät auch noch Zeit zum Beantworten deiner Anfrage benötigt und auch noch Zeit zum Versand der Antwort
- dass der Empfangsbuffer deshalb entweder leer ist oder noch die Antwort auf den vorhergehenden Befehl enthält!

Wenn du dir jetzt dein Programm mit Highlight-Debugging anschaust, läuft alles VIEL langsamer ab: während das Highlight-Debugging noch mit dem Animieren des DATAFLOW beschäftigt ist, kann dein Gerät Daten empfangen, verarbeiten und beantworten! Und du wunderst dich, warum dein Programm in "Echtzeit" nicht funktioniert…

Zitat:Da ich mit dem Abschlußzeichen zwischendurch Probleme hatte
Welcher Art?
Was sagt das Manual deines Gerätes zum TermChar?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.10.2015, 11:28
Beitrag #5

Bensch Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2015

14.0 (32 Bit)
2014
DE



RE: Daten von Seriellen Port in While-Schleife auswerten
Moin,

ja super danke. Blöder Fehler, aber bin ich irgendwie nicht selbst drauf gekommen. Danke dafür!

Das Problem mit dem Abschlißzeichen war nur, dass in der Dokumentation die ich zum Motorcontroller habe ein anderes als das verwendete Abschlußzeichen stand \n statt \r und ich über Putty herausfinden musste warum er die Befehle von Putty akzeptiert und die von LabVIEW nicht. Außerdem habe ich relativ lange gebraucht um zu checken, dass man wenn man Befehlskonstanten schreiben will, die noch per Rechtsklick auf "\"-Antwort umstellen muss. Naja, mühsam ernährt sich das Eichhörnchen. Dickes Danke nochmal für die Hilfe. War ich scheinbar zu blind in dem Moment da einfach noch eine Wartezeit einzubauen zumal ich das in den Befehlgebern ja schon gemacht hatte bzw. da schonmal drauf gekommen war. ^^

Wie gesagt, Danke und Ciao.
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
  VISA: I/O Fehler beim Auslesen einer seriellen Schnittstelle konne 5 7.668 19.07.2017 13:04
Letzter Beitrag: konne
  Alle seriellen Schnittstellen auslesen Exl 1 5.085 01.04.2017 16:41
Letzter Beitrag: GerdW
  Modul am seriellen Port ansprechen Charly82 2 5.943 22.05.2016 07:34
Letzter Beitrag: Charly82
  Problem bei seriellen Schnittstellen gammel 7 7.411 27.10.2014 13:01
Letzter Beitrag: gammel
  Lesen der seriellen Schnittstelle EIA-232 (RS232) AnhTeo 4 7.341 06.09.2011 03:15
Letzter Beitrag: AnhTeo
  Abfrage einer seriellen Schnitstelle! Markus_lab 1 4.822 21.03.2011 11:32
Letzter Beitrag: stecko

Gehe zu: