Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

How to programmatically change the feedback device??

Hello,

 

We are using the NI UMI7774, together with a Servo-drive for a linear actuator. In our application, we must first go to a certain position, then maintain a certain force for while, then go back to a certain position....

 

For the position control we have mapped the actuator's encoder as the feedback device in MAX - and it works well. For the force control part, we want do use the "Force control using analog feedback"-method (see NI-Motion manual, chapter 13). For this, the force sensor needs to be mapped as the feedback device...

 

(1) The question is, HOW can we make this mapping programmatically in our application source code???...is there a method "setFeedbackDevice()" or something??

(2) Is it likely that we have to have 2 PID-settings (one for the position control part and one for the force control part) and if yes, how can we load the PID parameters programmatically, without opening MAX??

 (3) In the mean time, we have experimented a bit: Using MAX and the encoder as the feedback device, we have positioned the actuator to a certain point. Then we mapped the Force sensor as the feedback device in MAX and pressed Save. However, when we run the force-control-using-analog-feedback example, it didnt work. It still used the encoder as the feedback and hence just moved to a certain position.....We then did another try, where we set the force sensor as the feedback device in MAX, pressed SAVE and pressed INITIALISE.....the actuator subsequently started rattling, without us issueing another move command??.....does anybody know, what this could mean and what we should do????......

 

THANKS a LOT FOR ANY ANSWER AND YOUR EFFORTS.......

 

p.s. We know that there is also the option of "Force Control using Monitoring Force", but after some discussion on here, it appears that the Analog Feedback-method seems to give better force control results in our application....

0 Kudos
Message 1 of 2
(3,714 Views)

Hi janClose,

 

  1. You can change the feedback programmatically by using flex_config_axis(). The axis needs to be stopped when you call this function.
  2. The control behavior differs significantly when you change the feedback resource, so yes, you will have to tune your axes for both feedback modes seperately. You can change the PID parameters by using flex_load_pid_parameters(). Please note, that you can define two sets of PID parameters and you can switch between these two sets by calling flex_load_single_pid_parameter().
    The last paragraph in the online help for flex_load_pid_parameters() discusses this feature.
  3. Parameter changes in MAX are not applied before you reinitialize the board, so if you just save the changes the board's operation mode is not affected. The reason why the motor starts rattling when you initialize it, is due to the fact that you are still using the position control PID parameters, which are typically not valid after changing to force control.

I hope that helps,

Jochen

0 Kudos
Message 2 of 2
(3,700 Views)