このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
離散時間と連続時間の PID コントローラー
Simulink / Discrete
HDL Coder / Discrete
HDL Coder / HDL Floating Point Operations
Discrete PID Controller ブロックは、PID コントローラー (PID、PI、PD、P のみ、I のみ) を実装します。このブロックは、[時間領域] パラメーターを [離散時間]
に設定した PID
Controller ブロックと同じです。
ブロックの出力は、入力信号、入力信号の積分、および入力信号の微分の重み付き総和です。重みは比例、積分、および微分のゲイン パラメーターです。1 次極によって微分動作がフィルター処理されます。
このブロックでは、複数のコントローラー タイプと構造がサポートされます。ブロックの設定可能なオプションは次のとおりです。
コントローラー タイプ (PID、PI、PD、P のみ、I のみ) — [コントローラー] パラメーターを参照してください。
コントローラー形式 (並列または理想) — [形式] パラメーターを参照してください。
時間領域 (連続または離散) — [時間領域] パラメーターを参照してください。
初期条件とリセット トリガー — [ソース] パラメーターおよび [外部リセット] パラメーターを参照してください。
出力飽和の制限および組み込みのアンチワインドアップ メカニズム — [出力を制限する] パラメーターを参照してください。
バンプレス制御転送とマルチループ制御の信号トラッキング — [トラッキングモードを有効にする] パラメーターを参照してください。
これらのオプションを変更すると、さまざまなバリアント サブシステムがアクティブになり、ブロックの内部構造が変わります (詳細については、Variant Subsystemを参照してください)。ブロックの内部構造とバリアント サブシステムを調べるには、ブロックを右クリックし、[マスク] 、 [マスク内を表示] を選択します。
一般的な実装では、PID Controller ブロックはフィードバック ループのフィードフォワード パスで動作します。
ブロックの入力は通常、基準信号とシステム出力の差を示す誤差信号です。設定点の重みを許可する 2 入力ブロックについては、Discrete PID Controller (2DOF) を参照してください。
PID コントローラーのゲインは手動でも自動でも調整が可能です。自動調整には、Simulink® Control Design™ ソフトウェアが必要です。自動調整の詳細については、[調整法の選択] パラメーターを参照してください。
Port_1(u)
— 誤差信号入力基準信号と制御下のシステムの出力の差。次のようになります。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
P
— 比例ゲイン比例ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
I
— 積分ゲイン積分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
ゲインを外部から提供する場合、積分ゲインの時間変化も積分されます。この結果は、PID ゲインがブロック内で実装される方法であるために発生します。詳細については、[コントローラーのパラメーター] の [ソース] パラメーターを参照してください。
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D
— 微分ゲイン微分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
ゲインを外部から提供する場合、微分ゲインの時間変化も微分されます。この結果は、PID ゲインがブロック内で実装される方法であるために発生します。詳細については、[コントローラーのパラメーター] の [ソース] パラメーターを参照してください。
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
N
— フィルター係数微分フィルター係数。外部のソースからブロックに提供されます。外部係数入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を不完全微分をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
リセット
— 外部リセット トリガー積分器とフィルターを初期条件にリセットするトリガー。リセットが立ち上がり信号、立ち下がり信号、レベル信号のいずれで発生するかは、[外部リセット] パラメーターの値で決まります。選択されたトリガー タイプは端子のアイコンで示されます。たとえば、次の図は、[外部リセット] が [立ち上がり]
に設定された連続時間 PID ブロックを示しています。
トリガーが発生すると、ブロックにより、積分器とフィルターが、[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターまたは [I0] 端子と [D0] 端子で指定された初期条件にリセットされます。
メモ
Motor Industry Software Reliability Association (MISRA®) ソフトウェア標準規格に準拠するために、モデルで Boolean 信号を使って PID controller ブロックの外部リセット端子を駆動しなければなりません。
この端子を有効にするには、[外部リセット] を [なし]
以外のいずれかの値に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
| Boolean
I0
— 積分器の初期条件積分器の初期条件。外部のソースからブロックに提供されます。
この端子を有効にするには、[初期条件] の [ソース] を [外部]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D0
— フィルターの初期条件微分フィルターの初期条件。外部のソースからブロックに提供されます。
この端子を有効にするには、[初期条件] の [ソース] を [外部]
に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
up
— 出力の飽和の上限ブロックの出力の上限。外部のソースからブロックに提供されます。比例、積分、微分動作の重み付き総和がこの端子で提供される値を上回ると、ブロック出力はこの値に保持されます。
この端子を有効にするには、[出力を制限する] を選択して出力の飽和の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
lo
— 出力の飽和の下限ブロックの出力の下限。外部のソースからブロックに提供されます。比例、積分、微分動作の重み付き総和がこの端子で提供される値を下回ると、ブロック出力はこの値に保持されます。
この端子を有効にするには、[出力を制限する] を選択して出力の飽和の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
TR
— トラッキング信号追跡するコントローラー出力の信号。信号トラッキングがアクティブな場合、トラッキング信号とブロック出力の差が積分器入力に返されます。信号トラッキングは、システムで 2 つのコントローラーを切り替えるバンプレス制御転送を実装する場合に便利です。また、マルチループ制御システムでブロックのワインドアップを防ぐのにも役立ちます。詳細については、[トラッキング モードを有効にする] パラメーターを参照してください。
この端子を有効にするには、[トラッキングモードを有効にする] パラメーターを選択します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
TDTI
— 離散積分器時間離散積分器時間。スカラーとしてブロックに提供されます。Simulink または外部ハードウェア上のいずれかでブロックが実行されるレートを定義する、離散積分器のサンプル時間の独自の値を使用できます。ブロックが条件付き実行サブシステム内で使用される場合、離散時間積分器時間の値は、外部割り込みの平均サンプリング レートに一致する必要があります。
言い換えると、Ts
を、外部割り込みの平均サンプリング レートに値が一致するように、以下の任意の積分手法について指定できます。離散時間におけるコントローラーの伝達関数の微分項は次のようになります。
α(z) は、このパラメーターで指定した積分手法に応じて異なります。
前進オイラー法
後退オイラー法
台形則
離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。条件付きで実行されるサブシステムの詳細については、条件付き実行サブシステムの概要を参照してください。
この端子を有効にするには、[時間領域] を [離散時間]
に設定し、[PID コントローラーは条件付き実行サブシステム内にあります] オプションをオンにします。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Port_1(y)
— コントローラーの出力コントローラーの出力。一般に、比例、積分、および微分のゲイン パラメーターで重み付けした入力信号、入力信号の積分、および入力信号の微分の総和に基づきます。1 次極によって微分動作がフィルター処理されます。コントローラーの信号に含まれる項は、[コントローラー] パラメーターの選択に応じて異なります。現在の設定に対応するコントローラーの基本の伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。飽和制限を指定する [上限] と [下限] の飽和パラメーターなど、ほかにもブロック出力を変更するパラメーターがあります。
コントローラーの出力は、いずれかの入力がベクトル信号であればベクトル信号になります。その場合、ブロックは N 個の独立した PID コントローラーとして機能します。N は入力ベクトルの信号数です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
コントローラー
— コントローラーのタイプPID
(既定値) | PI
| PD
| P
| [I]
コントローラーに比例項、積分項、微分項のいずれを含めるかを指定します。
PID
比例動作、積分動作、微分動作。
PI
比例動作と積分動作のみ。
PD
比例動作と微分動作のみ。
P
比例動作のみ。
[I]
積分動作のみ。
ヒント
現在の設定に対応するコントローラーの伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
ブロック パラメーター: Controller |
型: string、文字ベクトル |
値: "PID" 、"PI" 、"PD" 、"P" 、"I" |
既定の設定: "PID" |
形式
— コントローラーの構造並列
(既定値) | 理想
コントローラーの構造を並列と理想のどちらにするかを指定します。
並列
コントローラーの出力は、P、I、D でそれぞれ独立して重み付けされた比例動作、積分動作、微分動作の総和になります。たとえば、連続時間の並列形式 PID コントローラーの伝達関数は次のようになります。
離散時間の並列形式コントローラーの伝達関数は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
理想
比例ゲイン P がすべての動作の総和に作用します。たとえば、連続時間の理想形式 PID コントローラーの伝達関数は次のようになります。
離散時間の理想形式コントローラーの伝達関数は次のようになります。
a(z) と b(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
ヒント
現在の設定に対応するコントローラーの伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
ブロック パラメーター: Controller |
型: string、文字ベクトル |
値: "Parallel" 、"Ideal" |
既定の設定: "Parallel" |
時間領域
— 離散時間コントローラーまたは連続時間コントローラーを指定離散時間
(既定値) | 連続時間
[離散時間]
を選択する場合は、ブロックに対して明示的なサンプル時間を指定することをお勧めします。[サンプル時間 (継承は -1)] パラメーターを参照してください。[離散時間]
を選択すると、[積分手法] パラメーターと [フィルター手法] パラメーターも有効になります。
PID Controller ブロックが同期状態制御 (State Control (HDL Coder) ブロックを参照) を使用するモデル内にある場合は、[連続時間]
を選択できません。
メモ
PID Controller ブロックと Discrete PID Controller ブロックは、このパラメーターの既定値以外は同一です。
ブロック パラメーター: TimeDomain |
型: string、文字ベクトル |
値: "Continuous-time" 、"Discrete-time" |
既定の設定: "Continuous-time" |
PID コントローラーは条件付き実行サブシステム内にあります
— 離散積分器時間端子を有効にするオフ
(既定値) | オン
離散時間 PID コントローラーに対しては、離散時間積分器端子を有効にして独自の離散時間積分器サンプル時間の値を使用します。適切に積分が行われるようにするには、TDTI
端子を使用して Δt のスカラー値を提供して、正確な離散時間積分が行われるようにします。
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定します。
ブロック パラメーター: UseExternalTs |
型: string、文字ベクトル |
値: "on" 、"off" |
既定の設定: "off" |
サンプル時間 (継承は -1)
— サンプル間の離散間隔0.1 などの正のスカラー値を入力してサンプル時間を指定します。既定の離散サンプル時間は -1 で、この場合は上流のブロックからサンプル時間が継承されます。ただし、特に上流のブロックのサンプル時間が変わることが予想される場合などは、コントローラーのサンプル時間を明示的に設定することをお勧めします。コントローラー係数 P、I、D、N の作用はサンプル時間に依存します。そのため、一連の係数値が与えられている場合、サンプル時間を変更するとコントローラーの性能が変化します。
詳細については、サンプル時間の指定を参照してください。
連続時間コントローラーを実装するには、[時間領域] を [連続時間]
に設定します。
ヒント
外部指定または可変のサンプル時間でブロックを実行する場合は、このパラメーターを -1 に設定し、ブロックを Triggered Subsystem に配置します。その後、目的のサンプル時間でサブシステムをトリガーします。
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定します。
ブロック パラメーター: SampleTime |
タイプ: スカラー |
値: -1 、正のスカラー |
既定の設定: -1 |
積分手法
— 離散時間コントローラーの積分の計算手法前進オイラー法
(既定値) | 後退オイラー法
| 台形則
離散時間におけるコントローラーの伝達関数の積分項は Iα(z) です。α(z) は、このパラメーターで指定した積分手法に応じて異なります。
前進オイラー法
前進矩形 (左側) 近似。
この手法はコントローラーの帯域幅と比較してナイキスト制限が大きくなる、小さいサンプル時間に最適です。大きいサンプリング時間で 前進オイラー法
手法を使用すると、連続時間で安定しているシステムを離散化しても不安定さが生じることがあります。
後退オイラー法
後退矩形 (右側) 近似。
後退オイラー法
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。
台形則
双一次変換。
台形則
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分手法の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは 台形則
手法です。
ヒント
現在の設定に対応するコントローラーの方程式は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
メモ
[後退オイラー法]
または [台形則]
の手法で、以下のいずれかに該当する場合、ブロックの HDL コードを生成することはできません。
[出力を制限する] が選択されており、[アンチワインドアップ手法] が [なし]
以外に設定されている場合。
[トラッキングモードを有効にする] が選択されている場合。
離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
ブロック パラメーター: IntegratorMethod |
型: string、文字ベクトル |
値: "Forward Euler" 、"Backward Euler" 、"Trapezoidal" |
既定の設定: "Forward Euler" |
フィルター手法
— 離散時間コントローラーの微分の計算手法前進オイラー法
(既定値) | 後退オイラー法
| 台形則
離散時間におけるコントローラーの伝達関数の微分項は次のようになります。
α(z) は、このパラメーターで指定したフィルター手法に応じて異なります。
前進オイラー法
前進矩形 (左側) 近似。
この手法はコントローラーの帯域幅と比較してナイキスト制限が大きくなる、小さいサンプル時間に最適です。大きいサンプリング時間で 前進オイラー法
手法を使用すると、連続時間で安定しているシステムを離散化しても不安定さが生じることがあります。
後退オイラー法
後退矩形 (右側) 近似。
後退オイラー法
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。
台形則
双一次変換。
台形則
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分手法の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは 台形則
手法です。
ヒント
現在の設定に対応するコントローラーの方程式は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定し、[不完全微分の使用] を有効にします。
ブロック パラメーター: FilterMethod |
型: string、文字ベクトル |
値: "Forward Euler" 、"Backward Euler" 、"Trapezoidal" |
既定の設定: "Forward Euler" |
ソース
— コントローラー ゲインとフィルター係数のソースパラメーターの外部入力を有効にすると、PID ゲインとフィルター係数をブロックの外部で計算し、これらを信号入力としてブロックに提供することができます。
内部
コントローラー ゲインとフィルター係数をブロック パラメーター [P]、[I]、[D]、[N] を使用して指定します。
外部
PID ゲインとフィルター係数をブロック入力を使用して外部で指定します。ブロックに現在のコントローラー タイプに必要な各パラメーターの追加の入力端子が表示されます。
外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID ゲインをモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
ゲインを外部から提供する場合、積分ゲイン値と微分ゲイン値の時間変化はそれぞれ積分および微分されます。この結果は、連続時間と離散時間のどちらにおいても、積分や微分の前に信号にゲインが適用されるために発生します。たとえば、外部入力のある連続時間 PID コントローラーの場合、積分項は次の図に示されているように実装されます。
ブロック内では、入力信号 u は外部から提供される積分ゲイン I によって積分の前に乗算されます。この実装の結果、次のようになります。
したがって、積分ゲインは積分の中に含められます。同様に、ブロックの微分項では微分ゲインによる乗算が微分より先に行われるため、微分ゲイン D は微分されることになります。
ブロック パラメーター: ControllerParametersSource |
型: string、文字ベクトル |
値: "internal" 、"external" |
既定の設定: "internal" |
比例項 (P)
— 比例ゲイン比例ゲインの有限で実数のゲイン値を指定します。[Controller form] に応じて次のようになります。
並列
— 比例動作が積分動作および微分動作に作用しません。たとえば、連続時間の並列 PID コントローラーの伝達関数は次のようになります。
離散時間の並列形式コントローラーの伝達関数は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
理想
— 比例ゲインで積分項および微分項が乗算されます。たとえば、連続時間の理想 PID コントローラーの伝達関数は次のようになります。
離散時間の理想形式コントローラーの伝達関数は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
調整可能: Yes
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を [PID]
、[PD]
、[PI]
、または [P]
に設定します。
ブロック パラメーター: P |
型: スカラー、ベクトル |
既定の設定: 1 |
積分項 (I)
— 積分ゲイン積分ゲインの有限で実数のゲイン値を指定します。
調整可能: Yes
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を積分動作をもつタイプに設定します。
ブロック パラメーター: I |
型: スカラー、ベクトル |
既定の設定: 1 |
微分項 (D)
— 微分ゲイン微分ゲインの有限で実数のゲイン値を指定します。
調整可能: Yes
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を [PID]
または [PD]
に設定します。
ブロック パラメーター: D |
型: スカラー、ベクトル |
既定の設定: 0 |
不完全微分の使用
— 微分項にフィルターを適用on
(既定値) | off
離散時間の PID コントローラーの場合に限り、このオプションをオフにすると不完全微分が完全離散時間微分器に置き換わります。この場合、コントローラーの伝達関数の微分項は次のようになります。
連続時間の PID コントローラーについては、常に完全微分項になります。
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定し、[コントローラー] を微分動作をもつタイプに設定します。
ブロック パラメーター: UseFilter |
型: string、文字ベクトル |
値: "on" 、"off" |
既定の設定: "on" |
フィルター係数 (N)
— 微分フィルター係数フィルター係数の有限で実数のゲイン値を指定します。フィルター係数により、ブロックの微分動作のフィルターの極配置が決まります。フィルター極の配置は [時間領域] パラメーターに依存します。
[時間領域] が [連続時間]
の場合、極配置は s = -N
になります。
[時間領域] が [離散時間]
の場合、極配置は [フィルター手法] パラメーターに応じて異なります。
フィルター手法 | フィルター極の配置 |
---|---|
前進オイラー法 | |
後退オイラー法 | |
台形則 |
このブロックでは N = Inf
(理想的な完全微分) をサポートしていません。[時間領域] が [離散時間]
の場合、[不完全微分の使用] をオフにして微分フィルターを削除できます。
調整可能: Yes
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を [PID]
または [PD]
に設定します。
ブロック パラメーター: N |
型: スカラー、ベクトル |
既定の設定: 100 |
調整法の選択
— コントローラー係数の自動調整ツール伝達関数ベース (PID 調整器アプリ)
(既定値) | 周波数応答ベース
Simulink Control Design ソフトウェアがある場合は、PID 係数を自動で調整できます。これを行うには、このパラメーターを使用して調整ツールを選択し、[調整] をクリックします。
伝達関数ベース (PID 調整器アプリ)
PID 調整器を使用します。関連するシステム応答を調べ、性能を検証して、PID 係数を対話形式で調整できます。既定の設定では、PID 調整器は線形化されたプラント モデルで動作します。線形化できないモデルについては、シミュレーションまたは測定による応答データから推測されたプラント モデルに対して、PID 係数を調整することができます。詳細については、Simulink でのモデルベースの PID 調整の紹介 (Simulink Control Design)を参照してください。
周波数応答ベース
周波数応答ベースの PID 調整器を使用します。シミュレーションから得られた周波数応答の推定データをベースにして、PID コントローラーの係数を調整できます。この調整法は、線形化できないプラントやゼロに線形化されるプラントで特に役立ちます。詳細については、プラント周波数応答データからの PID コントローラーの設計 (Simulink Control Design)を参照してください。
これらの調整法は、どちらも単一ループ制御構成を前提としたものです。Simulink Control Design ソフトウェアには、より複雑な構成に適した他の調整法も用意されています。PID Controller ブロックを調整するための他の方法の詳細については、制御設計法の選択 (Simulink Control Design)を参照してください。
ゼロクロッシング検出を有効にする
— リセットおよび飽和状態の入力または消去時にゼロクロッシングを検出オン
(既定値) | オフ
ゼロクロッシング検出を使用すると、長時間のシミュレーションにつながる過度に小さいタイム ステップ サイズを取ることなく、正確に信号の不連続点を特定できます。PID Controller ブロックで [出力を制限する] を選択したり [外部リセット] をアクティブ化したりする場合、ゼロクロッシング検出をアクティブにすることでシミュレーションの計算時間を短縮できます。このパラメーターを選択するとゼロクロッシング検出がアクティブになります。
初期状態へのリセット時
飽和の上限または下限の状態の入力時
飽和の上限または下限の状態の消去時
ゼロクロッシング検出の詳細については、ゼロクロッシング検出を参照してください。
ブロック パラメーター: ZeroCross |
型: string、文字ベクトル |
値: "on" 、"off" |
既定の設定: "on" |
ソース
— 積分器および微分の初期条件のソース内部
(既定値) | 外部
Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、初期条件を使用して積分器および微分フィルター (または完全微分) の出力を初期化します ([外部リセット] パラメーターを参照)。それらの初期条件によって初期ブロック出力が決まります。このパラメーターを使用して、初期条件の値をブロックに提供する方法を選択します。
内部
[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターを使用して初期条件を指定します。[不完全微分の使用] を選択していない場合は、[微分器] パラメーターを使用してフィルターの初期条件の代わりに完全微分器の初期条件を指定します。
外部
初期条件をブロック入力を使用して外部で指定します。追加の入力端子の [Io] と [Do] がブロックに表示されます。[不完全微分の使用] を選択していない場合は、[Do] でフィルターの初期条件の代わりに完全微分器の初期条件を指定します。
ブロック パラメーター: InitialConditionSource |
型: string、文字ベクトル |
値: "internal" 、"external" |
既定の設定: "internal" |
積分器
— 積分器の初期条件Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、積分器の初期条件を使用して積分器を初期化します ([外部リセット] を参照)。積分器の初期条件とフィルターの初期条件によって PID controller ブロックの初期出力が決まります。
積分器の初期条件を NaN
または Inf
にすることはできません。
このパラメーターを使用するには、[初期化] タブで、[ソース] を [内部]
に設定し、[コントローラー] を積分動作をもつタイプに設定します。
ブロック パラメーター: InitialConditionForIntegrator |
型: スカラー、ベクトル |
既定の設定: 0 |
フィルター
— フィルターの初期条件Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、フィルターの初期条件を使用して微分フィルターを初期化します ([外部リセット] を参照)。積分器の初期条件とフィルターの初期条件によって PID controller ブロックの初期出力が決まります。
フィルターの初期条件を NaN
または Inf
にすることはできません。
このパラメーターを使用するには、[初期化] タブで、[ソース] を [内部]
に設定し、微分フィルターをもつコントローラーを使用します。
ブロック パラメーター: InitialConditionForFilter |
型: スカラー、ベクトル |
既定の設定: 0 |
微分器
— 完全微分の初期条件完全微分を使用している場合、Simulink では、シミュレーションの開始時または指定のトリガー イベントの発生時に、このパラメーターを使用して微分器を初期化します ([外部リセット] を参照)。積分器の初期条件と微分の初期条件によって PID controller ブロックの初期出力が決まります。
微分の初期条件を NaN
または Inf
にすることはできません。
このパラメーターを使用するには、[時間領域] を [離散時間]
に設定し、[不完全微分の使用] チェック ボックスをオフにし、[初期化] タブで [ソース] を [内部]
に設定します。
ブロック パラメーター: DifferentiatorICPrevScaledInput |
型: スカラー、ベクトル |
既定の設定: 0 |
初期条件設定
— 初期条件の適用場所状態 (最も効率的)
(既定値) | 出力
このパラメーターを使用して、[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターを対応するブロック状態または出力に適用するかどうかを指定します。このパラメーターはコマンド ラインでのみ変更できます。変更するには、set_param
を使用してブロックの InitialConditionSetting
パラメーターを設定します。
状態 (最も効率的)
すべての状況においてこのオプションを使用しますが、ブロックが Triggered Subsystem または Function-Call Subsystem 内に存在し、簡易初期化モードが有効になっている場合は例外となります。
出力
ブロックが Triggered Subsystem または Function-Call Subsystem にあり、簡易初期化モードが有効になっている場合はこのオプションを使用します。
[初期条件設定] パラメーターの詳細については、Discrete-Time Integrator ブロックを参照してください。
このパラメーターにはプログラムからのみアクセスできます。
ブロック パラメーター: InitialConditionSetting |
型: string、文字ベクトル |
値: "state" 、"output" |
既定の設定: "state" |
外部リセット
— 積分器とフィルター値のリセットのトリガーなし
(既定値) | 立ち上がり
| 立ち下がり
| 両方
| レベル
ブロックで積分器とフィルターを初期条件にリセットするトリガー条件を指定します ([不完全微分の使用] が選択されていない場合、トリガーにより積分器と微分器が初期条件にリセットされます)。[なし]
以外のオプションを選択すると、ブロックで外部リセット信号の [リセット] 端子が有効になります。
なし
積分器とフィルター (または微分器) の出力をシミュレーションの開始時に初期条件に設定し、シミュレーション中はリセットしません。
立ち上がり
リセット信号が立ち上がりエッジをもつ場合に出力をリセットします。
立ち下がり
リセット信号が立ち下がりエッジをもつ場合に出力をリセットします。
両方
リセット信号が立ち上がりまたは立ち下がりをもつ場合に出力をリセットします。
レベル
リセット信号が次のいずれかに該当する場合に出力をリセットします。
現在のタイム ステップで非ゼロである場合
以前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 まで変化した場合
このオプションでは、リセット信号が非ゼロである間は出力が初期条件のままになります。
このパラメーターを有効にするには、[コントローラー] を微分動作または積分動作をもつタイプに設定します。
ブロック パラメーター: ExternalReset |
型: string、文字ベクトル |
値: "none" 、"rising" 、"falling" 、"either" 、"level" |
既定の設定: "none" |
線形化時のリセットの設定を無視
— 線形化でリセットを無視オフ
(既定値) | オン
[外部リセット] パラメーターで指定されたリセット メカニズムを Simulink および Simulink Control Design の線形化コマンドで無視する場合に選択します。リセット状態を無視すると、操作点によってブロックがリセットされても、操作点を中心にモデルが線形化されます。
ブロック パラメーター: IgnoreLimit |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
トラッキングモードを有効にする
— 信号トラッキングをアクティブ化オフ
(既定値) | オン
信号トラッキングを使用すると、ブロック出力が [TR] 端子で指定したトラッキング信号に従うように設定できます。信号トラッキングがアクティブな場合、[Tracking gain (Kt)] パラメーターで指定したゲイン Kt
でトラッキング信号とブロック出力の差が積分器入力に返されます。信号トラッキングは、バンプレス制御の転送やマルチループ制御構造でのワインドアップの防止などに応用できます。
信号トラッキングを使用して、システムで 2 つのコントローラーを切り替えるバンプレス制御転送を行います。PID コントローラーと別のコントローラーの間で制御を切り替えるとします。これを行うには、次の図に示すように、コントローラーの出力を [TR] 入力に接続します。
詳細については、バンプレス制御の転送を参照してください。
信号トラッキングを使用して、次のモデルのようなマルチループ制御方法でのブロックのワインドアップを防ぎます。
Inner Loop サブシステムには次の図に示すブロックが含まれています。
内側のループの出力をトラッキングしているため、PID コントローラーの出力が内側のループの飽和出力を超えることはありません。詳細については、マルチループ制御におけるブロック ワインドアップの回避を参照してください。
このパラメーターを有効にするには、[コントローラー] を積分動作をもつタイプに設定します。
ブロック パラメーター: TrackingMode |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
トラッキング係数 (Kt)
— 信号トラッキングのフィードバック ループのゲイン[トラッキングモードを有効にする] を選択すると、信号 [TR] とブロック出力の差がゲイン Kt
で積分器入力に返されます。このパラメーターを使用して、そのフィードバック ループのゲインを指定します。
このパラメーターを有効にするには、[トラッキングモードを有効にする] を選択します。
ブロック パラメーター: Kt |
タイプ: スカラー |
既定の設定: 1 |
出力を制限する
— 指定の飽和値にブロック出力を制限オフ
(既定値) | オン
このオプションをアクティブにすると、ブロック出力が制限されるため、コントローラーの後に個別の Saturation ブロックを置く必要がなくなります。また、ブロックに組み込みのアンチワインドアップ メカニズムをアクティブにすることもできます ([アンチワインドアップ手法] パラメーターを参照)。[下限] パラメーターと [上限] パラメーターを使用して出力の飽和の制限を指定します。飽和の下限をブロックの入力端子として外部で指定することもできます。
ブロック パラメーター: LimitOutput |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
ソース
— 出力の飽和の制限のソースこのパラメーターを使用して、ブロックの出力の飽和の上限値と下限値を提供する方法を指定します。
内部
[上限] パラメーターと [下限] パラメーターを使用して出力の飽和の制限を指定します。
外部
ブロックの入力端子を使用して、出力の飽和の制限を外部で指定します。追加の入力端子の [up] と [lo] がブロックに表示されます。入力端子を使用すると、Simulink モデルのロジックまたはその他の計算によって特定され、ブロックに渡される出力の飽和の上限と下限を実装できます。
ブロック パラメーター: SatLimitsSource |
型: string、文字ベクトル |
値: "internal" 、"external" |
既定の設定: "internal" |
上限
— ブロック出力の飽和の上限Inf
(既定値) | スカラーブロック出力の上限を指定します。比例、積分、微分動作の重み付き総和がこの値を上回ると、ブロック出力は [飽和の上限] に保持されます。
このパラメーターを有効にするには、[出力を制限する] を選択します。
ブロック パラメーター: UpperSaturationLimit |
タイプ: スカラー |
既定の設定: Inf |
下限
— ブロック出力の飽和の下限-Inf
(既定値) | スカラーブロック出力の下限を指定します。比例、積分、微分動作の重み付き総和がこの値を下回ると、ブロック出力は [飽和の下限] に保持されます。
このパラメーターを有効にするには、[出力を制限する] を選択します。
ブロック パラメーター: LowerSaturationLimit |
タイプ: スカラー |
既定の設定: -Inf |
線形化時の飽和の設定を無視
— 線形化で出力の制限を無視オフ
(既定値) | オン
[上限] パラメーターと [下限] パラメーターで指定されたブロック出力の制限を Simulink および Simulink Control Design の線形化コマンドで無視します。出力制限を無視すると、操作点によってブロックが出力制限を超えても、操作点を中心にモデルが線形化されます。
このパラメーターを有効にするには、[出力を制限する] パラメーターを選択します。
ブロック パラメーター: LinearizeAsGain |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
アンチワインドアップ手法
— 積分器のアンチワインドアップ手法 なし
(既定値) | [back-calculation]
| [clamping]
[出力を制限する] を選択したときにコントローラー コンポーネントの重み付き総和が指定された出力制限を超えると、ブロック出力は指定された制限に保持されます。ただし、積分器出力は増加を続け (積分器ワインドアップ)、ブロック出力とブロック コンポーネントの合計の差が大きくなります。つまり、出力が飽和制限に拘束されていてもブロックの内部信号は拘束を受けない可能性があります。積分器ワインドアップを防ぐメカニズムがない場合、2 つの結果が考えられます。
入力信号の符号が変化しない場合、積分器はオーバーフローするまで積分を続けます。オーバーフロー値は、積分器出力のデータ型の最大値または最小値です。
重み付き総和が出力制限を超えてから入力信号の符号が変化した場合、積分器のワインドアップを解消して重み付き総和をブロック飽和制限範囲内に戻すには長い時間がかかることがあります。
いずれの場合もコントローラーの性能に悪影響があります。アンチワインドアップ メカニズムを使用せずにワインドアップの影響に対抗するためには、コントローラーをデチューンしなければならないことがありますが (コントローラーのゲインを減らすなど)、コントローラーの反応が遅くなることがあります。この問題を避けるには、このパラメーターを使用してアンチワインドアップ メカニズムをアクティブにします。
なし
アンチワインドアップ メカニズムを使用しません。
[back-calculation]
ブロック出力が飽和したときに、飽和した制御信号と飽和していない制御信号の差を積分器に戻すことで積分器のワインドアップを解消します。次の図は、連続時間コントローラーの逆解析フィードバック回路を示しています。コントローラー構成の実際のフィードバック回路を表示するには、ブロックを右クリックし、[マスク] 、 [マスク内を表示] を選択します。
アンチワインドアップ フィードバック回路のゲインは、[逆算係数 (Kb)] パラメーターを使用して指定します。通常は、Kb = I
または Kb = sqrt(I*D)
(微分動作を含むコントローラーの場合) を設定すれば十分です。逆解析は、むだ時間が比較的大きいプラントに効果的な場合があります [1]。
[clamping]
ブロック コンポーネントの合計が出力制限を上回り、積分器出力とブロック入力の符号が同じ場合に積分を停止します。ブロック コンポーネントの合計が出力制限を上回り、積分器出力とブロック入力の符号が反対の場合に積分を再開します。固定は条件付き積分と呼ばれることがあります。
固定は、むだ時間が比較的小さいプラントに役立つことがありますが、むだ時間が大きい場合は過渡応答が低くなる可能性があります [1]。
このパラメーターを有効にするには、[出力を制限する] パラメーターを選択します。
ブロック パラメーター: AntiWindupMode |
型: string、文字ベクトル |
値: "none" 、"back-calculation" 、"clamping" |
既定の設定: "none" |
逆算係数 (Kb)
— アンチワインドアップ フィードバック ループのゲイン係数[back-calculation
] アンチワインドアップ手法では、ブロック出力が飽和したときに積分器のワインドアップが解消されます。これは、飽和した制御信号と飽和していない制御信号の差を積分器に戻すことで行われます。アンチワインドアップ フィードバック回路のゲインは、[逆算係数 (Kb)] パラメーターを使用して指定します。詳細については、[アンチワインドアップ手法] パラメーターを参照してください。
このパラメーターを有効にするには、[出力を制限する] パラメーターを選択し、[アンチワインドアップ手法] パラメーターを [逆解析]
に設定します。
ブロック パラメーター: Kb |
タイプ: スカラー |
既定の設定: 1 |
このタブのパラメーターは、主に Fixed-Point Designer™ を使用した固定小数点コードの生成で使用します。ブロックに関連する数値量のコード生成時の格納方法や処理方法を定義します。
固定小数点コードの生成用にデータ型を設定する必要がある場合は、[固定小数点ツールを開く] をクリックし、そのツールを使用してタブの残りのパラメーターを設定します。固定小数点ツールの使用の詳細については、固定小数点ツールを使用したデータ オブジェクトのオートスケーリング (Fixed-Point Designer)を参照してください。
固定小数点ツールの使用後、このタブのパラメーターを使用して、固定小数点データ型の設定を必要に応じて調整できます。ブロックに関連するそれぞれの量について以下を指定できます。
浮動小数点または固定小数点のデータ型。データ型をブロックの上流の値から継承するかどうかも含みます。
量の最小値と最大値。これにより、固定小数点表現における量のスケーリング方法が決まります。
適切な値を選択するためのサポートとして、 をクリックすると対応する量のデータ型アシスタントが開きます。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
[データ型] タブにリストされる具体的な量は、PID Controller ブロックの構成に応じて異なります。一般に、次のタイプの量についてのデータ型を設定できます。
乗算出力 — ブロックのマスクの下で実行された乗算の結果を格納します。たとえば、[P の乗算出力] には、ブロック入力を比例ゲイン [P] で乗算する Gain ブロックの出力が格納されます。
パラメーター — [P]、[I]、[D] など、数値ブロック パラメーターの値を格納します。
ブロック出力 — PID Controller ブロックのマスクの下にあるブロックの出力を格納します。たとえば、Integrator というブロックの出力のデータ型を指定するには [積分器の出力] を使用します。このブロックは、Integrator Subsystem 内のマスクの下にあり、コントローラーの動作の積分項を計算します。
アキュムレータ — Sum ブロックに関連する値を格納します。たとえば、[SumI2 Accumulator] は、Sum ブロック SumI2 に関連するアキュムレータのデータ型を設定します。このブロックは、Anti-Windup Subsystem の Back Calculation Subsystem 内のマスクの下にあります。
一般に、リストされたパラメーターに関連するブロックは、PID Controller ブロックのマスク内を参照してサブシステムを調べると見つかります。モデル エクスプローラーを使用して、SumI2
などのリストされたパラメーターの名前をマスクの下で検索することもできます (モデル エクスプローラーを参照)。
入力データ型と内部データ型の照合
既定の設定では、ブロック内のデータ型はすべて [継承: 内部ルールによる継承]
に設定されます。この設定の場合、Simulink は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、生成コードのサイズのバランスが取れるように、データ型を選択します。
状況によっては、ブロック内のデータ型の間で非互換性が発生することがあります。たとえば、連続時間では、マスクの下の Integrator ブロックは [double]
型の信号しか受け入れません。ブロックの入力信号の型が [double]
に変換できない [uint16]
などの型の場合、コードの生成時に型の継承に関する内部ルールによってエラーが生成されます。
このようなエラーを回避するために、[データ型] の設定を使用して強制的にデータ型変換を行うことができます。たとえば、[P の乗算出力]、[I の乗算出力]、および [D の乗算出力] を明示的に [double]
に設定すると、連続時間の積分器に到達する信号が必ず [double]
型になります。
一般に、コード生成アプリケーション用にブロックを連続時間で使用することは推奨されません。ただし、一部の値をブロック内の下流の信号の制約と互換性がないデータ型に明示的に設定した場合、離散時間でも同様のデータ型エラーが発生することがあります。その場合は、[データ型] の設定を使用して、すべてのデータ型を内部的に互換性があるものにします。
固定小数点が使用可能なパラメーター整数丸めモード
— 固定小数点演算の丸めモード負方向
(既定値) | 正方向
| 最も近い偶数方向
| 最も近い正の整数方向
| 最も近い整数方向
| 最も簡潔
| ゼロ方向
固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。
ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロックパラメーターの丸めを直接制御するには、MATLAB® の丸め関数を使用する式をマスク フィールドに入力します。
ブロック パラメーター: RndMeth |
型: 文字ベクトル |
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' |
'Zero' |
既定の設定: 'Floor' |
整数オーバーフローで飽和
— オーバーフロー アクションの方法off
(既定値) | on
オーバーフローで飽和するかラップするかを指定します。
off
— オーバーフローは、データ型によって表現される適切な値にラップされます。
たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。
on
— オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。
たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。
ヒント
モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。
生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。
このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。
通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
ブロック パラメーター: SaturateOnIntegerOverflow |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
固定小数点ツールによる変更に対してデータ型の設定をロックする
— 固定小数点ツールがデータ型をオーバーライドするのを防止off
(既定値) | on
このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。
ブロック パラメーター: LockScale |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
このタブのパラメーターは、主にコード生成で使用します。
[状態名] (例: 'position')
— 連続時間のフィルターおよび積分器の状態の名前''
(既定値) | 文字ベクトル連続時間 PID コントローラーの積分器またはフィルターに関連する状態に固有名を割り当てます (離散時間 PID コントローラーの状態名の詳細については、[状態名] パラメーターを参照してください)。状態名は、たとえば以下に使用されます。
生成コード内の対応する変数
シミュレーション中に状態をログに記録する際のストレージ名の一部
ブロックを線形化して得られる線形モデル内の対応する状態
有効な状態名は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。
このパラメーターを有効にするには、[時間領域] を [連続時間]
に設定します。
パラメーター: IntegratorContinuousStateAttributes 、FilterContinuousStateAttributes |
型: 文字ベクトル |
既定の設定: '' |
状態名
— 離散時間のフィルターおよび積分器の状態の名前離散時間 PID コントローラーの積分器またはフィルターに関連する状態に固有名を割り当てます (連続時間 PID コントローラーの状態名の詳細については、[状態名 ('position' など)] パラメーターを参照してください)。
有効な状態名は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。状態名は、たとえば以下に使用されます。
生成コード内の対応する変数
シミュレーション中に状態をログに記録する際のストレージ名の一部
ブロックを線形化して得られる線形モデル内の対応する状態
コード生成での状態名の使用の詳細については、C Code Generation Configuration for Model Interface Elements (Simulink Coder)を参照してください。
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定します。
パラメーター: IntegratorStateIdentifier 、FilterStateIdentifier |
型: string、文字ベクトル |
既定の設定: "" |
状態名を Simulink の信号オブジェクトに関連付ける
— 状態名の信号オブジェクトへの関連付けを要求off
(既定値) | on
このパラメーターは、離散時間の積分器またはフィルターの状態名を Simulink の信号オブジェクトに関連付けるよう要求する場合に選択します。
このパラメーターを離散時間の積分器またはフィルターの状態に対して有効にするには、次のようにします。
[時間領域] を [離散時間]
に設定します。
積分器またはフィルターの [状態名] の値を指定します。
モデル コンフィギュレーション パラメーター [信号の関連付け] を [なし]
以外の値に設定します。
このチェック ボックスをオンにすると、対応する積分器またはフィルターの状態に対して [コード生成ストレージ クラス] が無効になります。
ブロック パラメーター: IntegratorStateMustResolveToSignalObject 、FilterStateMustResolveToSignalObject |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
コード生成ストレージ クラス
— コード生成のストレージ クラス自動
(既定値) | ExportedGlobal
| ImportedExtern
| ImportedExternPointer
コード生成の状態ストレージ クラスを選択します。外部コードへのインターフェイスを設定する必要がない場合は Auto
を選択します。
詳細については、C Code Generation Configuration for Model Interface Elements (Simulink Coder)およびStruct ストレージ クラスを使用してパラメーター データを構造体に整理する (Embedded Coder)を参照してください。
このパラメーターを離散時間の積分器またはフィルターの状態に対して有効にするには、次のようにします。
[時間領域] を [離散時間]
に設定します。
積分器またはフィルターの [状態名] の値を指定します。
モデル コンフィギュレーション パラメーター [信号の関連付け] を [なし]
以外の値に設定します。
ブロック パラメーター: IntegratorRTWStateStorageClass 、FilterRTWStateStorageClass |
型: string、文字ベクトル |
値: "Auto" 、"ExportedGlobal" 、"ImportedExtern" | "ImportedExternPointer" |
既定の設定: "Auto" |
コード生成ストレージ型修飾子
— ストレージ型修飾子"const"
| "volatile"
| ...const
または volatile
などのストレージ型修飾子を指定します。
メモ
このパラメーターは将来のリリースで削除されます。ストレージ型修飾子をデータに適用するには、カスタム ストレージ クラスとメモリ セクションを使用します。Embedded Coder® で ERT ベースのコード生成ターゲットを使用している場合を除き、カスタム ストレージ クラスとメモリ セクションは生成されたコードに影響しません。
このパラメーターを有効にするには、[コード生成ストレージ クラス] を [自動]
以外のいずれかの値に設定します。
ブロック パラメーター: IntegratorRTWStateStorageTypeQualifier 、FilterRTWStateStorageTypeQualifier |
型: string、文字ベクトル |
値: "" 、"const" 、"volatile" |
既定の設定: "" |
データ型 |
|
直接フィードスルー |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
ReferenceBlock
パラメーターが異なるパスを返すR2020b での動作変更
R2020b 以降、関数 get_param
は ReferenceBlock
パラメーターに異なる値を返します。ReferenceBlock
パラメーターは、すべての Simulink ブロックに共通するパラメーターであり、ブロックがリンクしているライブラリ ブロックのパスを与えます。PID Controller ブロックと Discrete PID Controller ブロックは、今は 'pid_lib/PID Controller'
にリンクしています。以前は、ブロックは 'simulink/Continuous/PID Controller'
にリンクしていました。
この変更は、他の機能やワークフローには影響しません。関数 set_param
では、以前のパスを引き続き使用できます。
[1] Visioli, A., "Modified Anti-Windup Scheme for PID Controllers," IEE Proceedings - Control Theory and Applications, Vol. 150, Number 1, January 2003
連続時間 PID コントローラー ([時間領域] を [連続時間]
に設定):
連続時間ブロックについては、モデルの離散化を使用して、コード生成をサポートする同等な離散時間ブロックにマッピングすることを検討します。[モデルの離散化] にアクセスするには、モデルから [アプリ] タブの [制御システム] で [モデルの離散化] をクリックします。
量産コードには推奨されません。
離散時間 PID コントローラー ([時間領域] を [離散時間]
に設定):
Triggered Subsystem の階層の内部に置かれる場合は絶対時間に依存します。
生成されたコードは、ある条件の下で関数 memcpy
または関数 memset
(string.h
) に依存します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには単一の既定の HDL アーキテクチャがあります。
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
HDL コードの生成は、離散時間 PID コントローラー ([時間領域] を [離散時間]
に設定) でのみサポートされます。
[積分手法] が [後退オイラー法]
または [台形則]
に設定されている場合、次のいずれかに該当する状況ではブロックの HDL コードを生成できません。
[出力を制限する] が選択されており、[アンチワインドアップ手法] が [なし]
以外に設定されている場合。
[トラッキングモードを有効にする] が選択されている場合。
HDL コードを生成するには、次のようにします。
離散時間 PID コントローラーを使用する。[時間領域] セクションで [離散時間] を指定します。
[不完全微分の使用] チェック ボックスをオンのままにする。
フィルターと積分器の初期条件を内部的に指定する。[初期化] タブで [ソース] を [内部]
に指定します。
HDL コード生成ではフィルター係数を内部的にも外部的にも指定できます。[メイン] タブで [ソース] には [内部]
または [外部]
を使用できます。
[外部リセット] を [なし]
に設定する。
double 入力を使用する場合、[アンチワインドアップ手法] を [固定]
に設定しない。
固定小数点コードの生成は、離散時間 PID コントローラー ([時間領域] を [離散時間]
に設定) でのみサポートされます。
Discrete Derivative | Discrete PID Controller (2DOF) | Discrete-Time Integrator | Gain | PID Controller
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.