LabVIEWForum.de
Probleme bei serieller Übertragung zum MCB2300 (ARM) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Probleme bei serieller Übertragung zum MCB2300 (ARM) (/Thread-Probleme-bei-serieller-Uebertragung-zum-MCB2300-ARM)

Seiten: 1 2


Probleme bei serieller Übertragung zum MCB2300 (ARM) - amin - 26.08.2009 10:01

Hallo,

eigentlich will ich ein 250hz Signal vom PC auf´s MCB2300 übertragen und zurück. Jedoch sind hier alle Versuche bisher gescheitert.
Daher wollte ich jetzt erstmal zur Fehleranalyse ein einfache 25hz Signal (Sägezahn) übertragen, damit ich dieses auch auf dem Board überprüfen kann.
Jetzt habe ich pro Sägezahn (100 Werte) zwischen 3 und 20 Abweichungen vom Sollwert, schon beim Empfang des Boards.

Wäre supernett, wenn jemand mal rüberschauen könnte und eventuell einen Tipp parat hätte.

Gruß & Danke

amin

Lv86_img[attachment=20784]
Lv86_img[attachment=20785]

EDIT: Ergänzend muss ich noch hinzufügen, dass der Lese-Buffer nach längerer Laufzeit irrgendwann immer voll wird (obwohl das nicht der Fall sein dürfte). Und das ich generell das Problem habe, dass ich die PC Seite 2 oder 3 mal neustarten muss, bis das Senden/Empfangen richtig funktioniert. Eventuell hat das ja alles einen Zusammenhang.


Probleme bei serieller Übertragung zum MCB2300 (ARM) - Y-P - 26.08.2009 10:42

In Deinem VI könnte es einige Race-Conditions geben. Vielleicht ist das der Grund. Unsure

Gruß Markus


Probleme bei serieller Übertragung zum MCB2300 (ARM) - amin - 26.08.2009 12:05

Meinst Du jetzt bei der synchronisation von Board und PC. Oder meinst innerhalb des PC Programms ?
Beim Programm habe ich an den Schleifen ja das gleiche Timing von 40ms, so solltes es ja eigentlich bei den einfach Operationen keine Probleme in den Ausführungen der einfachen Operationen geben. Oder hast Du da bestimmte stellen im Auge - bin für jeden Tipp dankbar.

Gruß & Danke

amin


Probleme bei serieller Übertragung zum MCB2300 (ARM) - Y-P - 26.08.2009 12:48

Die ganzen loakeln Variablen werden nur weil Du eine Verzögerung von 40 ms eingetragen hast nicht so abgearbeitet wie Du es erhoffst. Schau' Dir mal Semaphoren,... an.
Hier ein Bsp. von NI, das Dir das verdeutlicht.

[attachment=20796]
Lv86_img

Gruß Markus


Probleme bei serieller Übertragung zum MCB2300 (ARM) - amin - 26.08.2009 14:04

Hallo,

also vielen Dank für das Beispiel.
Also ich habe jetzt mal zum Test nur noch eine PC->MCB2300 Übertragung. So konnte ich auf PC Seite auf die Variablen komplett verzichten. Und auf dem MCB2300 habe ich wie im Beispiel Semaphoren benutzt.
Jedoch gibt´s noch immer genauso viele Fehler wie zuvor.

Hier mal die Files:
Lv86_img[attachment=20808]
Lv86_img[attachment=20807]

Gruß & Danke

amin


Probleme bei serieller Übertragung zum MCB2300 (ARM) - amin - 27.08.2009 10:47

Hallo,

anscheind habe ich eien Fehler bei den Semaphoren gemacht - weis leider nur noch nicht was genau falsch ist.
Zumindest bekomme ich wenn ich einfach nur die Semaphoren weglasse, permanent 4 bis 5 Fehler.
Da aber offenbar shon das weglassen der Variablen auf der PC Seite einen erheblichen Vorteil gebracht hat, könnte ich mir nun gut vorstellen das man auch diese Fehler noch auf der Empfangsseite mit Semaphoren entfernen könnte. Nur weis ich nicht, was ich falsch gemacht habe.

Gruß

amin


Probleme bei serieller Übertragung zum MCB2300 (ARM) - amin - 27.08.2009 13:38

Hallo,

hab das mit den Semaphoren etwas umstruckturiert, jetzt bekomme ich nur noch 2-3 Fehler auf 100 Werte.
Jedoch sollte eigentlich auch eine Fehlerfreie Übertragung möglich sein.

Gruß

amin

Lv86_img[attachment=20844]


Probleme bei serieller Übertragung zum MCB2300 (ARM) - rolfk - 28.08.2009 08:26

' schrieb:Hallo,

hab das mit den Semaphoren etwas umstruckturiert, jetzt bekomme ich nur noch 2-3 Fehler auf 100 Werte.
Jedoch sollte eigentlich auch eine Fehlerfreie Übertragung möglich sein.

Gruß

amin

Lv86_img[attachment=48893:MCB2300_v7t.vi]

Was Du da als Fehler monierst ist ganz einfach fehlende Synchronisation. Einerseits liest Du in einer 4ms Loop neue Werte ein die Du wegschreibst. In einer zweiten Loop liest Du diese Werte mit einem 40 ms Intervall und kontrollierst ob der neue Wert genau 1 grösser ist als der vorige. Wenn dem nicht so ist ist es ein "Fehler". Auf der Host Seite hast Du ein VI das (wahrscheinlich auch mit einem 40ms Timer) jeweils einen neuen Wert schickt. Und nun denkst Du dass 40 ms auf dem Host genau gleich viel ist wie 40ms auf Deinem ARM Controller! O

Wenn Du die Wertepaare bei Deinem Test, immer wenn "Fehler" auftreten, irgendwo sichtbar gemacht hättest, hättest Du gesehen dass entweder bei jedem "Fehler" kein Unterschied war (Deine Testloop ist schneller als die Senderloop auf dem Host) oder einen überspringt (Deine Testloop ist langsamer dann auf dem Host).

Computer sind noch immer nicht standardmässig mit einer Atomuhr verbunden und Dein ARM Controller schon ganz sicher nicht. Dein Test geht ganz einfach von falschen Voraussetzungen aus. Als erstes musst Du mal beide Loops in eine einzige machen. Und dann machst Du Deinen Test in dem Case immer wenn Du 2 Character eingelesen hast. Dann kannst Du das Ganze wahrscheinlich stundenlang ohne "Fehler" laufenlassen.

Rolf Kalbermatter


Probleme bei serieller Übertragung zum MCB2300 (ARM) - amin - 28.08.2009 08:54

Hallo,

vielen vielen vielen Dank.

Hattest mit absolut jeder Aussage recht gehabt. Und jetzt funktioniert´s auch 1A !

Falls später jemand das gleiche Problem haben sollte hier noch das Dank rolfk funktionierende File:
Lv86_img[attachment=20867]

Danke nochmal !

Gruß

amin


Probleme bei serieller Übertragung zum MCB2300 (ARM) - rolfk - 28.08.2009 09:21

Noch eine kleine Verbesserung! Du willst den Case nicht nur ausführen wenn genau 2 Bytes im Buffer sind, sondern immer wenn mindestens 2 Bytes im Buffer sind, dann aber natürlich nur immer 2 Bytes lesen.

Rolf Kalbermatter