ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:ipidreset

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
ja-jp_commands:reference:ipidreset [2026/09/07 21:53] – 만듦 - 바깥 편집 127.0.0.1ja-jp_commands:reference:ipidreset [2026/10/25 10:18] (現在) – 外部編集 127.0.0.1
行 14: 行 14:
  
 ===== 使用例 ===== ===== 使用例 =====
 +
 +MPINO-16A8R8TのA0をPIDの現在値として読みます。D22入力がLOWからHIGHに変わると、PIDの内部状態を一度初期化します。計算結果はシリアルモニタにのみ表示します。A0の設定とD22の配線は製品仕様で確認してください。
  
 <code cpp> <code cpp>
-bool IpidSet(uint8_t id, float kp, float ki, float kd, unsigned long sampleMs, float outMin, float outMax); +const uint8_t PID_ID = 0; 
-float IpidRun(uint8_t id, float pv, float sv); + 
-void IpidReset(uint8_t id); +void setup() { 
-void IpidReverse(uint8_t id, bool reverse); +  Serial.begin(115200); 
-void IpidItermLimit(uint8_t id, float iMin, float iMax); +  IpidSet(PID_ID, 2.0F, 0.4F, 0.1F, 100, 0.0F, 1023.0F);  // PID係数、計算周期、出力範囲を設定します。 
-float IpidOutput(uint8_t id);+} 
 + 
 +void loop() { 
 +  static bool wasHigh = false; 
 +  const bool isHigh = digitalRead(22) == HIGH; 
 +  if (isHigh && !wasHigh) IpidReset(PID_ID);  // D22の立ち上がりでPID内部状態を初期化します。 
 +  wasHigh = isHigh; 
 +  const float currentValue = analogRead(A0);  // A0のADC生値を読み出します。 
 +  const float result = IpidRun(PID_ID, currentValue, 512.0F);  // A0の生値と目標値512からPID出力を計算します。 
 +  Serial.println(result); 
 +  delay(100); 
 +}
 </code> </code>
  
行 29: 行 42:
   * ''IpidRun()''は''sampleMs''周期に達するまでは直前の出力値を保持します。''loop()''で繰り返し呼び出しても構いません。   * ''IpidRun()''は''sampleMs''周期に達するまでは直前の出力値を保持します。''loop()''で繰り返し呼び出しても構いません。
   * 積分項は出力制限を基準に自動制限され、ワインドアップを低減します。追加の制限が必要な場合は''IpidItermLimit()''を使用します。   * 積分項は出力制限を基準に自動制限され、ワインドアップを低減します。追加の制限が必要な場合は''IpidItermLimit()''を使用します。
-  * 微分項は設定値変更による急激な跳ねを抑えるため、PV変化量を基準に計算します。+  * 微分項は設定値の変更による急激な変動を抑えるため、PV変化量を基準に計算します。
   * ''IpidReset()''は積分項、直前のPV、直前の出力値を初期化します。   * ''IpidReset()''は積分項、直前のPV、直前の出力値を初期化します。
   * 同じ''id''は1つの制御ループだけに使用します。   * 同じ''id''は1つの制御ループだけに使用します。
 +
 +===== 同じカテゴリの内蔵コマンド =====
 +
 +  * [[:ja-jp_commands:reference:ipidset|IpidSet() 詳細説明を見る]]
 +  * [[:ja-jp_commands:reference:ipidrun|IpidRun() 詳細説明を見る]]
 +  * [[:ja-jp_commands:reference:ipidreverse|IpidReverse() 詳細説明を見る]]
 +  * [[:ja-jp_commands:reference:ipiditermlimit|IpidItermLimit() 詳細説明を見る]]
 +  * [[:ja-jp_commands:reference:ipidoutput|IpidOutput() 詳細説明を見る]]
  
 [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]
  
ja-jp_commands/reference/ipidreset.1788785590.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki