---
title: サンプリングとディジタル制御
url: https://doc.liz6.com/ja/theory/02-control-theory/07-sampling-and-delay
locale: ja
area: theory
tags:
- 制御理論
- 基礎理論
date: 2026-09-10
modified: 2026-09-10
description: ソフトウェアは離散時刻に測定と操作を更新しますが、その間も対象は変化します。動的モデルの厳密な更新式を使い、サンプリング、保持、計算遅延、数値積分を区別します。
---

# サンプリングとディジタル制御

ソフトウェアは離散時刻に測定と操作を更新しますが、その間も対象は変化します。[動的モデル](02-dynamic-models.md)の厳密な更新式を使い、サンプリング、保持、計算遅延、数値積分を区別します。

## 一回の測定と保持

$t_k=kT_s$で$y_k$を測定して$u_k$を計算し、次の更新まで保持します。これが零次ホールドです。まず追加の計算・通信遅延がないと仮定します。$T_s$は実際の制御周期で、画面の更新周期ではありません。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 380 430" width="380" height="430" role="img" aria-labelledby="control-sample" data-diagram-theme="native" style="max-width:100%;height:auto;display:block;margin:auto"><title id="control-sample">サンプリング、計算、保持の順序</title><defs><marker id="control-sample-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0 0L10 5L0 10Z" fill="currentColor"/></marker></defs><rect x="44" y="12" width="300" height="52" rx="8" fill="var(--reading-surface,#f3f5f9)" stroke="currentColor"/><text x="194" y="44" text-anchor="middle" font-size="16" fill="currentColor">t = kTₛ：yₖを測定</text><path d="M194 65v28" fill="none" stroke="currentColor" marker-end="url(#control-sample-arrow)"/><rect x="44" y="94" width="300" height="52" rx="8" fill="var(--reading-surface,#f3f5f9)" stroke="currentColor"/><text x="194" y="126" text-anchor="middle" font-size="16" fill="currentColor">現在の状態からuₖを計算</text><path d="M194 147v28" fill="none" stroke="currentColor" marker-end="url(#control-sample-arrow)"/><rect x="44" y="176" width="300" height="52" rx="8" fill="var(--reading-surface,#f3f5f9)" stroke="currentColor"/><text x="194" y="208" text-anchor="middle" font-size="16" fill="currentColor">区間内でuₖを保持</text><path d="M194 229v28" fill="none" stroke="currentColor" marker-end="url(#control-sample-arrow)"/><rect x="44" y="258" width="300" height="52" rx="8" fill="var(--reading-surface,#f3f5f9)" stroke="currentColor"/><text x="194" y="290" text-anchor="middle" font-size="16" fill="currentColor">対象は連続的に変化</text><path d="M194 311v28" fill="none" stroke="currentColor" marker-end="url(#control-sample-arrow)"/><rect x="44" y="340" width="300" height="52" rx="8" fill="var(--reading-surface,#f3f5f9)" stroke="currentColor"/><text x="194" y="372" text-anchor="middle" font-size="16" fill="currentColor">t = (k+1)Tₛ：次の測定</text></svg>

$\dot x=-x+u$の入力を区間内で一定にすると、厳密な離散モデルは

$$x_{k+1}=ax_k+bu_k,\qquad a=e^{-T_s},\quad b=1-a.$$

$u_k$が区間$[kT_s,(k+1)T_s)$に作用して次の状態を作ります。未来の状態で現在の操作を決めてはいけません。この偏差モデルは正負の操作を許し、飽和はありません。

## 連続系で安定でも、サンプリングすると？

連続帰還$u=-Kx$は$\dot x=-(1+K)x$となり、$K>0$で安定です。一方、サンプル値帰還では

$$x_{k+1}=p_dx_k,\qquad p_d=a-(1-a)K.$$

状態は$p_d^k$に従うため、漸近安定には$|p_d|<1$が必要です。$K=2$なら$p_d=3e^{-T_s}-2$より

$$0<T_s<\ln3\approx1.099\ \mathrm{s}.$$

0.2 sでは倍率約0.456で単調減衰、1 sでは−0.896で符号を交互に変えながら減衰、1.2 sでは−1.096で発散します。これは厳密な対象計算でも残る、実際のサンプリングと保持の効果です。

**サンプリングとディジタル制御 · 実験**

対象ẋ=−x+u、x0=1、K=2。区間内は厳密解で、操作を1周期保持します。遅延時はx−1=x0で初期化します。漸近安定にはスペクトル半径1未満が必要です。


$x_0=1$から開始し、同じ12 sの観測窓で周期を変えます。標本点と区間内の連続応答を比較してください。点間は直線補間ではなく、一定入力での厳密解です。

## 1サンプルの遅れは記憶を増やす

前回の操作を実行するなら$u_k=-Kx_{k-1}$なので、

$$x_{k+1}=ax_k-bKx_{k-1},\qquad z^2-az+bK=0.$$

古い状態や待機中の操作を保存する必要があります。$K=2,T_s=0.5$では遅れなしの極は−0.180、遅れありの共役根の大きさは$\sqrt{2(1-e^{-0.5})}\approx0.887$です。$T_s=0.8$では、遅れなしは−0.652で安定ですが、遅れありは根の大きさ1.049で不安定になります。

離散LTI系では、閉ループの全固有値が単位円の厳密な内側にあることが必要です。$z=e^{sT_s}$は連続自由モードの厳密な標本化に対応します。サンプル間で操作を保持する帰還系は、連続閉ループの極をそのまま写すだけでは通常求まりません。

## 積分刻み幅は別の量

連続系$\dot x=-3x$をEuler法で計算すると$x_{j+1}=(1-3h)x_j$です。$h=1$では倍率−2で数値発散しますが、厳密解$x=e^{-3t}x_0$は減衰します。

制御周期と遅延を固定し、積分刻みだけを小さくして収束を確認します。零次ホールドの厳密離散化ならこの数値誤差を避けられますが、測定の折り返しや計算遅延は残ります。

## 離散PIDの更新順序

前進積分は$z_{k+1}=z_k+K_iT_se_k$です。測定保持に対するフィルタは$y_{f,k+1}=\alpha y_{f,k}+(1-\alpha)y_{m,k}$、$\alpha=e^{-T_s/\tau_f}$と書けます。現在の操作に更新前・更新後のどちらの状態を使うか明示します。

アンチエイリアスフィルタはサンプリング前に作用し、事後の平滑化では失われた情報を復元できません。フィルタ自体の位相遅れもあります。帯域、計算・通信予算、対象のモードから周期を選び、最悪遅延とジッタを検証します。万能な周期倍率はありません。

## 理解を確かめる

$K=2,T_s=\ln3$で倍率−1は漸近安定ですか。

<details><summary>考え方</summary>

振幅が減衰せず符号だけ交代するので、漸近安定ではありません。大きさが1未満である必要があります。

</details>

ブラウザのフレームレートを下げると極や制御周期も変わるべきですか。

<details><summary>考え方</summary>

変わるべきではありません。物理時間と制御イベントで計算し、画面は結果を表示します。

</details>

## 発展資料

[python-controlの`sample_system`](https://python-control.readthedocs.io/en/stable/generated/control.sample_system.html)では複数の離散化法を選べます。実際の保持機構に合わせてモデルを作ってから設計します。
