スプーリング状態モデル¶
1. 概要¶
スプーリング機能により、通信障害によりホストに配信できないメッセージを装置が保存できます。通信が回復すると、スプールされたメッセージは順序通りにホストに送信されます。
2. スプーリング状態図¶
stateDiagram-v2
[*] --> SPOOL_INACTIVE
SPOOL_INACTIVE --> SPOOL_ACTIVE: Communication Lost & Spooling Enabled
SPOOL_ACTIVE --> SPOOL_TRANSMITTING: Communication Restored
SPOOL_TRANSMITTING --> SPOOL_INACTIVE: All Messages Transmitted
SPOOL_TRANSMITTING --> SPOOL_ACTIVE: Communication Lost Again
SPOOL_ACTIVE --> SPOOL_INACTIVE: Spool Purged / Disabled
SPOOL_ACTIVE --> SPOOL_FULL: Spool Capacity Reached
SPOOL_FULL --> SPOOL_TRANSMITTING: Communication Restored
SPOOL_FULL --> SPOOL_INACTIVE: Spool Purged
3. 状態定義¶
| 状態 | 説明 |
|---|---|
| SPOOL INACTIVE | 通常操作。メッセージはホストに直接送信されます。 |
| SPOOL ACTIVE | 通信が切断されました。メッセージがスプールに保存されています。 |
| SPOOL FULL | スプールが容量に達しました。最も古いメッセージが上書きされる可能性があります。 |
| SPOOL TRANSMITTING | スプールされたメッセージがホストに送信されています。 |
4. 遷移表¶
| # | 現在の状態 | トリガー | 次の状態 | アクション |
|---|---|---|---|---|
| 1 | SPOOL INACTIVE | 通信障害 | SPOOL ACTIVE | メッセージのスプールを開始 |
| 2 | SPOOL INACTIVE | ホストがスプールを要求 (S2F43) | SPOOL INACTIVE | スプールストリームを設定 |
| 3 | SPOOL ACTIVE | 通信回復 | SPOOL TRANSMITTING | スプール送信を開始 |
| 4 | SPOOL ACTIVE | 容量に達した | SPOOL FULL | オーバーフローを処理 |
| 5 | SPOOL ACTIVE | スプール無効化/パージ | SPOOL INACTIVE | スプールをクリア |
| 6 | SPOOL FULL | 通信回復 | SPOOL TRANSMITTING | スプール送信を開始 |
| 7 | SPOOL FULL | スプールパージ | SPOOL INACTIVE | スプールをクリア |
| 8 | SPOOL TRANSMITTING | すべてのメッセージ送信完了 | SPOOL INACTIVE | 通常操作を再開 |
| 9 | SPOOL TRANSMITTING | 通信切断 | SPOOL ACTIVE | スプールを継続 |
5. スプーリング設定¶
5.1 スプール可能なストリーム¶
| ストリーム | 機能 | スプール | 備考 |
|---|---|---|---|
| S5 | アラームメッセージ | はい | すべてのアラームイベントがスプールされます |
| S6 | 収集イベント | はい | イベントレポートがスプールされます |
| S6 | トレースデータ | [はい/いいえ] |
トレースレポート(設定可能) |
5.2 スプールパラメータ¶
| パラメータ | 値 | 説明 |
|---|---|---|
| 最大スプールサイズ | [10000] メッセージ |
スプール内の最大メッセージ数 |
| オーバーフロー動作 | [最古を上書き / 新規を拒否] |
スプールが満杯時の動作 |
| スプールストリーム | S5, S6 | スプールするストリーム |
6. 関連メッセージ¶
| メッセージ | 方向 | 説明 |
|---|---|---|
| S2F43 | H→E | スプールストリームの定義 |
| S2F44 | E→H | スプール定義確認応答 |
| S6F23 | E→H | スプールデータの要求 |
| S6F24 | H→E | スプールデータ要求の許可 |
6.1 S2F43 - スプールストリームの定義¶
構造:
6.2 S2F44 - スプール定義確認応答¶
構造:
STSPACK 値:
| 値 | 説明 |
|---|---|
| 0 | OK、スプール定義完了 |
| 1 | ストリームが無効 |
| 2 | ストリームはスプーリング非対応 |
6.3 S6F23 - スプールデータの要求¶
通信が回復すると、装置はスプールデータの送信許可を要求できます:
構造:
6.4 S6F24 - スプールデータ要求の許可¶
構造:
7. スプール送信シーケンス¶
sequenceDiagram
participant Host
participant Equipment
Note over Equipment: Communication Restored
Equipment->>Host: S6F23 (RSDC=150)
Host-->>Equipment: S6F24 (RSDA=0, Transmit)
Note over Equipment: Begin Spool Transmission
loop For each spooled message
Equipment->>Host: Spooled Message (S5F1, S6F11, etc.)
Host-->>Equipment: Acknowledge
end
Equipment->>Host: S6F11 (SpoolTransmitComplete)
Host-->>Equipment: S6F12
Note over Equipment: State: SPOOL INACTIVE
8. 関連ステータス変数¶
| SVID | 名前 | 型 | 説明 |
|---|---|---|---|
[4001] |
SpoolState | U1 | 現在のスプーリング状態 |
[4002] |
SpoolCount | U4 | スプール内のメッセージ数 |
[4003] |
SpoolCapacity | U4 | 最大スプール容量 |
[4004] |
SpoolOverflowCount | U4 | オーバーフローにより失われたメッセージ数 |
SpoolState 値:
| 値 | 状態 |
|---|---|
| 0 | SPOOL INACTIVE |
| 1 | SPOOL ACTIVE |
| 2 | SPOOL FULL |
| 3 | SPOOL TRANSMITTING |
9. 関連収集イベント¶
| CEID | 名前 | 説明 |
|---|---|---|
[4001] |
SpoolActivated | 通信切断によりスプーリングが開始 |
[4002] |
SpoolFull | スプール容量に達した |
[4003] |
SpoolTransmitStart | スプール送信を開始 |
[4004] |
SpoolTransmitComplete | すべてのスプールメッセージの送信完了 |
[4005] |
SpoolPurged | スプールがパージされた |
10. 関連アラーム¶
| ALID | ALTX | カテゴリ | 説明 |
|---|---|---|---|
[4001] |
Spool Overflow | 警告 | スプール容量に達し、メッセージが失われる可能性があります |
11. 実装備考¶
11.1 スプールストレージ¶
- スプールされたメッセージは不揮発性メモリに保存されます
- メッセージは装置再起動後も保持されます
- FIFO 順序が維持されます
11.2 送信順序¶
スプールメッセージの送信時: 1. メッセージは時系列順(最古のものから)で送信されます 2. 装置は次のメッセージを送信する前に確認応答を待ちます 3. 送信が失敗した場合、メッセージはスプールに残ります
11.3 スプールパージ¶
スプールは以下の方法でパージできます: - ホストコマンド(STSPM=2 を指定した S2F43) - オペレータ操作(許可されている場合) - オーバーフロー時の自動パージ(設定されている場合)