Unbekannter Fehler

Specific issues occuring when using TRINAMIC modules with National Instruments LabVIEW

Unbekannter Fehler

Postby Sven Kung » 29 Jul 2011, 14:52

Hallo
Ich arbeite gerade mit den VI's von G_geek und es tritt dabei ein Problem auf. In dem VI soll ein Messwert aufgenommen werden und gleichzeitig wird die aktuelle Position vom Board abgefragt, das geschieht alle 50ms. Allerdings erscheint in unregelmäßigen Abständen eine Fehlermeldung, während der GAP-Block markiert ist. Fehlermeldung lautet wie folgt:
Fehler 1275301 ist bei timeout read data aufgetreten

Dieser Fehlercode ist nicht definiert. Es gibt verschiedene Gründe für nicht definierte Fehler.
Beispielsweise wurde für diesen Code keine Beschreibung erstellt oder es wurde ein Wert mit dem
Fehlercode-Eingang verbunden, der kein Fehlercode ist.

Es ist auch möglich, dass sich der Fehler auf ein Objekt von einem Drittanbieter
(z. B. Betriebssystem oder ActiveX) bezieht. In diesem Fall finden Sie ggf. eine Beschreibung des Fehlers
im Internet, indem Sie nach dem Fehlercode selbst (1275301) oder seiner Darstellung im Hexadezimalformat
(0x001375A5) suchen.

Während dieser Zeit, bis man auf "Weiter" geklickt hat, werden die inzwischen eingelesenen Werte nicht ausgegeben und bei der Motorposition entsteht seltsamerweise ein Peak bei etwa -2*10^6. Was läuft da falsch? Komischerweise scheint es ja ne Weile zu funktionieren, bis wieder die Fehlermeldung kommt.
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby G_geek » 01 Aug 2011, 08:43

