Pid Auto Tuning Wizard
To help correct loop quality problems, INTUNE+ software includes INTUNE PID Tuning Tools with auto tuning, heuristic-based adaptive tuning, offline data tuning, and offline model-based tuning. Also included is a PID comparison tool, along with a variety of online and offline process and PID simulation features. PID Tuning and consequent simulations in ExperTune include appropriate anti-reset windup, derivative filter and other peculiarities that are unique to each industrial algorithm.
This example shows how to automatically tune a PID Controller block using PID Tuner.
Introduction of the PID Tuner
Pid Loop Tuning Guide
PID Tuner provides a fast and widely applicable single-loop PID tuning method for the Simulink® PID Controller blocks. With this method, you can tune PID controller parameters to achieve a robust design with the desired response time.
- PID tuning refers to the parameters adjustment of a proportional-integral-derivative control algorithm used in most repraps for hot ends and heated beds. PID needs to have a P, I and D value defined to control the nozzle temperature. If the temperature ramps up quickly and slows as it approaches the target temperature.
- Because PIDE Auto-tuning is built into the controller, you can perform autotuning from PanelViews or any other operator interface devices, as well as RSLogix 5000.
A typical design workflow with the PID Tuner involves the following tasks:
(1) Launch the PID Tuner. When launching, the software automatically computes a linear plant model from the Simulink model and designs an initial controller.
(2) Tune the controller in the PID Tuner by manually adjusting design criteria in two design modes. The tuner computes PID parameters that robustly stabilize the system.
Funny css video web designer auto tune. LEARN ABOUT AUTOTUNING AND HAVE SOME FUN BY USING AUTOTUNE ON A VOCAL TRACK!
(3) Export the parameters of the designed controller back to the PID Controller block and verify controller performance in Simulink.
Open the Model
Open the engine speed control model with PID Controller block and take a few moments to explore it.
Design Overview
In this example, you design a PI controller in an engine speed control loop. The goal of the design is to track the reference signal from a Simulink step block scdspeedctrlpidblock/Speed Reference
. The design requirement are:
Settling time under 5 seconds
Zero steady-state error to the step reference input.
In this example, you stabilize the feedback loop and achieve good reference tracking performance by designing the PI controller scdspeedctrl/PID Controller
in the PID Tuner.
Open PID Tuner
To launch the PID Tuner, double-click the PID Controller block to open its block dialog. In the Main tab, click Tune.
Initial PID Design
When the PID Tuner launches, the software computes a linearized plant model seen by the controller. The software automatically identifies the plant input and output, and uses the current operating point for the linearization. The plant can have any order and can have time delays.
The PID Tuner computes an initial PI controller to achieve a reasonable tradeoff between performance and robustness. By default, step reference tracking performance displays in the plot.
The following figure shows the PID Tuner dialog with the initial design:
Display PID Parameters
Click Show parameters to view controller parameters P and I, and a set of performance and robustness measurements. In this example, the initial PI controller design gives a settling time of 2 seconds, which meets the requirement.
Adjust PID Design in PID Tuner
The overshoot of the reference tracking response is about 7.5 percent. Since we still have some room before reaching the settling time limit, you could reduce the overshoot by increasing the response time. Move the response time slider to the left to increase the closed loop response time. Notice that when you adjust response time, the response plot and the controller parameters and performance measurements update.
The following figure shows an adjusted PID design with an overshoot of zero and a settling time of 4 seconds. The designed controller effectively becomes an integral-only controller.
Complete PID Design with Performance Trade-Off
In order to achieve zero overshoot while reducing the settling time below 2 seconds, you need to take advantage of both sliders. You need to make control response faster to reduce the settling time and increase the robustness to reduce the overshoot. For example, you can reduce the response time from 3.4 to 1.5 seconds and increase robustness from 0.6 to 0.72.
The following figure shows the closed-loop response with these settings:
Write Tuned Parameters to PID Controller Block
After you are happy with the controller performance on the linear plant model, you can test the design on the nonlinear model. To do this, click Update Block in the PID Tuner. This action writes the parameters back to the PID Controller block in the Simulink model.
The following figure shows the updated PID Controller block dialog:
Completed Design
The following figure shows the response of the closed-loop system:
The response shows that the new controller meets all the design requirements.
You can also use the Control System Designer to design the PID Controller block, when the PID Controller block belongs to a multi-loop design task. See the example Single Loop Feedback/Prefilter Compensator Design.
See Also
Related Topics
English • العربية • български • català • čeština • Deutsch • Ελληνικά • español • فارسی • français • hrvatski • magyar • italiano • română • 日本語 • 한국어 • lietuvių • Nederlands • norsk • polski • português • русский • Türkçe • українська • 中文(中国大陆) • 中文(台灣) • עברית • azərbaycanca • |
PID tuning refers to the parameters adjustment of a proportional-integral-derivative control algorithm used in most repraps for hot ends and heated beds.
PID needs to have a P, I and D value defined to control the nozzle temperature. If the temperature ramps up quickly and slows as it approaches the target temperature, or if it swings by a few degrees either side of the target temperature, then the values are incorrect.
To run PID Autotune in Marlin and other firmwares, run the following G-code with the nozzle cold:
This will heat the first nozzle (E0), and cycle around the target temperature 8 times (C8) at the given temperature (S200) and return values for P I and D. An example from http://www.soliwiki.com/PID_tuning is:
For Marlin, these values indicate the counts of the soft-PWM power control (0 to PID_MAX) for each element of the control equation. The softPWM value regulates the duty cycle of the f=(FCPU/16/64/256/2) control signal for the associated heater. The proportional (P) constant Kp is in counts/C, representing the change in the softPWM output per each degree of error. The integral (I) constant Ki in counts/(C*s) represents the change per each unit of time-integrated error. The derivative (D) constant Kd in counts/(C/s) represents the change in output expected due to the current rate of change of the temperature. In the above example, the autotune routine has determined that to control for a temperature of 200C, the soft PWM should be biased to 92 + 19.56*error + 0.71 * (sum of errors*time) -134.26 * dError/dT. The 'sum of errors*time' value is limited to the range +/-PID_INTEGRAL_DRIVE_MAX as set in Configuration.h. Commercial PID controllers typically use time-based parameters, Ti=Kp/Ki and Td=Kd/Kp, to specify the integral and derivative parameters. In the example above: Ti=19.56/0.71=27.54s, meaning an adjustment to compensate for integrated error over about 28 seconds; Td=134.26/19.56=6.86s, meaning an adjustment to compensate for the projected temperature about 7 seconds in the future.
The Kp, Ki, and Kd values can be entered with:
In the case of multiple extruders (E0, E1, E2) these PID values are shared between the extruders, although the extruders may be controlled separately. If the EEPROM is enabled, save with M500. If it is not enabled, save these settings in Configuration.h.
For the bed, use:
and save bed settings with:
For manual adjustments:
- if it overshoots a lot and oscillates, either the integral gain needs to be increased or all gains should be reduced
- Too much overshoot? Increase D, decrease P.
- Response too damped? Increase P.
- Ramps up quickly to a value below target temperature (0-160 fast) and then slows down as it approaches target (160-170 slow, 170-180 really slow, etc) temperature? Try increasing the I constant.
See also Wikipedia's PID_controller and Zeigler-Nichols tuning method. Marlin autotuning (2014-01-20, https://github.com/ErikZalm/Marlin/blob/Marlin_v1/Marlin/temperature.cpp#L250 ) uses the Ziegler-Nichols 'Classic' method, which first finds a gain which maximizes the oscillations around the setpoint, and uses the amplitude and period of these oscillations to set the proportional, integral, and derivative terms.
Saving PID settings
You will need to commit your changes to EEPROM or your configuration.h file for them to be permanent.
To save to EEPROM use:M500
Modifying Marlin Autotune parameters
The default Marlin M303 calculates a set of Ziegler-Nichols 'Classic' parameters based on the Ku (Ultimate Gain) and the Pu (Ultimate Period), where the Ku and Pu are determined by searching for a biased BANG-BANG oscillation around an average power level that produces oscillations centered on the setpoint. (See https://github.com/ErikZalm/Marlin/blob/Marlin_v1/Marlin/temperature.cpp#L238 )
You can transform these 'Classic' parameters into the Zeigler-Nichols 'Some Overshoot' set with:
Or the Z-N 'No Overshoot' set:
Note that the multipliers for the autotuning parameters each have only one significant digit (implying 10% maximum precision), and that the other schemes differ by factors of 2 or 3. PID autotuning and tuning isn't terribly precise, and changes in the parameters by factors of 5 to 50% are perfectly reasonable.
In Marlin, the parameters that control and limit the PID controller can have more significant effects than the popular PID parameters. For example, PID_MAX and PID_FUNCTIONAL_RANGE, and PID_INTEGRAL_DRIVE_MAX can each have dramatic, unexpected effects on PID behavior. For instance, a too-large PID_MAX on a high-power heater can make autotuning impossible; a too-small PID_FUNCTIONAL_RANGE can cause odd reset behavior; a too large PID_FUNCTIONAL_RANGE can guarantee overshoot; and a too-small PID_INTEGRAL_DRIVE_MAX can cause droop.
PID Tuning by Commercial PID
If you have access to a PID controller unit and a compatible thermal probe that fits down into your hotend, you can use them to tune your PID and calibrate your thermistor. Little snitch avast.
Pid Auto Tuning Wizard Download
Connection of the output of the PID to your heater varies depending on your electronics. (I used a 1K2:4K7 voltage divider to drop the 22V output of the PID to 5V for my bread-boarded VNP4904)
After the PID is connected you can use it to measure the nozzle temperature and correlate it with the thermistor readings and resistances.
Conversion from the commercial PID values of kP in %fullscale, Ti in seconds, and Td in seconds is as follows:
As an example, a $30 MYPIN TD4-SNR 1/16 DIN PID temperature controller and $10 type-K probe can hold a particular Wildseyed hotend with a 6.8ohm resistor at 185.0C+/-0.1C using 12V with about a 43.7% duty cycle, or 0.437*12*12/6.8=9.25W. Invoking the autotuning on the controller produces these parameters: P=0.8%/C, I=27s, D=6.7s. Converting these to Marlin PID values:
Differences between the results can be caused by physical differences in the systems, (e.g: the thermocouple is closer to the heater than the thermistor,) or by different choices of autotuning parameters (e.g.: the MYPIN TD4 autotuning process is a proprietary black box, while Marlin uses Zeigler-Nichols 'Classic' method.)
The Temperature/resistance table below was developed by using the PID+thermocouple system to set temperatures on a sample hotend by controlling the heater while measuring the thermistor resistance. These values can be used with Nophead's http://hydraraptor.blogspot.com/2012/11/more-accurate-thermistor-tables.html or Marlin's https://github.com/ErikZalm/Marlin/blob/Marlin_v1/Marlin/createTemperatureLookupMarlin.py to create calibrated thermistor tables. The PID column collects the autotuning values produced by the PID controller for the indicated temperature. The kP,Ki,Kd lists the converted parameters.
Pid Auto Tuning Wizard 2
Temp | DutyCycle | Thermistor R | Commercial PID | Kp,Ki,Kd |
---|---|---|---|---|
60.0 | 6.0 | 31630 | ||
100.0 | 15.7 | 10108 | 1.1%/C, 35.5s, 8.8s | 2.81, 0.08, 3.13 |
120.0 | 22.5 | 5802 | 1.0%/C, 32.0s, 8.0s | 2.55, 0.08, 3.14 |
135.0 | 26.5 | 3967 | ||
150.0 | 28.5 | 2840 | 1.2%/C, 29.0s, 7.2s | 3.06, 0.10, 2.35 |
170.0 | 34.0 | 1829 | ||
185.0 | 43.7 | 1347 | 0.8%/C, 27s, 6.7s | 2.04, 0.08, 3.28 |
190.0 | 45.9 | 1200 | 0.8%/C, 26s, 6.5s | 2.04, 0.08, 3.18 |
200.0 | 51.0 | 977 |