當前位置:編程學習大全網 - 編程語言 - 時間間隔編程

時間間隔編程

我對三軸轉臺的伺服控制系統了解不多,但對PID略知壹二。

下面是壹個C#版本的PID控制器,我用來控制網絡爬蟲的爬行速度。妳可以很容易地把它翻譯成C語言。

使用分兩步:第壹步,初始化。二、測量控制系統的數值(如速度、溫度等。)並將其代入PID控制器以產生新的控制因子。

初始化:其中SpeedSetting是妳要設置的抓取速度,如果是妳的控制系統,就是妳的系統值。IntervalTime是控制因素,我用它作為讀取壹個網頁後的等待時間來控制爬蟲速度。如果是妳的系統,那就是通過它的變化來控制系統的價值。初始化代碼:

PID _ Con = new PID controller(speed setting,IntervalTime,-0.1f,-0.05f,0.0f);

PID _ Con . LimitLow = 0.2f

PID _ Con . limit high = 100.0 f;

定時測量:其中value是測量值,可以使速度、溫度等。,或由您的控制系統控制的數量。

float value =(float)(URL count-LastUrlCount);//計算當前時間間隔內抓取的網頁數量。

IntervalTime = PID_Con .觀測值(值);//將測量值(或觀測值)帶入PID控制器,獲得新的控制因子值。

LastUrlCount = UrlCount

在妳的系統裏,可以類比實現。

公共類PIDControler

{

公共浮動限制流量;//上限

公共浮動上限高;//下限

私人浮動Kp;//差異系數

私人浮動Ki;//積分系數

私人浮動Kd;//微分系數

私有float ControlParam//控制因素

私有浮點設置值;//設置值

私有浮點LastDiff//最後壹個差異

私有浮點LastSumDiff//最後差值的積分

公共PIDControler(浮點集合、浮點初始化、浮點p、浮點I、浮點d)

{

LimitLow = 0.0flimit high = 1000.0 f;

SettingValue = setsControlParam = init

KP = p;ki = I;KD = d;

LastDiff = 0.0fLastSumDiff = 0.0f

}

公共浮動觀測(浮動值)

{

float diff=(設置值-值);

if(math . ABS(diff/setting value)& lt;0.01)//控制差分積分下限

LastSumDiff = 0.0f

else if(math . ABS(LastSumDiff)& gt;SettingValue*2)//控制差分積分的上限。

LastSumDiff/= 2.0f;

其他

LastSumDiff+= diff;//差分積分

control param+= Kp * diff+Ki * LastSumDiff+Kd *(diff-last diff);//計算控制因子

if(control param & lt;limit low)control param = limit low;//限制控制因子的上限

if(control param & gt;limit high)control param = limit high;//限制控制因子的下限

LastDiff = diff

返回ControlParam//返回控制因子

}

}

  • 上一篇:學計算機主要是學什麽
  • 下一篇:如何識別工業機器人編程
  • copyright 2024編程學習大全網