❶ 變速積分pid 演算法
剛好前不久搞過PID,部分程序如下,僅供參考
/*==============================================================================
在使用單片機作為控制cpu時,請稍作簡化,具體的PID參數必須由具體對象通過實驗確定。
由於單片機的處理速度和ram資源的限制,一般不採用浮點數運算,而將所有參數全部用整數,
運算到最後再除以一個2的N次方數據(相當於移位),作類似定點數運算,可大大提高運算速度,
根據控制精度的不同要求,當精度要求很高時,注意保留移位引起的「余數」,做好余數補償。
這個程序只是一般常用pid演算法的基本架構,沒有包含輸入輸出處理部分。
==============================================================================*/
#include <string.h>
#include <stdio.h>
/*===============================================================================
PID Function
The PID function is used in mainly
control applications. PID Calc performs one iteration of the PID
algorithm.
While the PID function works, main is just a mmy program showing
a typical usage.
PID功能
在PID功能主要用於控制應用。 PID 計算器執行一個PID的迭代演算法。雖然PID功能的工程,
主要只是一個虛擬程序顯示一個典型的使用。
================================================================================*/
typedef struct PID {
double SetPoint; // 設定目標 Desired Value
double Proportion; // 比例常數 Proportional Const
double Integral; // 積分常數 Integral Const
double Derivative; // 微分常數 Derivative Const
double LastError; // Error[-1]
double PrevError; // Error[-2]
double SumError; // Sums of Errors
} PID;
/*================================ PID計算部分===============================*/
double PIDCalc( PID *pp, double NextPoint )
{
double dError, Error;
Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 積分
dError = pp->LastError - pp->PrevError; // 當前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error // 比例項
+ pp->Integral * pp->SumError // 積分項
+ pp->Derivative * dError // 微分項
);
}
/*======================= 初始化的PID結構 Initialize PID Structure===========================*/
void PIDInit (PID *pp)
{
memset ( pp,0,sizeof(PID));
}
/*======================= 主程序 Main Program=======================================*/
double sensor (void) // 虛擬感測器功能 Dummy Sensor Function{ return 100.0;}
void actuator(double rDelta) // 虛擬驅動器功能 Dummy Actuator Function{}
void main(void)
{
PID sPID; // PID控制結構 PID Control Structure
double rOut; // PID響應(輸出) PID Response (Output)
double rIn; // PID反饋(輸入) PID Feedback (Input)
PIDInit ( &sPID ); // 初始化結構 Initialize Structure
sPID.Proportion = 0.5; // 設置PID系數 Set PID Coefficients
sPID.Integral = 0.5;
sPID.Derivative = 0.0;
sPID.SetPoint = 100.0; // 設置PID設定 Set PID Setpoint
for (;;)
{ // 模擬最多的PID處理 Mock Up of PID Processing
rIn = sensor (); // 讀取輸入 Read Input
rOut = PIDCalc ( &sPID,rIn ); // 執行的PID迭代 Perform PID Interation
actuator ( rOut ); // 所需的更改的影響 Effect Needed Changes
}
❷ 什麼叫積分飽和現象目前防止積分飽和的方法有哪幾種
如果執行機構已經到極限位置,仍然不能消除靜差時,由於積分作用,盡管PID差分方程式所得的運算結果繼續增大或減小,但執行機構已無相應的動作,這就叫積分飽和。1 R" g; j: v; @+ M2 h
1、當偏差產生躍變時,位置型PID算式的輸出將急劇增大或減小,有可能超過執行機構的上(下)限,而此時執行機構只能工作在上限。: j K, Y& h5 J, m
2、系統輸出需要很長時間才達到給定值,在這段時間內算式的積分項將產生一個很大的積累值。
3、當系統輸出超過給定值後,偏差反向,但由於大的積分積累值,控制量需要相當一段時間脫離飽和區。因此引起系統產生大幅度超調,系統不穩定
常用的改進方法:
1.積分分離法2.變速積分 PID 控制演算法3.超限削弱積分法4.有效偏差法5.抗積分飽和
❸ 單片機開發與典型工程項目實例詳解的目 錄
1.1 單片機的應用和特點 1
1.1.1 單片機的應用 1
1.1.2 主流單片機的種類及特點 3
1.2 MCS-51系列單片機的內部結構 7
1.3 MCS-51單片機的引腳功能與時序 9
1.3.1 MCS-51系列單片機引腳說明 10
1.3.2 MCS-51單片機的時序 16
1.4 MCS-51單片機的存儲器組織 17
1.4.1 程序存儲器 18
1.4.2 數據存儲器 19
1.4.3 特殊功能寄存器 21
1.5 單片機最小系統 24
1.5.1 單片機最小系統 24
1.5.2 彩燈控制器的設計 25
1.5.3 順序控制器的設計 27
1.6 本章小結 29 2.1 單片機C語言宏配置介紹 30
2.1.1 處理器的配置 30
2.1.2 ID區域 31
2.1.3 EEPROM數據 31
2.2 單片機數據結構 31
2.2.1 類型限定詞 32
2.2.2 常數 33
2.2.3 變數 34
2.2.4 構造數據類型 38
2.2.5 函數 46
2.2.6 中斷 49
2.2.7 C語言和匯編語言的嵌套使用 53
2.2.8 偽指令 54
2.3 MPLAB IDE編譯器簡介 57
2.3.1 MPLAB工程管理器(MPLAB Project Manager) 57
2.3.2 MPLAB文本編輯器(MPLAB Editor) 57
2.3.3 MPLAB軟體模擬器(MPLAB-SIM Simulator) 58
2.3.4 MPLAB在線模擬器(MPLAB-ICE Simulator) 58
2.4 MPLAB IDE的安裝和使用 58
2.4.1 MPLAB IDE的安裝要求 58
2.4.2 MPLAB IDE的使用 59
2.4.3 實例應用 59
2.4.4 MPLAB IDE中的工程 62
2.4.5 MPLAB IDE工程的編譯 65
2.4.6 MPLAB IDE的軟體模擬 66
2.5 MCC18基礎 68
2.5.1 MCC18的安裝目錄瀏覽 68
2.5.2 MCC18的語言執行流程 70
2.5.3 MCC18舉例 70
2.5.4 MCC18的編譯環境 72
2.5.5 MCC18和單片機的比較 73
2.6 單片機的混合開發 74
2.6.1 C51和匯編語言的性能比較 74
2.6.2 C51和匯編語言的混合編程 74
2.7 本章小結 79 3.1 單片機應用系統設計的流程 80
3.2 單片機應用系統兩設計原則 82
3.2.1 硬體系統設計原則 82
3.2.2 應用軟體設計原則 83
3.3 單片機的選型 83
3.3.1 單片機選型的原則 83
3.3.2 單片機選型參考 85
3.3.3 開發工具的選擇 86
3.4 系統常見故障與調試 87
3.5 本章小結 88 4.1 數字濾波演算法 89
4.1.1 算術平均值濾波 90
4.1.2 滑動平均值濾波 92
4.1.3 防脈沖干擾平均值濾波 93
4.1.4 中值濾波 95
4.1.5 一階滯後濾波 96
4.2 數字PID控制演算法 97
4.2.1 位置式PID控制演算法 98
4.2.2 增量式PID控制演算法 100
4.2.3 積分分離的PID控制演算法 102
4.2.4 變速積分PID控制演算法 103
4.3 本章小結 104 5.1 鍵盤設計的組成和分類 105
5.1.1 鍵盤的物理結構 106
5.1.2 鍵盤的組成形式 106
5.2 鍵盤介面的工作過程和工作方式 111
5.2.1 鍵盤的抖動干擾和消除方法 111
5.2.2 盤介面的工作過程 112
5.2.3 鍵盤的工作方式 112
5.3 鍵位置的判別方法 113
5.4 鍵盤介面設計的儲存晶元和
5.4 相關協議 114
5.4.1 鍵盤介面設計的儲存晶元 114
5.4.2 AT24CXX系列的晶元及I2C協議 114
5.4.3 A93CXX系列的晶元及SPI協議 124
5.5 鍵盤介面實現的工程實例 132
5.5.1 矩陣鍵盤介面的工程實例 132
5.5.2 矩陣式中斷掃描鍵盤的設計 137
5.5.3 二進制編碼鍵盤介面的工程實例 139
5.6 重點與難點 141 6.1 交通燈順序控制 143
6.1.1 硬體系統的設計 143
6.1.2 反向器74F06 145
6.1.3 控制字 145
6.1.4 程序設計 145
6.2 設計一種基於模糊理論的單片機控制交通路口調度系統 148
6.2.1 系統的總體設計 148
6.2.2 十字路口調度系統模糊控制器的設計 149
6.2.3 電路設計 151
6.2.4 車流量檢測電路 154
6.2.5 系統主程序和模糊控製程序設計 155
6.2.6 系統顯示程序設計 157
6.3 重點與難點 159 7.1 顯示屏顯示原理及串列通信基本概念 161
7.1.1 顯示屏顯示原理 161
7.1.2 串列通信 163
7.1.3 陣列式LED顯示屏的實現 166
7.2 顯示屏硬體電路設計 166
7.2.1 硬體電路介紹 168
7.2.2 外擴數據存儲器電路 170
7.3 列式LED顯示屏顯示程序的171
7.3.1 漢字點陣數據的提取 171
7.3.2 顯示主程序 174
7.3.3 串口中斷處理程序 176
7.3.4 顯示驅動函數 179
7.3.5 外部存儲器讀寫程序 181
7.3.6 串口通信程序 181
7.3.7 文字顯示特效程序 182
7.4 本章小結 191 8.1 IC卡基礎 192
8.1.1 IC卡的分類 192
8.1.2 IC卡的標准 194
8.2 接觸型IC卡讀寫系統的開發 194
8.2.1 IC卡讀寫系統的時序 195
8.2.2 IC卡讀寫系統的硬體連196
8.2.3 IC卡讀寫系統的軟體系統 197
8.3 基於SLE4442加密卡讀寫系統的開發 201
8.3.1 SLE4442卡的介紹 201
8.3.2 SLE4442的模式 203
8.3.3 SLE4442的操作命令 205
8.3.4 SLE4442讀/寫系統的軟硬體設計 208
8.4 重點與難點 215 9.1 無刷直流電機控制原理 216
9.1.1 無刷直流電機的組成 217
9.1.2 無刷直流電機的工作原理 217
9.1.3 無刷直流電機的控制方法 219
9.2 無刷直流電機的工作特性 220
9.3 直流無刷電機控制的應用實現 221
9.3.1 總體設計概述 221
9.3.2 直流無刷電機控制的硬體設計 222
9.3.3 直流無刷電機控制的軟體設計 224
9.3.4 無刷直流電機速度閉環控制系統 227
9.4 本章小結 230 10.1 永磁同步電機的結構與分類 231
10.2 永磁同步電機的矢量控制 232
10.3 永磁同步電機控制 236
10.3.1 控制電路設計 237
10.3.2 光電隔離電路設計 238
10.3.3 功率電路設計 239
10.4 永磁同步電機控制的軟體實現 239
10.4.1 電壓SVPVM的DSPIC33f軟體實現 241
10.4.2 轉子位置檢測 243
10.4.3 AD轉換模塊 245
10.5 本章小結 246 11.1 汽車行駛記錄儀功能介紹 247
11.2 簡易汽車行駛記錄儀的設計 249
11.2.1 汽車行駛記錄儀的考慮因素 250
11.2.1 MSP430 251
11.2.2 車模擬信號的採集 254
11.2.4 數字信號採集電路 255
11.2.5 SST39VF160晶元介紹 257
11.3 記錄儀的軟體設計 257
11.3.1 軟體流程圖 258
11.3.2 數據存儲格式 259
11.3.3 SST39VF160存儲器數據讀寫的實現 259
11.4 數據採集的程序實現 263
11.5 本章小結 264 12.1 USB-GPIB控制器簡介 265
12.1.1 認識USB 266
12.1.2 GPIB 269
12.2 USB-GPIB控制器的硬體電路設計 271
12.2.1 器件的選擇 272
12.2.2 USB-GPIB控制器電路設計 278
12.3 USB-GPIB控制器的軟體程序的實現 287
12.3.1 USB單片機協議控制晶元與主機(計算機)的數據交互 288
12.3.2 USB協議控制晶元與GPIB控制器的數據交互 299
12.4 USB-GPIB控制器固件的調試與固化 300
12.4.1 USB-GPIB控制器固件的調試 301
12.4.2 USB-GPIB控制器固件程序的固化 302
12.5 本章小結 303 13.1 研究抗干擾技術的重要性 304
13.2 干擾的分類 305
13.2.1 按雜訊產生的原因分類 306
13.2.2 按雜訊傳導模式分類 306
13.2.3 按雜訊波形及性質分類 307
13.3 干擾的耦合方式 308
13.4 單片機系統可靠性的設計任務與方法 310
13.4.1 單片機系統可靠性設計的任務 310
13.4.2 可靠性設計一般方法 311
13.5 本章小結 313 14.1 無源濾波器抗干擾 314
14.1.1 電容濾波器 315
14.1.2 電感濾波器 316
14.1.3 RC低通濾波器 316
14.1.4 1LC低通濾波器 318
14.1.5 低通濾波器的結構選擇 319
14.1.6 低通濾波器的平衡結構與串聯形式 319
14.2 有源濾波器抗干擾 321
14.2.1 一級低通有源濾波器 321
14.2.2 二級低通有源濾波器 322
14.3 去耦電路 324
14.3.1 尖峰電流的形成原理 324
14.3.2 去耦電容的配置 325
14.3.3 光電隔離 326
14.3.4 繼電器隔離 328
14.3.5 變壓器隔離 328
14.3.6 布線隔離 329
14.4 接地技術 330
14.5 本章小結 334 15.1 概述 335
15.2 指令冗餘技術 336
15.2.1 單位元組指令冗餘 337
15.2.2 重要指令冗餘 337
15.3 軟體陷阱技術 337
15.3.1 未使用的中斷向量區設置陷阱 338
15.3.2 RAM數據區中設置陷阱 338
15.3.3 未使用的EPROM數據區設置陷阱 339
15.3.4 非EPROM單片機空間設置陷阱 339
15.3.5 運行程序區設置陷阱 339
15.4 看門狗技術 339
15.4.1 硬體看門狗技術 340
15.4.2 軟體看門狗技術 342
15.5 本章小結 345

❹ 積分飽和的常用的改進方法
1.積分分離法
2.變速積分 PID 控制演算法
3.超限削弱積分法
4.有效偏差法
5.抗積分飽和機制 基本思路:當位置型PID算式的控制輸出超過限制范圍時,控制量只能取邊界值。有效偏差法的實質是將相當於邊界控制量的偏差值作為有效偏差值進行積分。

❺ pid參數如何整定
PID參數整定是一個復雜的過程,一般需要根據被對象慢慢進行。
常用的方進有擴充臨界比例度整定法和擴充響應曲線法兩種。適合計算機控制用的簡易方法一簡化擴充臨界比例度整定法,該方法是Roberts P.D 於1974 年提出的。
由於該方法只需整定一一個參數即可,故又稱為歸一參數整定法。

(5)變速積分pid控制演算法文獻綜述擴展閱讀
模擬PID 演算法中許多行之數字PID是在模擬PID演算法的基礎上,用差分方程代替連續方程,有效的方法都可以用到數字PID 運算中,如數字PID 的參數整定方法源於模擬PID 演算法,化要有一個前提,即采樣周期足夠小。
在這種情況下,采樣系統的PID就非常接近於連續系統的模擬PID 控制。隨著計算機控制技術的發展,數字PID 控製得到了很大的發展,這些演算法既適用於增量型,也適用於位置型,演算法的選用主要取決於執行機構。在這些改進型演算法中,變速積分是目前最好的數字PID 演算法之一。
因為積分分離演算法的數字PID 積分的取含由個被限值確定,屬於開關控制,而安速積分則是線性控制,因而得到了廣泛的應用。不完全微分演算法顯然比較復雜,但其控制特性良好因此它的應用越來越廣泛。
參考資料
網路--PID參數整定
❻ 如何消除積分飽和作用
1.積分分離法
2.變速積分 PID 控制演算法
3.超限削弱積分法
4.有效偏差法
5.抗積分飽和機制
遇限削弱積分法
基本思路:在計算P(k)時,根據上一時刻的控制量P(k-1)是否超過限制范圍,若超出則根據偏差決定是否累計積分項(若未進入超調區域則不累計積分項,否則開始累計積分項)。
有效偏差法
基本思路:當位置型PID算式的控制輸出超過限制范圍時,控制量只能取邊界值。有效偏差法的實質是將相當於邊界控制量的偏差值作為有效偏差值進行積分。
❼ 如何對PID實現同步控制,什麼樣可以實現呢
在工業控制中,PID控制(比例-積分-微分控制)得到了廣泛的應用,這是因為PID控制具有以下優點:
01
不需要知道被控對象的數學模型。實際上大多數工業對象准確的數學模型是無法獲得的,對於這一類系統,使用PID控制可以得到比較滿意的效果。據日本統計,目前PID及變型PID 約占總控制迴路數的90%左右。
02
PID控制器具有典型的結構,程序設計簡單,參數調整方便。
03
有較強的靈活性和適應性,根據被控對象的具體情況,可以採用各種PID控制的變種和改進的控制方式,如 PI、PD、帶死區的PID、積分分離式PID、變速積分PID等。隨著智能控制技術的發展,PID控制與模糊控制、神經網路控制等現代控制方法相結合,可以實現PID控制器的參數自整定,使PID控制器具有經久不衰的生命力。
二,PLC實現PID控制的方法
如圖所示為採用PLC對模擬量實行PID控制的系統結構框圖。用PLC對模擬量進行PID控制時,可以採用以下幾種方法:
如圖 用PLC實現模擬量PID控制的系統結構框圖
使用PID過程式控制制模塊。這種模塊的PID控製程序是PLC生產廠家設計的,並存放在模塊中,用戶在使用時只需要設置一些參數,使用起來非常方便,一塊模塊可以控制幾路甚至幾十路閉環迴路。但是這種模塊的價格昂貴,一般在大型控制系統中使用。如三菱的A系列、Q系列PLC的PID控制模塊。
三,FX2N的PID指令
PID指令的編號為FNC88,如圖6-36所示源操作數[S1]、[S2]、[S3]和目標操作數[D]均為數據寄存器D,16位指令,佔9個程序步。[S1]和[S2]分別用來存放給定值SV和當前測量到的反饋值PV,[S3]~[S3]+6用來存放控制參數的值,運算結果MV存放在[D]中。源操作數[S3]佔用從[S3]開始的25個數據寄存器。
如圖 PID指令
PID指令是用來調用PID運算程序,在PID運算開始之前,應使用MOV指令將參數(見表6-3)設定值預先寫入對應的數據寄存器中。如果使用有斷電保持功能的數據寄存器,不需要重復寫入。如果目標操作數[D]有斷電保持功能,應使用初始化脈沖M8002的常開觸點將其復位。
表6-3 PID控制參數及設定
ID指令可以同時多次使用,但是用於運算的[S3]、[D]的數據寄存器元件號不能重復。
PID指令可以在定
❽ 20. 在PID運算中,常常出現積分飽和,問什麼叫積分飽和產生積分飽和後有什麼危害
一、對於有積分作用的調節器來說,理論上只要被調量與設定值之間存在偏差,調節器的積分作用就要使它的輸出信號永遠不停地變化,直到將輸入偏差被完全消除為止。 3 Z* G+ n' _6 ?
但是,由於運行中某種原因往往使閥門關閉,或泵突然出現故障等,調節參數無法使控制系統的被調參數回復到給定值,而調節器仍要按其自身的規律繼續動作,試圖通過改變其輸出信號來校正之。因這個系統的偏差已不可能被消除,調節器的輸出將繼續朝加大偏差的方向變化,直到其輸出信號上升或下降到遠離工藝要求的調節器的給定值,甚至超出了統一規定的信號范圍,這個就是積分飽和
二、如果執行機構已經到極限位置,仍然不能消除靜差時,由於積分作用,盡管PID差分方程式所得的運算結果繼續增大或減小,但執行機構已無相應的動作,這就叫積分飽和。8 J4 l1 ~" }- k- a
常用的改進方法:
1.積分分離法2.變速積分 PID 控制演算法3.超限削弱積分法4.有效偏差法5.抗積分飽和
❾ pid參數是如何整定的
參數需要在中控面板當中選擇我們的調整平台,然後找到系統設置更改才可以整定。