TPCA における状態インスタンスの単方向性

状態タイプと実運転履歴を区別する考え方は、状態機械の実行履歴やワークフロー履歴でも用いられている。本稿では、この区別を TPCA の状態遷移設計へ適用した場合の扱いを整理する。

自動化システムでは、状態機械、SFC、シーケンス制御、設備状態モデルなどを用いて運転状態を表現する。

これらのモデルでは、同じ状態タイプへ再び遷移する構造を表現できる。

例えば、

A → B → A

という状態遷移である。

実運転で発生した状態を時間位置とともに見ると、最初の A と後の A は別の発生状態である。

実運転履歴では、

A₁ → B₁ → A₂

と表す。

A₁ と A₂ は同じ状態タイプ A に属していても、発生した時間位置とそこへ至る履歴が異なるため、別の状態インスタンスとして扱う。

TPCA では、時間方向を状態インスタンスの識別と状態遷移設計に明示的に反映する。

状態タイプは循環できるが、実運転の状態インスタンスは時間方向へ継続して生成される。

この考え方により、復旧、ロールバック、リセット、再試行、再進入なども、現在の状態インスタンスから新しい状態インスタンスへの遷移として共通の状態モデルで扱える。


1. A → B → A と A₁ → B₁ → A₂ の違い

ロボットが原点位置で待機している状態を A とする。

A:
ロボット位置 = 原点
運転モード = 自動
Ready = TRUE

その後、ロボットが動作を開始して状態 B へ進む。

B:
ロボット動作中
Ready = FALSE

動作完了後、ロボットが再び原点位置へ戻り、

ロボット位置 = 原点
運転モード = 自動
Ready = TRUE

となった場合、状態タイプとしては再び A と表現できる。

A → B → A

実運転では、最初の A と後の A の間に実際の処理が発生している。

代表的には、次のような変化がある。

  • 時間の進行
  • 制御指令
  • アクチュエータ動作
  • ワーク状態の変化
  • 資源の占有と解放
  • 状態更新
  • アラームやイベント
  • 運転履歴

このため、実運転履歴では、

A₁ → B₁ → A₂

と区別する。

Type(A₁) = Type(A₂) = A

であっても、

A₁ ≠ A₂

である。

同じ状態タイプへ再進入した場合も、過去の状態インスタンスそのものへ戻ったとは扱わない。


2. 状態タイプと状態インスタンス

本稿では、状態を二つのレベルで扱う。

状態タイプ

状態タイプは、システム設計上の状態の種類を表す。

例えば、

WAIT
EXECUTE
FAULT
RECOVERY
AUTO

などである。

状態タイプ間の関係には循環を含めることができる。

WAIT → EXECUTE → WAIT
AUTO → FAULT → AUTO

状態インスタンス

状態インスタンスは、実運転中に実際に発生した一つの状態を表す。

説明上、状態インスタンスを次のように表す。

Sᵢ = (Xᵢ, Tᵢ)

ここで、

  • Xᵢ:その時点のエンジニアリング状態内容
  • Tᵢ:その状態が存在する時間位置

を表す。

実運転中に連続して発生する状態インスタンスを、

S₀ → S₁ → S₂ → ...

とすると、時間位置は、

T₀ < T₁ < T₂ < ...

となる。

後続する状態の内容が過去と同一で、

X₀ = X₂

であっても、

T₂ > T₀

であるため、

S₂ ≠ S₀

となる。

状態タイプは繰り返し現れることができる。状態インスタンスは、実運転の時間方向に沿って新たに生成される。


3. 復旧、ロールバック、リセット、再試行、再進入の扱い

制御ソフトウェアでは、異常復旧、状態再設定、再試行、状態再進入などを表す処理として、次のような名称が使用される。

Recovery:復旧
Rollback:ロールバック
Reset:リセット
Retry:再試行
Re-entry:再進入

これらの処理も、実運転上は過去の状態インスタンスそのものへ戻る処理としては扱わない。

例えば、

AUTO₁
→ FAULT₁
→ RECOVERY₁
→ AUTO₂

という状態遷移では、

Type(AUTO₁) = Type(AUTO₂)

であっても、

AUTO₁ ≠ AUTO₂

である。

AUTO₂ は、異常発生と復旧処理を経た後に形成された新しい状態インスタンスである。

同様に、

READY₁
→ EXECUTE₁
→ RESETTING₁
→ READY₂

の場合も、READY₂ は READY₁ と同じ状態タイプに属する新しい状態インスタンスである。

再試行や再進入についても同じ考え方を適用する。

これらの処理は、

現在状態
→ 新しい状態

という同じ方向の状態遷移として扱う。


4. 制御ソフトウェア設計上の利点

