> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ja/serufuhosuto/enterprise/deployment-manager/plc-relay.md).

# PLC リレー

PLC Relay は、PLCタグの読み取りと書き込みのための HTTP API を提供するエッジコンテナサービスです。Deployment Manager UI で、プロトコルの選択、接続情報の入力、タグの定義を行って設定します。

{% hint style="info" %}
PLC Relay は Enterprise のお客様限定でご利用いただけます。 [Roboflow の営業チームにお問い合わせください](https://roboflow.com/sales) 詳細はこちら。
{% endhint %}

## 対応プロトコル

PLC Relay サービスを追加または編集する際は、3つのプロトコルから1つを選択します。各プロトコルには、それぞれ固有の接続設定とタグ形式があります。

| プロトコル                      | PLC                                | デフォルトポート |
| -------------------------- | ---------------------------------- | -------- |
| Allen-Bradley（EtherNet/IP） | CompactLogix、ControlLogix、Micro800 | 44818    |
| Modbus TCP                 | 任意の Modbus TCP デバイス                | 502      |
| Siemens S7                 | S7-300、S7-400、S7-1200、S7-1500      | 102      |

{% hint style="warning" %}
プロトコルを切り替えると、タグアドレス形式はプロトコル間で互換性がないため、設定済みのタグはすべて消去されます。変更を適用する前に、UI で確認が求められます。
{% endhint %}

## 接続設定

### PLC アドレス

アドレス形式は選択したプロトコルによって異なります:

* **Allen-Bradley:** IP またはホスト名。必要に応じて後ろに `/slot` (例: `192.168.1.100/0`) または完全な CIP ルーティングパス。
* **Modbus TCP:** IP またはホスト名。必要に応じて `:port` (例: `192.168.1.100:502`)。また、32ビット値には Unit ID（0-255）とワード順（big または little）も必要です。
* **Siemens S7:** IP またはホスト名。必要に応じて `:port` (例: `192.168.1.100:102`)。また、Rack（0-7）と Slot（0-31）も必要です。

### シミュレーションモード

有効にすると、PLC Relay は実際の PLC に接続せず、メモリ内シミュレーターを使用します。すべての API 操作は通常どおり動作しますが、値はメモリに保存されます。これはハードウェアなしでテストするのに便利です。

## タグ設定

タグは、API を通じてアクセス可能な PLC データポイントを定義します。各タグには、名前、データ型、書き込み可否フラグ、任意の説明があります。

### データ型

| 型      | 説明          | 範囲                             |
| ------ | ----------- | ------------------------------ |
| `BOOL` | ブール値        | `true` / `false`               |
| `INT`  | 16ビット符号付き整数 | -32,768 〜 32,767               |
| `DINT` | 32ビット符号付き整数 | -2,147,483,648 〜 2,147,483,647 |
| `REAL` | 32ビット浮動小数点数 | IEEE 754                       |

### タグ名の形式

{% tabs %}
{% tab title="Allen-Bradley" %}
タグ名は PLC プログラムと一致し、大文字小文字を区別します。

| スタイル         | 例                             |
| ------------ | ----------------------------- |
| シンプル         | `TagName`                     |
| プログラムスコープ    | `Program:MainProgram.TagName` |
| 配列要素         | `TagName[0]`                  |
| UDT メンバー     | `MyUDT.Member`                |
| {% endtab %} |                               |

{% tab title="Modbus TCP" %}
形式: `{area}:{address}` ここで address は 0 以上の整数です。

| エリア          | 型               | アクセス   | 例             |
| ------------ | --------------- | ------ | ------------- |
| `coil`       | BOOL            | 書き込み可能 | `coil:0`      |
| `discrete`   | BOOL            | 読み取り専用 | `discrete:5`  |
| `holding`    | INT, DINT, REAL | 書き込み可能 | `holding:100` |
| `input`      | INT, DINT, REAL | 読み取り専用 | `input:200`   |
| {% endtab %} |                 |        |               |

{% tab title="Siemens S7" %}
データブロック形式: `DB{n}.DB[XWD]{byte}[.{bit}]`

エリア形式: `[MIQEA][WD]?{byte}[.{bit}]`

| アドレス            | 型                   | 説明                      |
| --------------- | ------------------- | ----------------------- |
| `DB1.DBX0.0`    | BOOL                | データブロック 1 のバイト 0 のビット 0 |
| `DB1.DBW0`      | INT                 | DB1 の 16 ビットワード         |
| `DB1.DBD0`      | DINT または REAL       | DB1 の 32 ビットダブルワード      |
| `M0.0`          | BOOL                | マーカー・ビット                |
| `I0.0` / `Q0.0` | BOOL                | プロセス入出力ビット              |
| `MW0` / `MD0`   | INT / DINT または REAL | マーカー・ワード / ダブルワード       |

S7-1200/1500 の場合: TIA Portal で PUT/GET を有効にし、アクセス対象の DB では最適化ブロックアクセスを無効にしてください。
{% endtab %}
{% endtabs %}

## Web ダッシュボードと REST API

PLC Relay には、タグ値をリアルタイムで監視するための組み込み Web ダッシュボードがあります。サービスが起動したら、次の URL にアクセスしてください `http://<device-ip>:8007`.

ダッシュボードには、次の場所にインタラクティブな Swagger ドキュメントもあります `/docs` および、次の場所にビジュアル設定ビルダーがあります `/static/config-builder.html`.

### API エンドポイント

| メソッド | パス               | 説明                    |
| ---- | ---------------- | --------------------- |
| GET  | `/healthz`       | 接続状態と検証状態を確認するヘルスチェック |
| GET  | `/all_tags`      | すべてのタグの現在値を読み取る       |
| GET  | `/read?tag=name` | 名前で単一のタグを読み取る         |
| POST | `/write`         | 単一のタグに書き込む            |
| POST | `/read_batch`    | 複数のタグを一度に読み取る         |
| POST | `/write_batch`   | 複数のタグを一度に書き込む         |
| GET  | `/schema`        | すべてのタグ定義を取得する         |
| POST | `/validate`      | PLC に対してタグ検証を再実行する    |

## 接続監視

デバイスページには、現在の接続状態、アクティブなプロトコル、最新のタグ値を表示する PLC Relay のステータスカードがリアルタイムで表示されます。リレーが PLC に到達できない場合、カードには到達不能バナーが表示されます。

リレーの接続が失われたときに通知を受け取るには、デバイスの「Device Alerts」タブから「PLC 切断」アラートを追加してください。参照 [Device Alerts を設定する](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up/set-up-device-alerts.md).

## トラブルシューティング

| 症状                             | 対処                                                                                     |
| ------------------------------ | -------------------------------------------------------------------------------------- |
| 「PLC 未接続」（Allen-Bradley）       | PLC アドレス形式（IP/Slot）を確認し、ポート 44818 に到達できることを確認してください                                    |
| 「PLC 未接続」（Modbus）              | IP/ポート（デフォルト 502）を確認し、Unit ID がデバイスと一致していることを確認してください                                  |
| 「PLC 未接続」（Siemens S7）          | IP/ポート（デフォルト 102）、ラック、スロットの値を確認してください。S7-1200/1500 では PUT/GET を有効にし、最適化ブロックアクセスを無効にします |
| 「Function refused」（Siemens S7） | TIA Portal で PUT/GET が無効になっているか、対象 DB で最適化ブロックアクセスが有効になっています                           |
| REAL 値の読み取りがゴミ値になる（Modbus）     | 逆のワード順（big と little）を試してください                                                           |
| 検証で NOT\_FOUND が表示される          | PLC プログラムで正確なタグ名を確認してください（大文字小文字を区別します）                                                |