Hi Sven,
der Fehler tritt auf wenn in der vorgegebenen Zeit nicht alle 9 Antwortbytes angekommen sind -> timeout....
Das passiert z.B. wenn in der Schnittstelleninitialisierung der Parameter "termination end char" aktiviert ist (üblicherweise 0x0A), dann bricht die Kommunikation ab wenn ein 0x0A in der ANtwort enthalten ist und es werden Bytes "verschluckt". Dann kommt`s halt zum timeout.
Schau Dir mal meine anderen posts zu dem Thema hier an . Wenn das nicht hilft poste mal deinen Code...

have fun
G_Geek
User avatar
G_geek
Power User
Power User
 
Posts: 42
Joined: 15 Dec 2009, 21:32
Location: Germany

Re: Unbekannter Fehler

Postby Sven Kung » 12 Aug 2011, 14:17

Hi G_Geek,

Und ws kann man nun explizit dagegen unternehmen, dass die Antwort nicht komplett ankommt? Ich hab in den anderen Beiträgen hier leider nichts hilfreiches finden können. Die Code ist leider zu groß, um ihn hier anzuhängen.
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby G_geek » 15 Aug 2011, 09:30

Hi Sven,
z.B. hier:
http://www.trinamic.com/ttdg/phpBB3/viewtopic.php?f=24&t=3116
oder hier
http://www.trinamic.com/ttdg/phpBB3/viewtopic.php?f=24&t=2519&start=15#p8507

Stichwort ist "termination end character" in der COM Initialisierung. Wenn das auf 0x0A steht bricht die Komunikation ab, wenn ein 0x0A in den übertragenen Daten mit drin ist....

have fun
G_Geek
User avatar
G_geek
Power User
Power User
 
Posts: 42
Joined: 15 Dec 2009, 21:32
Location: Germany

Re: Unbekannter Fehler

Postby Sven Kung » 16 Aug 2011, 10:48

Ich hab nochmal nachgesehen und die Initialisierung erfolgt über deinen "init COM"-Block, worin das False bereits gesetzt ist. Der Fehler muss also woanders liegen.
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby G_geek » 17 Aug 2011, 11:47

Hi Sven,
Hmmm....
Ohne wenigstens ein kleines Codesegment gesehen zu haben oder zu wissen welche Hardware Du eigentlich einsetzt ist so eine blinde Ferndiagnose natürlich schwierig...
Der Fehlercode bedeutet eindeutig, dass nicht die erforderten 9Bytes in dem vorgegebenen timeout Fenster angekommen sind.
Das kann dann alle möglichen Gründe haben .

Mal ein paar Schüsse ins Blaue:
-mehrfache Schnittstellen-Initialisierung?
-klappt die fehlerfreie (Langzeit-)Kommunikation wenn nur die GAP Routine läuft, also ohne Messwerterfassung parallel?
-timeout Zeit im TMCL_GAP.vi hochsetzen
-zu langes serielles Kabel , Wackelkontakt, schlechte Schirmung ??
-Port Monitor Software reinhängen und schauen was genau auf dem Port los ist während mit der Hardware kommuniziert wird
-Datenfluss in LABVIEW beachten um kein timigng Problem mit parallelen Prozessen zu bekommen

have fun
G_Geek
User avatar
G_geek
Power User
Power User
 
Posts: 42
Joined: 15 Dec 2009, 21:32
Location: Germany

Re: Unbekannter Fehler

Postby Sven Kung » 09 Sep 2011, 13:53

-mehrfache Schnittstellen-Initialisierung?

Daran liegt es schonmal nicht
-klappt die fehlerfreie (Langzeit-)Kommunikation wenn nur die GAP Routine läuft, also ohne Messwerterfassung parallel?

Hab mir da jetzt ne kleine Schleife nur mit GAP gebaut, um das zu testen, und es klappt eigentlich einwandfrei
-timeout Zeit im TMCL_GAP.vi hochsetzen

Hab ich gemacht, hilft nicht
-zu langes serielles Kabel , Wackelkontakt, schlechte Schirmung ??

Ich kann mal unseren Elektroniker fragen
-Port Monitor Software reinhängen und schauen was genau auf dem Port los ist während mit der Hardware kommuniziert wird

Womit könnte man das denn machen?
-Datenfluss in LABVIEW beachten um kein timigng Problem mit parallelen Prozessen zu bekommen

Ich hab aus dem parallelen Prozess das TMCM-VI herausgenommen, eigentlich sollten dadurch jetzt keine Störungen mehr auftreten

Kann es sein, dass Probleme dann auftreten, wenn man nicht genug Zeit zwischen senden und Empfangen von Daten lässt? Wobei, in einem VI kommt nur der ROT-Befehl vor, der alle 100ms ausgeführt wird, und dabei kommt es auch zu dieser Fehlermeldung. Ich häng dieses VI mal an. Im Haupt-VI wird es in eine Schleife gesteckt, wobei "Array ein" und "Array aus" über ein Schieberegister verbunden werden.

Letztendlich sind es ja auch grundsätzliche Fragen, die die Verwendung der VI's angehen. Wie verwendet man sie richtig, dass es nicht zu Timingproblemen kommt? Es wäre wünschenswert, ein paar einfache Beispielprogramme zur Verwendung der VI's auf ihrer Homepage vorzufinden.
Attachments
Leveling.zip
(15.35 KiB) Downloaded 70 times
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby Olav Kahlbaum (TRINAMIC) » 12 Sep 2011, 07:45

Zu der Frage, wieviel Zeit man zwischen Senden und Empfangen warten sollte: bei 9600 Baud dauert die Übertragung eines 9-Byte-Telegramms zum Modul 9.375ms (1/9600s * 10 Bits * 9 Bytes). 10 Bits pro Byte wegen der Start-und Stoppbits, die man da mitrechnen muß. Die Verarbeitung auf dem Modul dauert ca. 1ms, und die Rücksendung des 9-Byte-Antwortelegramms dann wieder 9.375ms.
User avatar
Olav Kahlbaum (TRINAMIC)
Site Admin
 
Posts: 3369
Joined: 11 Aug 2006, 08:02

Re: Unbekannter Fehler

Postby Sven Kung » 12 Sep 2011, 11:49

Ok, das heißt also, dass man etwa 20ms zwischen den einzelnen Blöcken warten muss? Oder kann man die auch einfach in einer Sequenz aneinanderhängen, da eh auf die Antwort gewartet wird?

Jedenfalls hab ich jetzt meinen VI's jeweils ein "error out"-Anzeigeelement spendiert, die die Fehlermeldungen unterdrücken. Jetzt wird der erste MVP-Befehl leider trotzdem noch relativ häufig übergangen. Ich häng das VI, in dem der Fehler auftritt, mal an.
Attachments
Initialisierung.zip
(25.92 KiB) Downloaded 67 times
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby G_geek » 12 Sep 2011, 11:53

Hi Sven,
habe dein "leveling .vi " mal an einer TMCM310 Karte getestet(kleine While-Schleife, die das "array ein" und "array aus" über ein Schieberegister bedient). Habe keinerlei Probleme mit Fehlermeldungen. Also gibt`s entweder noch ein Hardwareproblem oder im Hauptprogramm klemmt es mit dem Datenfluß.
Wie gesagt, ich würde jedem Sub VI ein "VISA in" und VISA out" sowie einen "ERROR in" und einen "ERROR out" verpassen um im Hauptprogramm diesbezüglich kein Problem zu bekommen. Und wenn die GAP Routine alleine problemlos läuft, liegt das Problem wahrscheinlich woanders....

