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 

Datenkommunikation mit µC



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!

13.01.2011, 16:44
Beitrag #1

Herby07 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Mar 2010

2011
2010
kA


Deutschland
Datenkommunikation mit µC
Hallo,
ich bin gerade dabei, eine Datenübertragung zw. LV (2009) und einem µC zu realisieren.

Zu Anfang etwas ganz einfaches:
LV sendet ein Zeichen (ein Byte) an den µC, der µC antwortet darauf hin mit einem simulierten Messwert (ein Byte) und wartet auf das nächste Zeichen von LV, antwortet wieder usw.
Nach jedem Durchlauf macht LV eine kleine Pause von 1 ms.

Soweit scheint alles zu funktionieren.

Aber: wenn das Programm so einige Minuten läuft und ich am µC der Rest-Knopf drücke und festhalte, so hört der µC ja auf zu senden.
Aber LV empfängt (scheinbar) noch einige Zeit (2-3 Sekunden) weiter Daten bzw. zeigt eben noch einen Datenstrom an, obwohl der µC gar nicht mehr reagiert.
Woher bekommt LV diese Daten ?

Im Anhang habe ich einmal das VI gepackt.

Vielen Dank für die Hilfe,
Herby


Angehängte Datei(en)
Sonstige .vi  ss___7___test_2.vi (Größe: 14,32 KB / Downloads: 174)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 17:06 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2011 17:07 von Lucki.)
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Datenkommunikation mit µC
Der Empfangsbuffer ist z.B 1 kByte groß. Du sendest ein Zeichen an den PC und liest anschließend sofort ein Zeichen aus dem Empfangspuffer. Das kann gut gehen, aber falls der µC mal ein paar Zeichen zu viel gesendet hat, wird der Empfangspuffer nie mehr leer und das Byte welches du empfängst ist nicht das was der µC als Antwort gesendet hat. Bist Du Dir denn sicher, daß der µC nur ein Byte sendet, oder schickt er z.B immer noch ein Abschlußzeichen hinterher?

Wenn es aber nur 1 Byte ist, dann mach einfach folgendes:
Vor dem Aufruf zum PC senden füge das VI "VISA IO Puffer leeren" ein und leere den Empfangspuffer vor jedem µC-Aufruf.
Wenn das nicht hilft --> melde Dich.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 17:12
Beitrag #3

Herby07 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Mar 2010

2011
2010
kA


Deutschland
Datenkommunikation mit µC
Hallo Lucki,
die Sache mit dem Empfangspuffer ist mir auch schon durch den Kopf gegangen.
Da ich aber den µC auch selber programmiere, ist wirklich sicher gestellt, daß er nur ein Zeichen sendet.

Und da das Ganz ja wie im Ping-Pong-Verfahren abläuft, kann im Empfangsbuffer wirklich nur immer ein Zeichen stehen und der Buffer eigentlich nie überlaufen !

Ist denn mit dem VI so alles in Ordnung (ich arbeite erst seit ca. 6 Wochen intensiv mit LV) ?

Vielen Dank,
Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 17:46 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2011 17:48 von Herby07.)
Beitrag #4

Herby07 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Mar 2010

2011
2010
kA


Deutschland
Datenkommunikation mit µC
Hallo Lucki,
das mit dem "VISA I/O Puffer leeren" scheint zu funktionieren.

Ich habe auch einmal überprüft, ob wirklich nicht mehr Zeichen vom µC gesendet werden:
dazu habe ich bei der Funktion "VISA lesen" einfach die Byte-Anzahl, die eingelesen werden soll von 1 auf 2 erhöht.
Dann müßte das Programm ja auch laufen, wenn mehr als ein Byte empfangen wird.
Das war aber nicht der Fall: LV hat sich dabei mit einem Time-Out-Fehler gemeldet, daß das zweite Byte eben nicht angekommen ist.
Es wird also wirklich nur ein Byte vom µC gesendet und auch von LV empfangen.

