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!
mal wieder ein Anfänger :-)
Ich möchte einen Motor (AC-Synchron) steuern und habe dazu eine NI6230-Karte incl. Anschlussblock als Harware zur Verfügung. Der Motor arbeitet mit einer Eingangsspannung von +-10V.
Ich habe LV 8.5 zur Verfügung.
1. Frage: Kann ich damit arbeiten, oder benötige ich weitere Hardware oder spezielle kostenintensive LV-Module?
2. Ich möchte im Endausbau ein Drehzahlprofil ni(ti), i=1,2,......N fahren. Wie kann ich dieses Profil am besten an LV übergeben? Das Profil liegt als Textfile vor.
Ich vermute das ist ein Standardproblem und ich habe auch schon diverse Datenbanken durchsucht, aber ich scheitere an der unglaublichen Vielzahl von Beispielen.
zu 1. Nein, wenn Dein Motor eine Leistungsstufe hat. Die Karte ist nicht in der Lage, Leistung bereit zu stellen...
zu 2. Textdateien sind super. CSVs sind ein bisschen einfacher zu handeln (Read from Spreadsheet)
Ansonsten wäre es noch gut, ein bisschen mehr über Deinen Motor zu wissen: Wieviele Phasen, was macht er bei + und was bei -10V? Wie schnell muss sich Dein Drehzahlprofil ändern, wie echtzeitfähig muss es sein etc.
Viel Erfolg,
ch
PS Die Keywords "Neuling", "Anfänger", "Standardproblem" etc. führen nicht unbedingt dazu, dass Themen besser, schneller oder gründlicher berarbeitet werden. Dieses Forum ist ziemlich gut drin, auf gut gestellte Fragen gute Antworten zu geben - egal worum es geht oder von wem die Frage kommt...
danke für die schnelle Antwort. Details über den Motor hab ich noch nicht. Die maximale Drehzahl liegt aber so bei 5000 U/min.
Als Änderungsgeschwindigkeit der Drehzahl würden wohl so 100 U/min ín der Sekunde reichen. Ich denke, dass da aber eher der Motor der begrenzende Faktor ist.
Nochmal zu meiner 2. Frage: Ich denke es wäre kein Problem, die Daten auch als csv bereitzustellen. Dann würde ich sie wohl mit einer Read from Spreadsheet-Funktion in ein Array einlesen. Das ist denke ich soweit klar.
Aber wie bringe ich diese Daten sinnvoll auf die DAQ-Karte?
Ich muss wohl irgendwie aus den Zahlenpaaren (ti, ni) ein Spannungssignal u(t) erzeugen, dass ich dann über einen DAQ-mx-AO an die Leistungsstufe des Motos ausgeben kann. Ist das so richtig gedacht?
Gibt es dazu ein geeignetes Standardverfahren? Ich möchte nicht am Ende hören: "das macht man aber eigentlich viel einfacher so und so...."
die "Standard-Verfahren" findest Du am einfachsten, wenn Du Dir mal im Example-Finder anschaust, wie man sowas macht. Allerdings müsstest Du schon vorher klären, was Dein Motor so kann: Wenn der seine Ansteuerelektronik selbst hat, heißt es vielleicht das Spannungswert am Eingang = Drehzahl (vielleicht auch geregelt, vielleicht nicht und du willst das noch selbst einbauen), vielleicht hat er abern ur eine Leistungsstufe samt nötige Phasenschieber und benötigt Sinusförmige-Signale und dann hast Du wieder was anderes... DAvon hängt dann aber auch ab, wie man das ansteuert...
Wenn Du neben dem Example-Finder noch was machen willst: Nimm ein Express-VI und konfigurier das so, dass genau das passiert, was Du am Ausgang haben willst. Und dann löst Du das Express-VI auf und schaust dir an, was dahinter steckt... Das find ich immer sehr lehrreich, anschließend kann man dann noch die Teile löschen, die man für seine Anwendung nicht braucht und fertig ist der Lack.
Du wirst hier keine allgemein gültige, für Deinen Fall funktionierende Antwort bekommen, wenn Du nicht mehr Infos liefern kannst.
das mit dem Motor müssen wir wohl zurückstellen, bis ich die genauen Daten habe. Bis dahin hab ich aber ein ganz konkretes Problem:
ich habe meine vorgegebenen Drehzahlpunkte: t1,n1; t2,n2; t3,n3. Leider sind die Zeitpunkte beliebig, d.h. i.A. nicht äquidistant. Wie wandelt man sowas sinvoll in ein LV-Signal um, das ich an meinen Motor übergeben kann. Soweit ich das bisher übersehe, muss ein LV-Signal immer äquidistant in der Zeit sein.
Im Examplefinder hab ich dazu nichts gefunden :-(
Wie es sinnvoll an deinen Motor übergeben werden kann lässt sich erst beantworten, wenn du mehr über den motor weisst.
Aber prinzipiell könntest du dein Signal natürlich so aufbereiten, dass du daraus ein Signal mit äquidistanten Stützpunkten machst. Das hängt wiederum davon ab, wie dein Signal aussehen soll, solange du keinen neuen Wert schickst. Soll das alte Signal solange weiterbestehen, bis du eine Änderung erfährst?
Beispiel: t1=0, N1=100; t2=100ms, N2=150; t3=170ms, N3=120; ....
Am Start würde ich also bei t=t1=0 die Drehzahl auf 100 setzen. Jetzt könntest du bis t=90ms jede 10ms dein Signal auf N1 setzen, also nicht ändern. Bei t=t2=100ms triffst du dann auf eine Änderung im Signal und diese gibst du dann entsprechend weiter, erhöhst die Drehzahl auf 150 und setzt dein Signal wieder alle 10ms auf N2, bis du die nächste Änderung entdeckst. ....
Dazu musst du allerdings zuerst deinen Signalverlauf einlesen und auswerten um zum einen auf einen sinnvollen gemeinsamen Nenner zu kommen (in meinem Beispiel 10ms) und um anschliessend dein Array entsprechend aufzubauen und mit Daten zu füllen.
Alternativ kannst du auch mit einem Counter arbeiten, wenn du z.B. weisst das du immer mit 10ms Schritten arbeiten kannst und immer solange den alten Wert ausgeben, bis der neue kommt.
ich hoffe das ist jetzt nicht zu konfus geschrieben - weisst ja is' kurz vor Wochenende...
Hallo Tobias,
danke für die konkreten Tipps. Ich denke sie waren nicht zu konfus und ich habe verstanden was Du meinst. Ich möchte allerdings ein Signal, dass mit definierten Rampen arbeitet, sobald sich die Drehzahl ändern soll. Aber dazu hab ich hier im Forum ein gutes Beispiel gefunden.
Jetzt muss ich erst mal auf die Motordaten warten. Dann melde ich mich hier wieder.
Viele Grüße
Till