Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Tunning Servo Motor- Linear Voice Coil Motor. Motion Control 7432. Motor Drive 7652

I am having a problem tunning my linear Voice Coil Acuator Motor. I have tunned it manually used MAX and obtained a pretty good step response. However, this is without any load on the mechanical system. Tunning the motor to a particular load is important to ensure that the control loop is accurate in application. However, when I apply a load to the axis. (A soft stress ball attached to a pole (Spring like properties).). I get no response from the system at all applying a step of a thousand counts. I have tried increasing the Kp value but still get no response. After increasing it considerably the system begins to oscillate. Is there some other parameter I am missing here? have posted up this problem in another thread of mine but thought I would start a new one in case any is expriencing or has experienced the same problem.
 
A Few Other Issues I have come across.
1. Auto-tunning- Produces an unstable response
2. I am using a Linear potentiometer as an analog feedback. However because of my design an increase in displacement produces a decrease in voltage. Don't know if that effects anything.
3. When I am running my code. I am having a problem with increasing the velocity of my move. The key to my application working  is to have a extremely short fast pulse movement. The load resistance will be soft tissue so it will have compliant properties.
 I have attached my motor datasheet. It can take upto 7A. I am using the MID7652  so can generate 10A peak current. Motion Control Card 7432
It could be the code I wrote iwhich is not the most optimal maybe if someone could suggest any changes that would great.
 
Would really appreciate any feedback I could get in either of these areas. I am a student so new to motion control and I understand alot of this might be basic issues.
 
Thanks in advance
 
Darren
0 Kudos
Message 1 of 22
(6,583 Views)
Opps forgot to attached the datasheet and code
Download All
0 Kudos
Message 2 of 22
(6,581 Views)
Darren,

the first thing that comes to my mind when reading your post are the current limit settings of the 7652. Is there a chance that you haven't adjusted the current settings (dip switch settings) to your motor's rating? By default the 7652 is limited to 0.85 A Continuous and 1.70 A Peak Current.

Best regards,

Jochen Klier
National Instruments
0 Kudos
Message 3 of 22
(6,557 Views)

Hi Jochen,

Thanks for post. Forgot to put that in there. Yea I have changed the limits on the current from the MID7652. I have tried everything up until its maximum setting.

Its interesting because I have set the velcity/acceleration to control in my VI but I can't increase beyond a certain value.

Anything else you can think of?

Cheers,

Darren

0 Kudos
Message 4 of 22
(6,555 Views)
Darren,

ok, so let's focus on some other potential issues.
  1. Tuning: If autotuning works properly depends a lot on the properties of the motion system that you are using. In some scenarios you won't get good results so manual tuning is required.
    In fact the issues that you describe could be caused by non-optimal PID values. Please have a look at this document, that provides very good help for tuning a motion system. As a general hint you should be quite generous with Kd. I have once tuned a system that seemed to get unstable with Kp = 5. By setting Kp = 20 and Kd = 280 and Td = 4, I have got a very nice and stable system. Ki should be used very carefully at the end of the tuning process to improve static accuracy.

  2. Feedback: If you can move your motor correctly in MAX (without load), then everything should be ok with your feedback.

  3. If there is no significant damping in your system, current is proportional to torque  and torque is proportional to acceleration (not to velocity). If your moves are very short,  you may not be able to reach the desired velocity even if acceleration is set to a ver high value, as you may run into either the current limit of the drive or the limited slew rate of the current in your motor coils (caused by the inductance).
    Before moving to LabVIEW, if possible, you should do all tests in 1D-Interactive in MAX until you are sure that your motion control works fine. This makes it much easier to debug  your application.
    By the way, you really should avoid the sequence structure (which in fact is not needed in your application) and cascaded loops in your program. Please have a look at some advanced design patterns as state machines. Here is a good overview about more usefull design patterns, that help to create LabVIEW code, that is easy to read and maintain.
I hope that helps,

Jochen
Message 5 of 22
(6,551 Views)

Hi Jochen,

That has been a great help. Will check out that literature now.

So do you think maybe then a higher value for Kp is required to allow the motor to respond when I apply a step response in MAX. Kp determines the cuurent required to generate a force to achieve the required servo right?. I assumed I had reached the maximum Kp but like you said my Kd values were quite low. Does the system become unstable if Kd is too higher or do you just comprimise on response time.

Out of interest In my code I am implementing the analog feedback correctly?. Also if I wanted to change the servo from position to force (from my load cell) can I switch the primary feedback in labview to ADC channel 2. Or is it only possible to use one ADC channel to servo on.

Really appreciate your help.

Cheers,

Darren

 

0 Kudos
Message 6 of 22
(6,549 Views)
Hi Darren,

yes, a higher value of Kp may help to increase the acceleration values. In general higher values of Kd provide better damping. If your motor starts to become "nervous" (emitting humming sounds), you should also increase Td (in many cases values between 3 and 6 are a good choice). Of course there are also limits for Kd and you could make your motor instable if you use very high values for this parameter.

I guess that "analog feedback" means monitoring a force limit in your case. You can do this the way you have implemented it, but please note that you might run into trouble if your application or Windows hangs for some reason while the force becomes too high. For better safety and reliability you may want to implement this piece of code in an onboard program that runs independently from your host PC. Please have a look at the shipping examples for onboard programming. This approach might be a bit bumpy, as onboard programs work quite differently than "normal" NI-Motion code, but depending on your mechanical setup and the safety requirements, this might be well worth the efforts.

Jochen
0 Kudos
Message 7 of 22
(6,546 Views)

Hi Jochen,

Thanks again I will look into onboard programming. Also just to check again so it is possible for me to use primary feedback on ADC Channel 1 (Position) to find my reference position. After finding this position switch during motion to force feedback from Analog Channel 3 (Force from load cell). Currently my code is just using analog feedback from my potentiometer to servo on position.

Cheers,

Darren

0 Kudos
Message 8 of 22
(6,544 Views)
Darren,

you can switch the feedback for your axis when it is stopped but not while a move is running. Please also make sure to tune your axis seperately for both, position and force control, as you will have to use different PID parameters for both tasks.

Jochen
0 Kudos
Message 9 of 22
(6,542 Views)
Hi Jochen,
 
Thanks a tone for your help. I shall work on these aspects today...Will get back to you if I have anything further issues.
 
Cheers
Darreb
0 Kudos
Message 10 of 22
(6,539 Views)