Warum dann aber nach einiger Zeit der Puffer aufgefüllt wird, ist mir ein Rätsel.

Kann man sich unter LV den gesamten Puffer ansehen ?

Wenn ich im Blockdiagramm mit einer Sonde an den Read Buffer - Ausgang von "VISA:lesen" gehe, seh ich immer nur daß wirklich auch nur eine Byte im Buffer steht.

Vielen Dank
Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 19:38 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2011 19:39 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Datenkommunikation mit µC
Ist das Vi in Ordnung? im Prinzip ja.
Kritikpunkte:
Das Umwanden des 1-Zeichen String in ein Byte ist etwas zu umständlich geraten, so geht es auch:
   
Ein Übertragungsfehler kann schon mal vorkommen. ich würde einen auftretenden Fehler lieber so behandeln, daß dann die empfangenen Daten ignoriert werden, aber nicht dass das ganze VI deswegen gestoppt wird oder ein Dialog geführt werden muß.
Bei der Initialisierung der Schnittstelle sollt TermChar deaktiviert sein. Defaultmäßig ist das nicht der Fall.

Andere Methode das Einlesens: Nicht den Einganspuffer löschen, sondern:
Befehl an µC senden
Einige ms warten, (bis Antwort da sein müßte)
Anzahl der Bytes im Buffer feststellen (mit VISA Bytes am seriellen Port)
Die gefunden Anzahl an Visa Read anschließen und alle Bytes auslesen.

Wichtig: Die Anzahl überwachen. Sollte die Anzahl manchmal ungleich 1 sein, dann ganz großen Alarm auslösen und analysieren warum und wieso.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 19:59
Beitrag #6

Herby07 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Mar 2010

2011
2010
kA


Deutschland
Datenkommunikation mit µC
Hallo Lucki,

die Umwandlung String in Byte werde ich ändern.

Ich nehme an, mit TermChar meinst Du das Abschlußkennzeichen bei der Datenübertragung.
Die Überprüfung darauf habe ich aber deaktiviert, so brauche ich dort eigentlich nichts anzugeben.

Die Überprüfung von DÜ-Fehlern werde ich noch optimieren.
Mir ging es zur Zeit nur darum, zu klären, wo die "Phantom-Daten" herkommen.
Der µC sendet definitiv wirklich nur ein Byte aus.

Ich habe jetzt einmal beide VIs laufen lassen:

Beim VI OHNE Puffer-Löschung erhalte ich nach ca. 1 Stunde die Fehlermeldung, daß "irgendetwas" übergleaufen ist, daß Zeichen nicht rechtzeitig abgeholt worden sind.

Das VI MIT Puffer-Löschung läuft zur Zeit problemlos im Dauerbetrieb.

Ich werde aber auch noch einmal die Sache mit der aktuellen Puffer-Größen-Überprüfung durchführen.

Vielen Dank erst einmal für Dein Tipps !!Rolleyes

Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.01.2011, 09:00 (Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2011 09:11 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Datenkommunikation mit µC
Den Langzeittest mit Puffer entleeren würde ich noch so modifizieren:
   
Vor dem Kommando werden die Bytes at Port festgestellt und gegebenenfalls gelesen. Die eigentlich nicht sein dürfenden Bytes werden alle in einem Array gesammelt und stehen für Analysezwecke zur Verfügung.
Es war ein Versehen von mir, daß die Funktion "Puffer entleeren" im Bild noch drin ist. Der Puffer ist ja durch das vorangegangene Auslesen aller Bytes bereits geleert.
Man kann es auch so machen, daß man den Case an "Bytes at Port" anschließt und "Visa Read" nur bei >0 Bytes ausführt:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Serielle Datenkommunikation quiddi 2 3.772 17.10.2013 11:59
Letzter Beitrag: Y-P
  Probleme bei der Datenkommunikation mit serieller Schnittstelle Prama 9 8.364 26.02.2013 10:02
Letzter Beitrag: Prama

Gehe zu: