How Can I Overcome Static Friction On My Axis of Motion?
Hardware: PXI/CompactPCI>>Controllers, Motion Control>>Controllers>>PXI-7356, Motion Control>>Controllers>>PXI-7346, Motion Control>>Controllers>>PXI-7358, Motion Control>>Controllers>>PXI-7334, Motion Control>>Controllers>>PXI-7354, Motion Control>>Controllers>>PXI-7344, Motion Control>>Controllers>>PXI-7314, Motion Control>>Controllers>>PXI-7324, Motion Control>>Controllers>>PXI-7352, Motion Control>>Controllers>>PXI-7330, Motion Control>>Controllers>>PXI-7322, Motion Control>>Controllers>>PXI-7312, Motion Control>>Controllers>>PXI-7332, Motion Control>>Controllers>>PXI-7350, Motion Control>>Controllers>>PXI-7342, Motion Control>>Controllers>>PXI-7340
Problem: I am trying to build a system that will compensate for the static friction (stiction) that is present along my axis of motion. When I attempt to begin a move, there is a delay between when the command is sent and the beginning of motion. During this time, the following error increases steadily until the inertia of the stage and the friction on the track are finally overcome by the torque of the motor and the stage begins to move. How can I take this friction into account and adjust my torque to minimize the amount of following error that is generated during the move as a result of friction?
Solution: There are two possible solutions for this issue.
- Adjust the PID settings of your control loop. You can modify the Kp value to increase the torque on your system. However, this is not necessarily the best solution because this method can cause instability in your system as it reaches the end of the move.
- Either in Measurement & Automation Explorer (MAX) or LabVIEW, you can implement static friction compensation.
- In MAX, expand Devices and Interfaces and navigate to: PCI 73XX»Default 73XX Setings»Axis x»Control Loop Settings where x is the axis of motion that you are using. Click on the Filter Settings tab and place a checkmark in the box next to Enable Static Friction Compensation. At this point, four controls should now be enabled: Maximum Deadzone Position, Minimum Deadzone Position, Forward Offset Voltage, and Reverse Offset Voltage.
Figure 1. MAX Configuration to Enable Static Friction Compensation
- In LabVIEW, you can use Load Advanced Control Parameter.flx to enable static friction compensation and then set the deadzone position and offset voltage values. You will need a separate instance of this VI for each parameter. To enable static friction compensation, right-click on the Control Parameter input to the VI and select to Create » Constant and choose Static Friction Mode. Then, create a constant for the Value input and use a value of 1.
The deadzone position values determine the range of positions, with regard to the target position, for which the digital to analog converter (DAC) is activated. This signal controls the motion of your axis. The maximum deadzone position determines the amount of error (target position – current position) which must accumulate before generating a DAC signal to reduce the error. The minimum deadzone position determines when the current position of the axis is “close enough” to the desired target position and the DAC signal is deactivated. The use of a deadzone allows the motor to stop motion when the current axis position is a satisfactory approximation of the target. This reduces the risk of overheating or motor damage resulting from friction working against it as it attempts to reach its target. Start with the default values and modify the maximum and minimum deadzone position values to determine what amount of error should be considered satisfactory.
The offset voltage is a voltage boost that is applied when the move is begun. This boost provides additional torque to the axis and is used to overcome inertia and stiction. The default value of the offsets is 0V. Depending on the direction of motion, increase either the forward or reverse offset voltage value to a small voltage value, and increase this value by small increments until your axis begins its motion with satisfactory quickness and a small amount of following error.
Related Links: Motion Control SupportNI Developer Zone: Understanding Servo TuneNI Developer Zone: Using a Motion Controller to Change Control Loop Parameters on the Fly
Attachments:
Report Date: 09/15/2005
Last Updated: 05/05/2009
Document ID: 3PEANPB1