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 hätte da folgende Frage bezüglich der Programmierung in meiner Abschlussarbeit:
Bei meinem Aufbau wird mittels eines Schrittmotors ein Bügel gedreht (Schrittmotorkarte), an dem mehrere spannungsliefernde Sensoren (0-5V) angebracht sind. Diese würde ich gerne mit einer DAQ-Karte einlesen. Die Werte sollten zu bestimmten Positionen des Bügels abgespeichert werden (hier würde sich anbieten, die Werte in ein Array abzuspeichern, oder?). Die Vergleichswerte, für die Auswertung, werden aus einer Exel-Tabelle in ein Array einlesen, das klappt auch schon soweit, dank eurer Hilfe :-)
Nun aber zum Messvorgang: Was würde sich hier anbieten:
-den Bügel schrittweise auf die gewünschten Positionen steuern, dann messen, dann weiterfahren zur nächsten Position usw... (also das ganze in Schritte aufteilen.. der Messbereich beträgt ca. 200° und müsste dann so in 1-5°-Schritten verfahren, um eine einigermaßen "schöne" Kurve zu erhalten... (soll als Graphen angezeigt werden..)
-den Bügel kontinuierlich bewegen, und während der stetigen Fahrt die Messerte aufzeichnen.. somit hätte ich eine kontinuierliche Bewegung, ohne dauernd stoppen und beschleunigen zu müssen... (die Zeitkonstante meiner Sensoren werde ich hierbei natürlich berücksichtigen und ist nicht das Problem...), aber wie müsste dann mein Programm strukturiert sein, um einen solchen Messvorgang zu ermöglichen, damit die Messwerte auch zur richtigen Position eingelesen werden? Die Werte sollten auf alle Fälle in einem Array sein, um diese dann mit den Sollwerten auswerten zu können.
Vielleicht habt ihr ein paar Tipps und Ideen, wie sich hier anbieten würde, und wie hierzu die grobe Programmstruktur aussehen sollte... (bin leider erst LabVIEW-Neuling, aber grade deswegen sind ja Eure Tipps so wertvoll)
Vielen Dank für Eure Ideen :-)
Viele Grüße,
Martin
Zur Schrittmotorkarte:
Es gibt schlaue und dumme Karten ;-)
Die mit viel Intelligenz erhalten ihre komplette Befehle und führen die Bewegung aus. So eine Schrittmotormove ist nicht so einfach wie man meint, denn um einen Schrittmotor schnell zu fahren, darf man nicht zu rapide beschleunigen oder bremsen, sonst hat man mit Schrittverlusten oder sogar Hängern zu kämpfen. Darum besteht eine Fahrsequenz immer aus Beschleunigen - Fahren - Verzögern . Dabei läuft die ganze Zeit der Zähler mit, damit die Steuerung weiß wo man ist. Bei vielen kleinen Bewegungen wird das System darum sehr langsam.
Einfache Karten haben nur ein paar Pegeleingänge. Das Minimum wäre Takt und Richtung. Das Takt-Signal wäre ein guter Kandidat um eine Messung zu synchronisieren. Denn jeder Takt entspricht einer spezifischen Winkelbewegung.
Wieviel das ist hängt vom Schrittmotor und vom Modus (Voll-, Halb-...Mikroschritt) ab.
Also würde jeder Takt einen Schritt und eine Messwerterfassung auslösen.
Um die Erklärung der Steuerkarte abzuschließen:
Bei jedem Takt generiert die Elektronik die Bestromungssequenz der Wicklungen für den nächsten Schritt, entsprechend der Richtungsvorgabe.
Gruß
Joachim
09.06.2009, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2009 10:12 von icebox.)
Danke für die schnelle Antwort und den interessanten Ansatz.
Als Schrittmotorkarte kommt die NI-PCI-7342 (für zwei Achsen) zum Einsatz.
An diese Karte kommt das UMI-7772 und dann die Endstufe P70530, an welcher der Schrittmotor des Drehtisches angeschlossen wird.
Du fragst, wie schnell es sein soll.. naja, so schnell wie möglich :-) .. der Ansatz mit der kontinuierlichen Messfahrt wäre sicherlich die schönere Lösung, oder würde das Probleme mit der Synchronisation zwischen Messung und Bewegung bringen? Ansonsten könnte ich so doch beispielsweise bei einer Schrittweite von einem Grad (umgerechnet in die entsprechenden Takte und das dann als Trigger für die Messung verwenden) eine Messung machen..
Würde sich als Grundaufbau für das Programm eine "state-machine" eignen, da ich ja praktisch eine Ablaufsteuerung machen muss:
-Programm starten
-Excel-Werte einlesen
-Referenzfahrt
-Messfahrt
-zurückfahren
-Auswerten
Beispielsweise müssen ja während der Messfahrt noch die Endschalter, Not-Stop etc berücksichtigt werden, wäre daher ein Zustandsautomat sinnvoll?
Das Programm sollte schön übersichtlich und sauber aufgebaut werden, drum meine Anfrage...
Das 70530 ist ja ein sehr mächtiges und recht kleveres Teil. Ich habe mir nur mal kurz die Doku angesehen und ich glaube, dass es mit dem Teil alleine schon gehen sollte.
Synchronisierte Messdatenaufnahme ist immer die bessere (sichere) Lösung. Besonders wenn so viele Prozesse noch nebenher laufen.
Deine Endstufe hat die Möglichkeit des Jog-Betriebes. Man programmiert eine Jog-Entfernung ein. Dann gibt man nur noch auf den Jog+ oder Jog- einen Puls, und der Motor fährt entsprechend. Der Ausgang wird auf Motor Move konfiguriert. Sobald der Motor steht ist der Ausgang low und der Messwert wird aufgenommen. Diese Methode wäre sicher, aber langsam, denn wir machen ein Stopp und Go, und Massen sind nun mal träge.
Sinnvoller wäre jeden Fall den Motor durchlaufen zu lassen. Ich habe bis jetzt nur noch nicht so genau erkannt wo man ein Synchronisationssignal abgreifen kann.
Wenn Du einfach eine Messwertaufnahme als f(t) machst, musst Du Dir darüber im klaren sein, dass Motorsteuerungen *fast immer Beschleunigungs- und Verzögerungsrampen fahren, deshalb die Position als f(t) im Normalfall nicht mit Dreisatz zu berechnen ist.
End-, Not-Aus- ... alles was die Anlagensicherheit betrifft muss unbedingt in harter Ware ausgeführt werden!
*Die Steuerung hat eine Startgeschwindigkeit einprogrammiert. Das ist eine Geschwindigkeit, bei der das System schlupffrei anläuft. Wenn also Fahrgeschwindigkeit<=Startgeschwindigkeit gibts keine Beschleunigung.