ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:ipidrun

文書の過去の版を表示しています。


IpidRun()

IpidRun()は現在値と設定値を使ってPID出力を計算します。

IpidRun コマンドの動作フロー

float IpidRun(uint8_t id, float pv, float sv)

コマンド

コマンド 引数 戻り値 動作
IpidRun(id, pv, sv) uint8_t id — PIDループ番号。0 ~ 255を使用可能
float pv — 現在値。Present Value
float sv — 目標値。Set Value
float 現在値と設定値を使ってPID出力を計算します。

使用例

void setup() {
  IpidSet(2, 4.0, 0.2, 0.0, 100, 0, 255);  // PID係数、計算周期、出力範囲を設定します。
  IpidReverse(2, true);  // PIDの正動作または逆動作を選択します。
}
 
void loop() {
  float pv = ntcRead(4) / 10.0;  // NTC 3950 10kΩセンサの温度を0.1℃単位の整数で返します。
  float sv = 25.0;
  int output = (int)IpidRun(2, pv, sv);  // 現在値と設定値からPID出力を計算します。
 
  analogWrite(11, output);
}

注意事項

  • PID出力は現場機器に直接影響する場合があるため、最初は低い出力範囲と小さなゲインでテストしてください。
  • IpidRun()sampleMs周期に達するまでは直前の出力値を保持します。loop()で繰り返し呼び出しても構いません。
  • 積分項は出力制限を基準に自動制限され、ワインドアップを低減します。追加の制限が必要な場合はIpidItermLimit()を使用します。
  • 微分項は設定値変更による急激な跳ねを抑えるため、PV変化量を基準に計算します。
  • IpidReset()は積分項、直前のPV、直前の出力値を初期化します。
  • 同じidは1つの制御ループだけに使用します。

← 内蔵コマンド一覧

ja-jp_commands/reference/ipidrun.1788791738.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki