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!
Nach längerer Pause habe ich mich wieder einmal mit meinem kleinen Projektchen beschäftigt und folgendes Problem:
Ich möchte in dem von Markus geschriebenem Beispielprogramm TCP_IP-Ansteuerung.vi die Abtastrate verändern.
Ich gehe mal davon aus dass der Atmega des AVR-Moduls die Eingänge ständig abfragt und wir diese Werte dann über unsere TCP-Schnittstelle in das LabView laden.
Wie kann ich nun die "Abtastfrequenz", also die Anzahl der Datensätze (oder die Anzahl der Lesezyklen), die wir vom AVR-Modul abfragen erhöhen?
Ich habe den Verdacht dass das was mit den Timeout-Zeiten zu tun hat, andererseits will ich gerade an diesen nicht herumspielen.
In der Doku zu den TCP-IP Kommandos gibt es nur einen Befehl zur Abfrage, nämlich 1x den aktuellen ADC-Wert abzuholen. Kein Speicher, kein FIFO, kein nichts, nur aktueller Wert, und das dann mit Software-Takt.
Zwecks FIFO, dazu müsstest du den ATmega umprogrammieren, aber da bist du hier im LabVIEWforum an der falschen Stelle. Ich zumindest habe keine Ahnung, ob und wie das bei diesem Board geht.
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!
(30.08.2011 12:00 )Y-P schrieb: Hier ein Bsp. wie ich über TCP/IP kommuniziere:
Gruß Markus
Hallo Freunde,
ich habe jetzt das Problem, dass ich mein Programm so umbauen muss, dass ich mehrere Kanäle abfragen/ansteuern muss. Das komplette Programm einfach zu kopieren kann ja nicht funktionieren, da man dadurch nur Kollisionen erzeugen würde. Jetzt würde ich mir halt ein Programm schreiben, welches zyklisch die Befehle ändert (GETADC, SETPORT, etc) und die reinkommenden Messwerte umswitcht.
Da das ganze relativ aufwändig werden kann, habe ich nun die Frage, ob es da einen einfacheren Weg gibt oder ob LabView schon was implementiert hat?
LabVIEW bietet als Programmiersprache alle Möglichkeiten, dein Problem zu lösen. Da du es aber noch nicht einmal ordentlich formuliert hast, wird es wohl auch keine fertige Lösung geben...
Ich würde folgendes vorschlagen:
Du hast mehrere Kanäle, die du aber nur einzeln abfragen kannst. Die Werte willst du in einem Array (InitArray + Schieberegister) speichern. Also musst du einen Kanal abfragen und dessen Wert an den entsprechenden Index im Array eintragen (ReplaceArraySubset):
Code:
FOR i = 0 to N-1 Kanäle
GET Value(Kanal i)
STORE value in Array(i)
NEXT i
Hallo Gerd,
ich habe gerade einmal versuchte diese Schleife in LabView aufzubauen, allerdings stoße ich damit schon wieder an meine Grenzen.
Ist es möglich solchen Code direkt einzubinden? Ich habe bei Recherchen diesbezüglich hier im Forum nur gesehen, wie man Exe-Dateien einbinden kann?!
P.S.: Für genauere Hilfestellung müssten wir einmal dein VI sehen. Und was du genau machen willst.
Zitat: "welches zyklisch die Befehle ändert (GETADC, SETPORT, etc) und die reinkommenden Messwerte umswitcht". Das schreit nach eine State-Machine als Programm-Konzept.
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!