Mit einem Port Monitor kannst Du dir anzeigen lassen was zwei seriell miteinander verbundene Geräte "reden". Google mal "port monitor" und nimm den ersten hit bei Heise.de. Damit könnte man wenigstens schon mal eingrenzen ob`s am senden oder am empfangen hängt...

Mit dem timing....
Natürlich sollte man das timing im Auge haben, aber.... wenn im Hauptprogramm der Datenfluss gewährleistet ist, erledigt sich das oft von alleine (ja ich weiß, immer dieser Datenfluß, aber das ist nun mal der Dreh-und Angelpunkt beim programmieren in LABVIEW. Ist halt eben doch nicht nur "klicki-bunti-und-dann geht-das-schon-irgendwie")
Im Ernst, die VI`s meiner TMCL-library sind so aufgebaut, dass vor jedem neuen Senden der Buffer gelöscht wird und beim Empfangen solange gewartet wird, bis die 9 Bytes da sind (oder der timeout zuschlägt, aber dann stimmt sowieso was nicht). Wenn man jetzt darauf achtet, dass alle Sub VI`s ordentlich nacheinander aufgerufen werden, kann eigentlich nix schiefgehen. Wenn z.B. alle ERROR cluster ordentlich in Reihe verbunden sind, kann es nicht vorkommen,dass ein neues Kommando geschickt wird, obwohl die Antwort des vorhergehenden noch nicht komplett gelesen wurde, was dann durchaus zu geschilderter Fehlermeldung führen könnte...
Image
Ein Beispiel zur Verwendung der Bibliothek( "TMC310_test_application") ist ja da. Mit Datenfluß und so weiter...einfacher geht`s kaum.
Darüber hinaus kann es von mir keinen individuellen Support geben da ich weder bei NI noch bei Trinamic beschäftigt bin und die Ansteuerung von Motoren nicht mein Hauptfokus ist. Bei mir und ~100 anderen Anwendern die die TMCL library geladen haben funktioniert`s ja

have fun
G_geek
User avatar
G_geek
Power User
Power User
 
Posts: 42
Joined: 15 Dec 2009, 21:32
Location: Germany

Re: Unbekannter Fehler

Postby Sven Kung » 12 Sep 2011, 12:35

Ok, die Testapplication schein ich übersehen zu haben. Die scheint mir aber auch schon anders aufgebaut zu sein, als das, was ich programmiert hab. Da sind die VI's aber auch gar nicht mit den error-Anschlüssen verbunden, kann das sein?
Den Portmonitor hab ich ausprobiert, allerdings sehe ich bei den Daten, die ich ausgegeben bekomme, nicht durch. Worauf sollte ich da denn achten, um zu erkennen, was nicht funktioniert?
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby G_geek » 12 Sep 2011, 13:36

Hi Sven,
in der Testapplikation sind die "VISA resource" Indikatoren miteinander verbunden, das reicht schon um den Datenfluss zu gewährleisten.
Dein Initialisierung.vi hab ich auch mal getestet, klappt auch prima ohne jeglich Fehlermeldung. Habe nur noch ein paar
Kleinigkeiten geändert um den Datenfluss wasserdicht zu machen...
Mit dem PortMonitor sollte man die HEX Kommandos sehen die zwischen PC und Trinamic Karte hin und her gehen so kann man
evtl. sehen an welcher Stelle was verschluckt wird.

have fun
G_geek
Attachments
Initialisierung.zip
(25.61 KiB) Downloaded 68 times
User avatar
G_geek
Power User
Power User
 
Posts: 42
Joined: 15 Dec 2009, 21:32
Location: Germany

Re: Unbekannter Fehler

Postby Sven Kung » 12 Sep 2011, 14:51

Ok, ich werd das mal probieren. Soll der "dup VISA" auch einen Anschluss bekommen?
Sven Kung
Power User
Power User
 
Posts: 16
Joined: 11 May 2011, 13:14

Re: Unbekannter Fehler

Postby G_geek » 12 Sep 2011, 15:15

Hi Sven,
ja das hab` ich vergessen. Entweder "dup VISA" oder "ERROR out " (oder beides) sollte dann im Hauptprogramm weitergeführt werden wenn die Initialisierung abgeschlossen ist

have fun
G_geek
User avatar
G_geek
Power User
Power User
 
Posts: 42
Joined: 15 Dec 2009, 21:32
Location: Germany


Return to LabVIEW (TM) specific issues

Who is online

Users browsing this forum: No registered users and 1 guest

cron