100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > PID控制算法学习与实现总结(二)位置式PID控制算法

PID控制算法学习与实现总结(二)位置式PID控制算法

时间:2024-06-19 14:50:22

相关推荐

PID控制算法学习与实现总结(二)位置式PID控制算法

PID算法数字化

在上一节中讨论了连续PID控制的原理,但是计算机没有办法直接处理连续信号,只能根据采样时刻对连续信号进行采样,将采样之后的信号送给计算机处理。

按模拟PID控制算法,以一系列的采样时刻点,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,即

t≈kT(k=0,1,2,⋅⋅⋅)t≈ kT (k=0,1,2,···)t≈kT(k=0,1,2,⋅⋅⋅)∫0terror(t)dt≈T∑j=0kerror(T)=T∑j=0kerror(j)\int_{0}^{t}error(t)dt ≈ T\sum_{j=0}^{k}error(T) = T\sum_{j=0}^{k}error(j)∫0t​error(t)dt≈Tj=0∑k​error(T)=Tj=0∑k​error(j) derror(t)dt≈error(kT)−error((k−1)T)T=error(k)−error(k−1)T\frac{derror(t)}{dt}≈\frac{error(kT)-error((k-1)T)}{T} = \frac{error(k)-error(k-1)}{T}dtderror(t)​≈Terror(kT)−error((k−1)T)​=Terror(k)−error(k−1)​

可得离散的PID表达式:

u(k)=kp(error(k)+TTI∑j=0kerror(j)+TDT(error(k)−error(k−1)))u(k)=k_p(error(k)+\frac{T}{T_I}\sum_{j=0}^{k}error(j)+\frac{T_D}{T}(error(k)-error(k-1)))u(k)=kp​(error(k)+TI​T​j=0∑k​error(j)+TTD​​(error(k)−error(k−1))) =kperror(k)+ki∑j=0kerror(j)T+kderror(k)−error(k−1)T=k_perror(k)+k_i\sum_{j=0}^{k}error(j)T+k_d\frac{error(k)-error(k-1)}{T}=kp​error(k)+ki​j=0∑k​error(j)T+kd​Terror(k)−error(k−1)​

式中,ki=kpTI,kd=kpTD。T为采样周期,k为采样序号,k=1,2,⋅⋅⋅,error(k−1)和error(k)分别为第(k−1)和第k时刻所得的偏差信号。k_i=\frac{k_p}{T_I},k_d=k_pT_D。T为采样周期,k为采样序号,k=1,2,···,error(k-1)和error(k)分别为第(k-1)和第k时刻所得的偏差信号。ki​=TI​kp​​,kd​=kp​TD​。T为采样周期,k为采样序号,k=1,2,⋅⋅⋅,error(k−1)和error(k)分别为第(k−1)和第k时刻所得的偏差信号。

位置式PID的C语言代码实现

在Qt的环境中实现了位置式的PID,代码如下:

typedef struct tagPID{float m_SetValue; //定义设定值float m_PidOutputValue; //PID计算输出结果值,用来驱动执行机构float m_err;//当前的误差值float m_err_last; //上一次计算的偏差值float m_Kp; //比例系数float m_Ki; //积分系数float m_Kd; //微分系数float m_integral; //积分值}PID; //PID结构体int main(){PID MyPid;PID_Init(&MyPid);float outval = 0;float actval = 0;for(int i =0 ;i< 600; i++){float outval = PID_Abs_Calc(&MyPid, 100, actval);actval = outval;qDebug() <<"i = "<<i<< "actval = "<<actval;}}/** 初始化PID控制器的参数,*/void PID_Init(PID* pPID){qDebug()<<"PID_Init begin";pPID->m_SetValue = 0; //期望值设置为0pPID->m_PidOutputValue = 0;//PID调节器输出设置为0pPID->m_err = 0;//当前偏差值设置为0pPID->m_err_last = 0; //上一次的偏差值设置为0pPID->m_integral = 0; //积分值设置为0pPID->m_Kp = 0.1;//比例系数设置为0.1pPID->m_Ki = 0.02; //积分系数设置为0.02pPID->m_Kd = 0.17; //微分系数设置为0.17qDebug()<<"PID_Init end";}/** 位置式PID运算核心,输入参数是PID结构体的指针,* set_value是用户期望的设定值,* actual_value是当前的采样值,* 返回值是PID控制器的运算输出结果*/float PID_Abs_Calc(PID* pPID, float set_value, float actual_value){pPID->m_SetValue = set_value; //设置用于期望值pPID->m_err = pPID->m_SetValue - actual_value;//期望值减去当前值pPID->m_integral += pPID->m_err;//PID的积分运算pPID->m_PidOutputValue = (pPID->m_Kp * pPID->m_err) + \(pPID->m_Ki * pPID->m_integral) + \pPID->m_Kd *(pPID->m_err - pPID->m_err_last);/*PID运算完成一次之后,当前偏差作为下一次偏差*/pPID->m_err_last = pPID->m_err;/*返回PID运算结果*/return pPID->m_PidOutputValue;}

输出结果

PID_Init beginPID_Init endi = 0 actval = 29i = 1 actval = 5.59i = 2 actval = 18.7289i = 3 actval = 12.8271i = 4 actval = 18.3977i = 5 actval = 17.5224i = 6 actval = 20.3552i = 7 actval = 21.0345i = 8 actval = 22.912i = 9 actval = 24.0623i = 10 actval = 25.5896i = 11 actval = 26.861i = 12 actval = 28.2402i = 13 actval = 29.5191i = 14 actval = 30.8179i = 15 actval = 32.0683i = 16 actval = 33.3101i = 17 actval = 34.5212i = 18 actval = 35.7149i = 19 actval = 36.8841i = 20 actval = 38.0337i = 21 actval = 39.1614i = 22 actval = 40.2691i = 23 actval = 41.3564i = 24 actval = 42.424i = 25 actval = 43.4721i = 26 actval = 44.5012i = 27 actval = 45.5115i = 28 actval = 46.5034i = 29 actval = 47.4773i = 30 actval = 48.4334i = 31 actval = 49.3721i = 32 actval = 50.2938i = 33 actval = 51.1986i = 34 actval = 52.087i = 35 actval = 52.9593i = 36 actval = 53.8156i = 37 actval = 54.6563i = 38 actval = 55.4818i = 39 actval = 56.2922i = 40 actval = 57.0879i = 41 actval = 57.8691i = 42 actval = 58.636i = 43 actval = 59.389i = 44 actval = 60.1283i = 45 actval = 60.8542i = 46 actval = 61.5668i = 47 actval = 62.2664i = 48 actval = 62.9533i = 49 actval = 63.6277i = 50 actval = 64.2899i = 51 actval = 64.94i = 52 actval = 65.5782i = 53 actval = 66.2048i = 54 actval = 66.82i = 55 actval = 67.4241i = 56 actval = 68.0171i = 57 actval = 68.5993i = 58 actval = 69.1709i = 59 actval = 69.7321i = 60 actval = 70.2832i = 61 actval = 70.8241i = 62 actval = 71.3552i = 63 actval = 71.8767i = 64 actval = 72.3887i = 65 actval = 72.8913i = 66 actval = 73.3848i = 67 actval = 73.8693i = 68 actval = 74.345i = 69 actval = 74.812i = 70 actval = 75.2706i = 71 actval = 75.7207i = 72 actval = 76.1627i = 73 actval = 76.5967i = 74 actval = 77.0227i = 75 actval = 77.441i = 76 actval = 77.8517i = 77 actval = 78.2549i = 78 actval = 78.6507i = 79 actval = 79.0394i = 80 actval = 79.4209i = 81 actval = 79.7956i = 82 actval = 80.1634i = 83 actval = 80.5245i = 84 actval = 80.879i = 85 actval = 81.2271i = 86 actval = 81.5689i = 87 actval = 81.9044i = 88 actval = 82.2338i = 89 actval = 82.5572i = 90 actval = 82.8748i = 91 actval = 83.1865i = 92 actval = 83.4926i = 93 actval = 83.7931i = 94 actval = 84.0881i = 95 actval = 84.3778i = 96 actval = 84.6622i = 97 actval = 84.9414i = 98 actval = 85.2155i = 99 actval = 85.4847i = 100 actval = 85.7489i = 101 actval = 86.0083i = 102 actval = 86.263i = 103 actval = 86.5131i = 104 actval = 86.7586i = 105 actval = 86.9997i = 106 actval = 87.2364i = 107 actval = 87.4687i = 108 actval = 87.6968i = 109 actval = 87.9208i = 110 actval = 88.1407i = 111 actval = 88.3566i = 112 actval = 88.5685i = 113 actval = 88.7766i = 114 actval = 88.9809i = 115 actval = 89.1815i = 116 actval = 89.3785i = 117 actval = 89.5718i = 118 actval = 89.7617i = 119 actval = 89.9481i = 120 actval = 90.1311i = 121 actval = 90.3107i = 122 actval = 90.4871i = 123 actval = 90.6603i = 124 actval = 90.8303i = 125 actval = 90.9972i = 126 actval = 91.1611i = 127 actval = 91.322i = 128 actval = 91.48i = 129 actval = 91.6351i = 130 actval = 91.7874i = 131 actval = 91.9369i = 132 actval = 92.0836i = 133 actval = 92.2278i = 134 actval = 92.3693i = 135 actval = 92.5082i = 136 actval = 92.6445i = 137 actval = 92.7785i = 138 actval = 92.9099i = 139 actval = 93.039i = 140 actval = 93.1657i = 141 actval = 93.2901i = 142 actval = 93.4123i = 143 actval = 93.5322i = 144 actval = 93.6499i = 145 actval = 93.7655i = 146 actval = 93.879i = 147 actval = 93.9905i = 148 actval = 94.0999i = 149 actval = 94.2073i = 150 actval = 94.3127i = 151 actval = 94.4163i = 152 actval = 94.5179i = 153 actval = 94.6177i = 154 actval = 94.7157i = 155 actval = 94.8119i = 156 actval = 94.9063i = 157 actval = 94.999i = 158 actval = 95.0901i = 159 actval = 95.1795i = 160 actval = 95.2672i = 161 actval = 95.3534i = 162 actval = 95.438i = 163 actval = 95.521i = 164 actval = 95.6025i = 165 actval = 95.6826i = 166 actval = 95.7612i = 167 actval = 95.8384i = 168 actval = 95.9141i = 169 actval = 95.9885i = 170 actval = 96.0615i = 171 actval = 96.1332i = 172 actval = 96.2036i = 173 actval = 96.2727i = 174 actval = 96.3406i = 175 actval = 96.4072i = 176 actval = 96.4726i = 177 actval = 96.5368i = 178 actval = 96.5999i = 179 actval = 96.6618i = 180 actval = 96.7225i = 181 actval = 96.7822i = 182 actval = 96.8408i = 183 actval = 96.8983i = 184 actval = 96.9547i = 185 actval = 97.0102i = 186 actval = 97.0646i = 187 actval = 97.118i = 188 actval = 97.1705i = 189 actval = 97.222i = 190 actval = 97.2726i = 191 actval = 97.3222i = 192 actval = 97.371i = 193 actval = 97.4188i = 194 actval = 97.4658i = 195 actval = 97.512i = 196 actval = 97.5573i = 197 actval = 97.6017i = 198 actval = 97.6454i = 199 actval = 97.6882i = 200 actval = 97.7303i = 201 actval = 97.7716i = 202 actval = 97.8122i = 203 actval = 97.852i = 204 actval = 97.8911i = 205 actval = 97.9295i = 206 actval = 97.9672i = 207 actval = 98.0042i = 208 actval = 98.0406i = 209 actval = 98.0762i = 210 actval = 98.1112i = 211 actval = 98.1456i = 212 actval = 98.1794i = 213 actval = 98.2125i = 214 actval = 98.2451i = 215 actval = 98.277i = 216 actval = 98.3084i = 217 actval = 98.3392i = 218 actval = 98.3694i = 219 actval = 98.3991i = 220 actval = 98.4282i = 221 actval = 98.4568i = 222 actval = 98.4849i = 223 actval = 98.5125i = 224 actval = 98.5396i = 225 actval = 98.5662i = 226 actval = 98.5923i = 227 actval = 98.6179i = 228 actval = 98.6431i = 229 actval = 98.6678i = 230 actval = 98.692i = 231 actval = 98.7158i = 232 actval = 98.7392i = 233 actval = 98.7622i = 234 actval = 98.7847i = 235 actval = 98.8068i = 236 actval = 98.8285i = 237 actval = 98.8499i = 238 actval = 98.8708i = 239 actval = 98.8914i = 240 actval = 98.9115i = 241 actval = 98.9314i = 242 actval = 98.9508i = 243 actval = 98.9699i = 244 actval = 98.9887i = 245 actval = 99.0071i = 246 actval = 99.0252i = 247 actval = 99.0429i = 248 actval = 99.0603i = 249 actval = 99.0774i = 250 actval = 99.0942i = 251 actval = 99.1107i = 252 actval = 99.1269i = 253 actval = 99.1428i = 254 actval = 99.1584i = 255 actval = 99.1737i = 256 actval = 99.1888i = 257 actval = 99.2035i = 258 actval = 99.218i = 259 actval = 99.2323i = 260 actval = 99.2462i = 261 actval = 99.26i = 262 actval = 99.2734i = 263 actval = 99.2867i = 264 actval = 99.2996i = 265 actval = 99.3124i = 266 actval = 99.3249i = 267 actval = 99.3372i = 268 actval = 99.3493i = 269 actval = 99.3611i = 270 actval = 99.3727i = 271 actval = 99.3842i = 272 actval = 99.3954i = 273 actval = 99.4064i = 274 actval = 99.4172i = 275 actval = 99.4278i = 276 actval = 99.4382i = 277 actval = 99.4484i = 278 actval = 99.4585i = 279 actval = 99.4683i = 280 actval = 99.478i = 281 actval = 99.4875i = 282 actval = 99.4969i = 283 actval = 99.506i = 284 actval = 99.515i = 285 actval = 99.5238i = 286 actval = 99.5325i = 287 actval = 99.541i = 288 actval = 99.5494i = 289 actval = 99.5576i = 290 actval = 99.5656i = 291 actval = 99.5735i = 292 actval = 99.5813i = 293 actval = 99.5889i = 294 actval = 99.5964i = 295 actval = 99.6038i = 296 actval = 99.611i = 297 actval = 99.6181i = 298 actval = 99.625i = 299 actval = 99.6318i = 300 actval = 99.6385i = 301 actval = 99.6451i = 302 actval = 99.6516i = 303 actval = 99.6579i = 304 actval = 99.6642i = 305 actval = 99.6703i = 306 actval = 99.6763i = 307 actval = 99.6822i = 308 actval = 99.688i = 309 actval = 99.6936i = 310 actval = 99.6992i = 311 actval = 99.7047i = 312 actval = 99.7101i = 313 actval = 99.7153i = 314 actval = 99.7205i = 315 actval = 99.7256i = 316 actval = 99.7306i = 317 actval = 99.7355i = 318 actval = 99.7403i = 319 actval = 99.745i = 320 actval = 99.7497i = 321 actval = 99.7542i = 322 actval = 99.7587i = 323 actval = 99.7631i = 324 actval = 99.7674i = 325 actval = 99.7717i = 326 actval = 99.7758i = 327 actval = 99.7799i = 328 actval = 99.7839i = 329 actval = 99.7878i = 330 actval = 99.7917i = 331 actval = 99.7955i = 332 actval = 99.7992i = 333 actval = 99.8029i = 334 actval = 99.8065i = 335 actval = 99.81i = 336 actval = 99.8134i = 337 actval = 99.8168i = 338 actval = 99.8202i = 339 actval = 99.8234i = 340 actval = 99.8267i = 341 actval = 99.8298i = 342 actval = 99.8329i = 343 actval = 99.836i = 344 actval = 99.8389i = 345 actval = 99.8419i = 346 actval = 99.8448i = 347 actval = 99.8476i = 348 actval = 99.8504i = 349 actval = 99.8531i = 350 actval = 99.8558i = 351 actval = 99.8584i = 352 actval = 99.861i = 353 actval = 99.8635i = 354 actval = 99.866i = 355 actval = 99.8684i = 356 actval = 99.8708i = 357 actval = 99.8732i = 358 actval = 99.8755i = 359 actval = 99.8777i = 360 actval = 99.88i = 361 actval = 99.8821i = 362 actval = 99.8843i = 363 actval = 99.8864i = 364 actval = 99.8885i = 365 actval = 99.8905i = 366 actval = 99.8925i = 367 actval = 99.8944i = 368 actval = 99.8964i = 369 actval = 99.8982i = 370 actval = 99.9001i = 371 actval = 99.9019i = 372 actval = 99.9037i = 373 actval = 99.9055i = 374 actval = 99.9072i = 375 actval = 99.9089i = 376 actval = 99.9105i = 377 actval = 99.9122i = 378 actval = 99.9138i = 379 actval = 99.9153i = 380 actval = 99.9169i = 381 actval = 99.9184i = 382 actval = 99.9199i = 383 actval = 99.9213i = 384 actval = 99.9228i = 385 actval = 99.9242i = 386 actval = 99.9255i = 387 actval = 99.9269i = 388 actval = 99.9282i = 389 actval = 99.9295i = 390 actval = 99.9308i = 391 actval = 99.9321i = 392 actval = 99.9333i = 393 actval = 99.9345i = 394 actval = 99.9357i = 395 actval = 99.9369i = 396 actval = 99.938i = 397 actval = 99.9392i = 398 actval = 99.9403i = 399 actval = 99.9414i = 400 actval = 99.9424i = 401 actval = 99.9435i = 402 actval = 99.9445i = 403 actval = 99.9455i = 404 actval = 99.9465i = 405 actval = 99.9475i = 406 actval = 99.9485i = 407 actval = 99.9494i = 408 actval = 99.9503i = 409 actval = 99.9512i = 410 actval = 99.9521i = 411 actval = 99.953i = 412 actval = 99.9538i = 413 actval = 99.9547i = 414 actval = 99.9555i = 415 actval = 99.9563i = 416 actval = 99.9571i = 417 actval = 99.9579i = 418 actval = 99.9587i = 419 actval = 99.9594i = 420 actval = 99.9602i = 421 actval = 99.9609i = 422 actval = 99.9616i = 423 actval = 99.9623i = 424 actval = 99.963i = 425 actval = 99.9637i = 426 actval = 99.9643i = 427 actval = 99.965i = 428 actval = 99.9656i = 429 actval = 99.9662i = 430 actval = 99.9668i = 431 actval = 99.9674i = 432 actval = 99.968i = 433 actval = 99.9686i = 434 actval = 99.9692i = 435 actval = 99.9697i = 436 actval = 99.9703i = 437 actval = 99.9708i = 438 actval = 99.9714i = 439 actval = 99.9719i = 440 actval = 99.9724i = 441 actval = 99.9729i = 442 actval = 99.9734i = 443 actval = 99.9739i = 444 actval = 99.9744i = 445 actval = 99.9748i = 446 actval = 99.9753i = 447 actval = 99.9757i = 448 actval = 99.9762i = 449 actval = 99.9766i = 450 actval = 99.9771i = 451 actval = 99.9775i = 452 actval = 99.9779i = 453 actval = 99.9783i = 454 actval = 99.9787i = 455 actval = 99.9791i = 456 actval = 99.9794i = 457 actval = 99.9798i = 458 actval = 99.9802i = 459 actval = 99.9805i = 460 actval = 99.9809i = 461 actval = 99.9812i = 462 actval = 99.9816i = 463 actval = 99.9819i = 464 actval = 99.9822i = 465 actval = 99.9826i = 466 actval = 99.9829i = 467 actval = 99.9832i = 468 actval = 99.9835i = 469 actval = 99.9838i = 470 actval = 99.9841i = 471 actval = 99.9844i = 472 actval = 99.9847i = 473 actval = 99.9849i = 474 actval = 99.9852i = 475 actval = 99.9855i = 476 actval = 99.9858i = 477 actval = 99.986i = 478 actval = 99.9863i = 479 actval = 99.9865i = 480 actval = 99.9868i = 481 actval = 99.987i = 482 actval = 99.9873i = 483 actval = 99.9875i = 484 actval = 99.9877i = 485 actval = 99.9879i = 486 actval = 99.9882i = 487 actval = 99.9884i = 488 actval = 99.9886i = 489 actval = 99.9888i = 490 actval = 99.989i = 491 actval = 99.9892i = 492 actval = 99.9894i = 493 actval = 99.9896i = 494 actval = 99.9898i = 495 actval = 99.99i = 496 actval = 99.9902i = 497 actval = 99.9903i = 498 actval = 99.9905i = 499 actval = 99.9907i = 500 actval = 99.9908i = 501 actval = 99.991i = 502 actval = 99.9912i = 503 actval = 99.9913i = 504 actval = 99.9915i = 505 actval = 99.9916i = 506 actval = 99.9918i = 507 actval = 99.9919i = 508 actval = 99.9921i = 509 actval = 99.9922i = 510 actval = 99.9924i = 511 actval = 99.9925i = 512 actval = 99.9926i = 513 actval = 99.9928i = 514 actval = 99.9929i = 515 actval = 99.993i = 516 actval = 99.9932i = 517 actval = 99.9933i = 518 actval = 99.9934i = 519 actval = 99.9935i = 520 actval = 99.9937i = 521 actval = 99.9938i = 522 actval = 99.9939i = 523 actval = 99.994i = 524 actval = 99.9941i = 525 actval = 99.9942i = 526 actval = 99.9943i = 527 actval = 99.9944i = 528 actval = 99.9945i = 529 actval = 99.9946i = 530 actval = 99.9947i = 531 actval = 99.9948i = 532 actval = 99.9949i = 533 actval = 99.995i = 534 actval = 99.9951i = 535 actval = 99.9952i = 536 actval = 99.9953i = 537 actval = 99.9954i = 538 actval = 99.9954i = 539 actval = 99.9955i = 540 actval = 99.9956i = 541 actval = 99.9957i = 542 actval = 99.9958i = 543 actval = 99.9958i = 544 actval = 99.9959i = 545 actval = 99.996i = 546 actval = 99.9961i = 547 actval = 99.9961i = 548 actval = 99.9962i = 549 actval = 99.9963i = 550 actval = 99.9964i = 551 actval = 99.9964i = 552 actval = 99.9965i = 553 actval = 99.9965i = 554 actval = 99.9966i = 555 actval = 99.9967i = 556 actval = 99.9967i = 557 actval = 99.9968i = 558 actval = 99.9968i = 559 actval = 99.9969i = 560 actval = 99.997i = 561 actval = 99.997i = 562 actval = 99.9971i = 563 actval = 99.9971i = 564 actval = 99.9972i = 565 actval = 99.9972i = 566 actval = 99.9973i = 567 actval = 99.9973i = 568 actval = 99.9974i = 569 actval = 99.9974i = 570 actval = 99.9975i = 571 actval = 99.9975i = 572 actval = 99.9976i = 573 actval = 99.9976i = 574 actval = 99.9976i = 575 actval = 99.9977i = 576 actval = 99.9977i = 577 actval = 99.9978i = 578 actval = 99.9978i = 579 actval = 99.9979i = 580 actval = 99.9979i = 581 actval = 99.9979i = 582 actval = 99.998i = 583 actval = 99.998i = 584 actval = 99.998i = 585 actval = 99.9981i = 586 actval = 99.9981i = 587 actval = 99.9981i = 588 actval = 99.9982i = 589 actval = 99.9982i = 590 actval = 99.9982i = 591 actval = 99.9983i = 592 actval = 99.9983i = 593 actval = 99.9983i = 594 actval = 99.9984i = 595 actval = 99.9984i = 596 actval = 99.9984i = 597 actval = 99.9985i = 598 actval = 99.9985i = 599 actval = 99.9985

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。