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!
ich bin mit meinem Latein am Ende, hab alles versucht, komm aber nicht mehr weiter. AUch die Infos aus diesem und dem NI-forum haben mich nicht weiter gebracht. Jetzt die Frage, kann es sein, dass es an der Hardware liegt, weil mein VI-eigentlich deutlich überschaubar ist ?!?
Ich kommuniziere über einen USB auf RS485-Adapter (nuDAM 6530) mit einenem mit dem nuDAM AI-Modul 6017. Simple Aufgabe ist, am Modul (hier #4) Kanal 0 mit dem Befehl #040(LF) die Spannung abzufragen. Ich habe an allen möglichen und unmöglichen Stellen waits eingefügt und selbst im Highlight-Modus bekomme ich manchmal einen leeren Lesepuffer.
Im Normalbetrieb wenn ich die waits jeweils kleiner 300ms setze bekomme ich gar keine Werte mehr. Eine Abfrage, die über eine Sekunde dauert, ist von der Laufzeit her absolut inakzeptabel. Hat jemand noch einen Tipp, ansonsten muss ich andere HW nutzen. Mir ist absolut wichtig, dass die Werte innerhalb von max 200ms ausgelesen werden können und vor allem zuverlässig ankommen, das die Spannung als Steuerungsparameter genutzt wird.
wie gesagt, das VI stellt nur eines der vielen Varianten dar die ich durchgespielt habe, Term char on/off, Buffer leeren vor der nächsten Abfrage....
Kein Effekt!
Gruß Mirko
By the way, ich bin zugegebnermaßen kein wirklicher Experte für die serielle Schnittstelle, wann sollte der Term char an und wann aus sein? Die gewünschte Antwort sieht in so aus: ">xx.xxx" (ohne Anführungszeichen und x steht für die Zahlenwerte).
21.11.2013, 14:24 (Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2013 14:27 von GerdW.)
Zitat:wann sollte der Term char an und wann aus sein? Die gewünschte Antwort sieht in so aus: ">xx.xxx" (ohne Anführungszeichen und x steht für die Zahlenwerte).
TermChar sollte an sein, wenn das Gerät mit einem TermChar am Ende antwortet...
Du sendest Befehle mit einem EOL am Ende. Komt die Antwort wirklich ohne aus?
Was sagt das Manual zum Gerät? Das wirst du doch haben - AdLink will erst eine Registrierung haben, bevor man ins Manual gucken darf...
P.S.:
Laut Datasheet hat das Teil eine SamplingRate von "20" - leider ohne Angabe, ob dies für einen Kanal oder für alle 8 gleichzeitig gilt. Du brauchst also ca. 50ms für das Messen eines neuen Messwerts, dazu kommt dann noch die Zeit für den Datentransfer und die Befehlsausführung auf dem Gerät selbst...
Dann solltest du mit aktiviertem TermChar arbeiten, diesen aber auf vom Standard-Wert <LF> auf <CR> umstellen! Am entsprechenden Eingang von "Configure Serial Port" also ein 0x0D = 13 anstatt der 10 anschließen.
Bytes at Port und Wartezeit kannst du dir dann sparen, VISA-Read übernimmt das Parsen bis zum Endezeichen.
Gruß, Jens
EDIT: Gerd war schneller...
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
das Ding bringt mich noch zur verzweiflung, wenn ich es wie von euch angemerkt laufen lasse (siehe Anhang), kommen die Werte zuverlässig, er spuckt allerdings nur alle 10s!!! einen Messwert aus!
Muss/Kann ich irgendwo ein Timeout einstellen?!?, oder was hab ich noch vergessen?
Wieviele ASCII-Zeichen enthält die Antwort inkl. <CR>? Stell mal bei VISA-Read bei der Anzahl der Zeichen auf eine große Zahl (z.B. 100) um.
Im Modus mit aktiviertem TerminationChar liest VISA-Read solange bis:
- Länge des Empfangsstrings erreicht
ODER
- bis Trennzeichen erkannt
ODER
- bis Timeout (Standard 10 Sekunde) erreicht.
Hört sich so an, als ob du immer wieder in einen Timeout läufst.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!