2525 < body >
2626
2727 < h1 id ="pid "> cmon-pid</ h1 >
28- < p id ="pragma-line-2 "> A implementation of several common PID controller transfer functions in C++, header only, without dependencies.</ p >
28+ < p id ="pragma-line-2 "> A PID controller implementation with several common transfer functions in C++, header only, without dependencies.</ p >
2929 < ul id ="pragma-line-4 ">
3030 < li id ="pragma-line-4 ">
3131 < p id ="pragma-line-4 "> Realized PID transfer functions</ p >
@@ -55,12 +55,15 @@ <h1 id="pid">cmon-pid</h1>
5555 < ul id ="pragma-line-19 ">
5656 < li id ="pragma-line-19 "> Steady State</ li >
5757 < li id ="pragma-line-20 "> Bump-less parameter change</ li >
58- < li id ="pragma-line-21 "> Sampling pointss </ li >
58+ < li id ="pragma-line-21 "> Sampling points </ li >
5959 </ ul >
6060 </ li >
6161 < li id ="pragma-line-23 ">
6262 < p id ="pragma-line-23 "> < a href ="index.html#Simulation "> Simulation</ a > of a pid in closed loop with a second order test system</ p >
6363 </ li >
64+ < li >
65+ < a href ="https://github.com/corraid/cmon-pid "> Source code is on GitHub.</ a >
66+ </ li >
6467 </ ul >
6568
6669 < h2 > PID law</ h2 >
@@ -232,23 +235,23 @@ <h3>Plotted signals</h3>
232235 < h3 > Fast Sampling</ h3 >
233236 The sampling time and filter time constant are a 10th of the closed loop response time. `Tf=0.1, h=0.1`. With
234237 ample sampling rate and bandwidth the performance of the discrete and continuous controllers are similar.
235- < p > < img src ="images/sim_fast_sample.png " width = 100% > </ p >
238+ < p > < img src ="images/sim_fast_sample.png " alt =" Step response with fast sampling rate " > </ p >
236239 < h3 > Slow Sampling</ h3 >
237240 With a sampling rate of half the closed loop response time we see some difference between the backward Euler
238241 and bilinear/tustin integration. `h=0.5`
239- < p > < img src ="images/sim_slow_sample.png " width = 100% > </ p >
242+ < p > < img src ="images/sim_slow_sample.png " alt =" Step response with slow sampling rate " > </ p >
240243
241244 < h3 > High bandwidth</ h3 >
242245 This happens when the sampling rate is too low for the bandwidth. `h=0.1, Tf=0.0001`
243- < p > < img src ="images/sim_high_bandwidth.png " width = 100% > </ p >
246+ < p > < img src ="images/sim_high_bandwidth.png " alt =" Sampling rate too low for the bandwidth " > </ p >
244247
245248 < h3 > Low Bandwidth</ h3 >
246249 A low pass filter of half the response time has not much effect on the performance but can reduce the kick. `Tf=0.5`
247- < p > < img src ="images/sim_low_bandwidth.png " width = 100% > </ p >
250+ < p > < img src ="images/sim_low_bandwidth.png " alt =" Step response with low bandwidth " > </ p >
248251
249252 < h3 > Disturbance Rejection</ h3 >
250253 Disturbance rejection is slow but they are damped by the system and may not be problem under normal conditions. `Tf=0.1`
251- < p > < img src ="images/sim_disturbance_rejection.png " width = 100% > </ p >
254+ < p > < img src ="images/sim_disturbance_rejection.png ", alt =" Constant setpoint with unity disturbance " > </ p >
252255
253256 < h3 id ="SimClamping "> Clamping</ h3 >
254257 < p >
@@ -259,26 +262,26 @@ <h3 id="SimClamping">Clamping</h3>
259262 While this works reasonably well manipulating the output is akin to disturbance and if we have a system with
260263 slow disturbance rejection like this recovery times will be quite long.
261264 </ p >
262- < p > < img src ="images/sim_clamping.png " width = 100% > </ p >
265+ < p > < img src ="images/sim_clamping.png " alt =" Clamped step response " > </ p >
263266
264267 < h3 id ="SimBackcalc "> Back-calculation</ h3 >
265268 < p >
266269 Back-calculation limits the output value like clamping but can be tuned with a parameter, here `Tw=Ti`. But it has
267270 the same problem with slow disturbance rejection.
268271 </ p >
269- < p > < img src ="images/sim_backcalc_ti.png " width = 100% > </ p >
272+ < p > < img src ="images/sim_backcalc_ti.png " alt =" Clipped step response with back-calculation " > </ p >
270273 < h3 > Disturbance with `Ti=2`</ h3 >
271274 To improve the disturbance rejection the integration time can be reduced to 2.
272- < p > < img src ="images/sim_Ti2_disturbance.png " width = 100% > </ p >
275+ < p > < img src ="images/sim_Ti2_disturbance.png " alt =" Constant setpoint with unity disturbance and reduced integration time " > </ p >
273276
274277 < h3 > Clamping with `Ti=2`</ h3 >
275278 This also improves the recovery after the output has been clamped.
276- < p > < img src ="images/sim_Ti2_clamping.png " width = 100% > </ p >
279+ < p > < img src ="images/sim_Ti2_clamping.png " alt =" Clampling with reduced integration time " > </ p >
277280
278281
279282 < h3 > Step response with `Ti=2`</ h3 >
280283 Tracking performance is reduced though.
281- < p > < img src ="images/sim_Ti2.png " width = 100% > </ p >
284+ < p > < img src ="images/sim_Ti2.png " alt =" Step response with reduce integration time " > </ p >
282285
283286 </ body >
284287</ html >
0 commit comments