状態タイプの循環と、状態インスタンスの時間方向を分けて扱うことで、制御ソフトウェアの状態モデルを一貫した形で整理できる。

4.1 正常処理と異常処理を同じ遷移形式で扱える

正常処理に加え、異常処理、復旧、ロールバック、リセット、再試行、再進入も、

現在状態
→ 新しい状態

という同じ状態遷移形式で表現できる。

復旧や再試行を、過去の状態インスタンスへ逆向きに戻る遷移として表現する必要がない。

4.2 実運転履歴を区別して残せる

同じ状態タイプへ再進入した場合も、新しい状態インスタンスとして扱う。

AUTO₁
AUTO₂
AUTO₃

のように、それぞれの発生を区別できる。

同じ状態名が繰り返し現れるシステムでも、実際の運転順序を追跡できる。

4.3 デバッグ時に状態の前後関係を追跡しやすい

例えば、

WAIT → EXECUTE → WAIT

という状態タイプだけでは、どの WAIT で問題が発生したかを区別できない。

状態インスタンスとして、

WAIT₁ → EXECUTE₁ → WAIT₂

と記録すれば、状態の前後関係と直前の実行履歴を確認できる。

4.4 実運転履歴を一つの時間方向で記録できる

正常処理、異常処理、復旧、再試行などを、すべて後続する状態インスタンスへの遷移として記録することで、実運転の状態インスタンス列と実行履歴を一つの時間方向で整理できる。

この整理は、次の項目に利用できる。

  • 状態構成の整理
  • 遷移経路の記述
  • 運転履歴の追跡
  • デバッグ分析
  • 状態ログの比較
  • 制御モジュールの再利用

ソフトウェア複雑度、保守性、開発効率に対する具体的な効果は、実装ごとに評価する必要がある。


5. TPCA における扱い

TPCA / PCN では、実運転上の状態遷移を、

現在状態
→ 目標状態

として扱う。

目標状態が過去に存在した状態タイプと同じであっても、実際に進入した後の状態は新しい状態インスタンスとして扱う。

例えば、

AUTO₁
→ FAULT₁
→ RECOVERY₁
→ AUTO₂

では、

Type(AUTO₁) = Type(AUTO₂)

であっても、

AUTO₁ ≠ AUTO₂

である。

TPCA では、この考え方を正常処理、異常処理、復旧処理、再試行、状態再進入などに共通して適用する。

TPCA における状態インスタンスの単方向性は、

実運転で発生した状態インスタンスを、時間方向へ継続する一連の状態として扱う。

という設計原則である。

状態タイプと状態インスタンスの関係は、次のように表す。

状態タイプ:
A → B → A

状態インスタンス:
A₁ → B₁ → A₂

TPCA / PCN は、この区別を状態遷移表現の基本原則として採用する。


エンジニアリング上の結論

本稿の要点は、次の3点である。

  1. 状態タイプには循環を含めることができる。
A → B → A
  1. 実運転で発生する状態インスタンスは、時間方向へ継続して生成される。
A₁ → B₁ → A₂
  1. 復旧、ロールバック、リセット、再試行、再進入などによって過去と同じ状態タイプが再び形成された場合も、新しい状態インスタンスとして扱う。

この整理により、正常処理、異常処理、復旧処理、再試行、状態再進入を共通した状態遷移形式で表現できる。

状態タイプは循環できるが、状態インスタンスは時間方向へ継続する。

TPCA / PCN では、この考え方を実運転上の状態遷移設計に採用する。


参考文献と外部資料

以下の資料は、産業オートメーションにおいて状態、ステップ、遷移、同一状態タイプへの再進入などの表現が使用されていることを確認するための参考資料である。

  1. PLCopen — IEC 61131-3
    IEC 61131-3 の Sequential Function Chart(SFC)は、ステップ、遷移、アクションを用いて PLC プログラムのシーケンス構造を表現する。
    https://www.plcopen.org/standards/logic/iec-61131-3/

  2. PLCopen — SFC FAQ / Structuring with SFC
    PLCopen の公開資料では、SFC において既存ステップへ戻る分岐構造を表現できることが説明されている。
    https://www.plcopen.org/standards/logic/iec-61131-3/faqs/

  3. OMAC — PackML
    PackML は、機械・ユニットにおける標準化された状態と動作モデルを提供し、設備間で共通した運転状態表現に使用される。
    https://www.omac.org/packml


文書情報

題目:TPCA における状態インスタンスの単方向性 ― 状態タイプの循環と実運転履歴の違い
文書種別:技術ノート
バージョン:Public Note Version 1.1
初回公開日:2026-08-21
最終更新日:2026-10-03
著者:全野南政 / Nansei Zenno
現在の URL:https://zennns.com/jp/notes/tpca-unidirectional-state-transition/