LabVIEWForum.de - NI-Motion, Force-control mit externen Force Sensor...

LabVIEWForum.de

Normale Version: NI-Motion, Force-control mit externen Force Sensor...
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Ich bin nicht gerade ein Motion-control experte, und hoffe, dass ihr mir ein bissl auf die Spruenge helfen koennt. Sorry fuer die lange message...

Ich moechte mit NI-Motion, Force-control fuer einen Linearaktuator betreiben. Ich habe mir die Force-control C-Beispiele von NI-Motion angesehen. Dort wird im Grunde als "Gewuenschte Kraft" ein DAC-wert angegeben und dann wird mit flex_read_adc_rtn() die gegenwaertige Kraft vom ADC des MotionControllers gelesen. Die Differenz der beiden wird dann mittels flex_load_target_pos() als neue relative Target_Position zur Kraftkorrektur geladen...soweit, so einfach....Smile

Offensichtlich, gehen die NI-Motion-Beispiele davon aus, dass der Force-sensor per Kabel mit dem ADC des MotionControllers verbunden ist. In meinem Fall jedoch, haben wir einen externen Kraft-sensor, dessen ADC-werte ich mit meinem Programm auslese - das heisst der Sensor ist nicht per Kabel mit dem MotionController verbunden, sondern nur mit meinem PC...

Frage 1:
Folglich, habe ich die NI-Motion Beispiele so veraendert, dass die gegenwaertige Kraft nicht vom ADC des MotionControllers gelesen wird, sondern direkt vom ForceSensor (d.h. ich hab den Funktionsaufruf flex_read_adc_rtn() ersetzt durch eine Routine, die die aktuelle Kraft als ADC-wert zwischen 0 und 2^16 zurueckgibt (0Newton = 0 und 3000Newton = 2^16) ...)...Den rest hab ich so gelassen....das Programm laeuft und -ohne das genau zu messen- merke ich, wie der Aktuator auf Kraftschwankungen reagiert....
===> Meine Frage: Ist meine Herangehensweise prinzipiell erlaubt??? Oder hab ich da irgendetwas nicht bedacht...d.h. ist es zulaessig, einen externen ADC-Wert zu benutzen, um die Target_position zu bestimmen??

Frage 2:
Im Endstadium, moechte ich das ganze so haben, dass meine MotionControl-Funktion eine gewuenschte Kraft in Newton (und nicht als ADC-Wert) erhaelt und die ForceSensor-Routine auch die gegenwaertige Kraft als Newton zurueckgibt. Folglich muss ich ja die Newton in DAC-Werte umrechnen. Im Moment, mache ich das ueber einen einfachen Dreisatz: 2^16 / 3000 Newton = x / Kraft in Newton. Zum Beispiel, wenn die gewuenschte Kraft 1500 Newton ist, kommt so ein DAC-Wert von 32768 raus...wenn ich dann die gegenwaertig gemessene Kraft (z.b. 1450Newton) genauso umrechne, kriege ich wieder eine Differenz, die ich als Target_Position in den MotionController laden kann.....
===> Meine Frage: In dem obigen Dreisatz habe ich ja 3000 Newton als maximale Kraft angegeben, weil der Force-sensor so kalibriert wurde. Mit anderen Worten, meine Force-control routine benoetigt "Infos" ueber die Kalibrierung des Kraftsensors. DAS GEFAELLT MIR NICHT. Ist es nicht im Grunde egal, welche Zahl ich da einsetze, solange ich die gewuenschte UND die gegenwaertige Kraft mit der gleichen Formel umrechne???..z.b. ist die maximale Kraft meines Aktuators 2500 Newton...ich wuerde also lieber 2500N als Basis einsetzen um so eine schoene Trennung zwischen der Forcesensor-funktionalitaet und der Motioncontrol-funktionalitaet zu erreichen....geht das????


//einige technische details....
Ich benutze das UMI-7774 NI-Motion. Der externen Force-Sensorwert lese ich von einem 16Bit ADC, der so kalibriert wurde, dass er Forcewerte von 0Newton (ADC-wert: 0) bis 3000N (ADC-wert: 2^16) liefert. Ich benutze NI-DAQmx funktionen um den ADC-wert zu lesen....

VIELEN DANK FUER EURE HILFE....
Referenz-URLs