> 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/roboflow/roboflow-hi/deploy/device-manager/plc-relay.md).

# PLC Relay

PLC Relay एक edge container सेवा है जो PLC tags को पढ़ने और लिखने के लिए HTTP API प्रदान करती है। आप इसे Deployment Manager UI के माध्यम से protocol चुनकर, connection details दर्ज करके, और tags परिभाषित करके configure करते हैं।

{% hint style="info" %}
PLC Relay केवल Enterprise ग्राहकों के लिए उपलब्ध है। [Roboflow sales team से संपर्क करें](https://roboflow.com/sales) और अधिक जानने के लिए।
{% endhint %}

## समर्थित Protocols

जब आप PLC Relay service जोड़ते या संपादित करते हैं, तो आप तीन protocols में से एक चुनते हैं। हर protocol की अपनी connection settings और tag format होता है।

| Protocol                    | PLCs                                 | डिफ़ॉल्ट Port |
| --------------------------- | ------------------------------------ | ------------- |
| Allen-Bradley (EtherNet/IP) | CompactLogix, ControlLogix, Micro800 | 44818         |
| Modbus TCP                  | कोई भी Modbus TCP device             | 502           |
| Siemens S7                  | S7-300, S7-400, S7-1200, S7-1500     | 102           |

{% hint style="warning" %}
Protocols बदलने से सभी configured tags हट जाते हैं क्योंकि tag address formats protocols के बीच interchangeable नहीं होते। परिवर्तन लागू करने से पहले UI पुष्टि के लिए पूछेगा।
{% endhint %}

## Connection Settings

### PLC Address

Address format चयनित protocol पर निर्भर करता है:

* **Allen-Bradley:** IP या hostname, वैकल्पिक रूप से इसके बाद `/slot` (जैसे `192.168.1.100/0`) या एक पूरा CIP routing path।
* **Modbus TCP:** IP या hostname, वैकल्पिक `:port` (जैसे `192.168.1.100:502`)। साथ ही 32-bit values के लिए Unit ID (0-255) और Word Order (big या little) भी आवश्यक है।
* **Siemens S7:** IP या hostname, वैकल्पिक `:port` (जैसे `192.168.1.100:102`)। साथ ही Rack (0-7) और Slot (0-31) भी आवश्यक हैं।

### Simulation Mode

जब सक्षम होता है, PLC Relay वास्तविक PLC से connect करने के बजाय in-memory simulator का उपयोग करता है। सभी API operations सामान्य रूप से काम करते हैं, लेकिन values memory में संग्रहीत होती हैं। यह hardware के बिना testing के लिए उपयोगी है।

## Tag Configuration

Tags उन PLC data points को परिभाषित करते हैं जो API के माध्यम से accessible हैं। हर tag का एक name, data type, writable flag, और वैकल्पिक description होता है।

### Data Types

| प्रकार | विवरण                 | Range                           |
| ------ | --------------------- | ------------------------------- |
| `BOOL` | Boolean               | `true` / `false`                |
| `INT`  | 16-bit signed integer | -32,768 से 32,767               |
| `DINT` | 32-bit signed integer | -2,147,483,648 से 2,147,483,647 |
| `REAL` | 32-bit floating point | IEEE 754                        |

### Tag Name Formats

{% tabs %}
{% tab title="Allen-Bradley" %}
Tag names PLC program से मेल खाते हैं और case-sensitive होते हैं।

| Style          | उदाहरण                        |
| -------------- | ----------------------------- |
| Simple         | `TagName`                     |
| Program-scoped | `Program:MainProgram.TagName` |
| Array element  | `TagName[0]`                  |
| UDT member     | `MyUDT.Member`                |
| {% endtab %}   |                               |

{% tab title="Modbus TCP" %}
Format: `{area}:{address}` जहाँ address एक non-negative integer है।

| Area         | Type(s)         | Access    | उदाहरण        |
| ------------ | --------------- | --------- | ------------- |
| `coil`       | BOOL            | Writable  | `coil:0`      |
| `discrete`   | BOOL            | Read-only | `discrete:5`  |
| `holding`    | INT, DINT, REAL | Writable  | `holding:100` |
| `input`      | INT, DINT, REAL | Read-only | `input:200`   |
| {% endtab %} |                 |           |               |

{% tab title="Siemens S7" %}
Data Block format: `DB{n}.DB[XWD]{byte}[.{bit}]`

Area format: `[MIQEA][WD]?{byte}[.{bit}]`

| Address         | प्रकार             | विवरण                            |
| --------------- | ------------------ | -------------------------------- |
| `DB1.DBX0.0`    | BOOL               | Data Block 1 में byte 0 का bit 0 |
| `DB1.DBW0`      | INT                | DB1 में 16-bit word              |
| `DB1.DBD0`      | DINT या REAL       | DB1 में 32-bit double-word       |
| `M0.0`          | BOOL               | Merker bit                       |
| `I0.0` / `Q0.0` | BOOL               | Process input/output bit         |
| `MW0` / `MD0`   | INT / DINT या REAL | Merker word / double-word        |

S7-1200/1500 के लिए: TIA Portal में PUT/GET सक्षम करें और accessed DBs पर optimized block access अक्षम करें।
{% endtab %}
{% endtabs %}

## Web Dashboard और REST API

PLC Relay में एक built-in web dashboard शामिल है जो tag values को real time में monitor करने के लिए है। सेवा चालू होने के बाद, इसे यहाँ access करें `http://<device-ip>:8007`.

Dashboard पर interactive Swagger documentation भी होस्ट की जाती है `/docs` और एक visual config builder `पर`.

### API Endpoints

| Method | Path             | विवरण                                            |
| ------ | ---------------- | ------------------------------------------------ |
| GET    | `/healthz`       | कनेक्शन और validation status के साथ health check |
| GET    | `/all_tags`      | सभी tags के current values पढ़ें                 |
| GET    | `/read?tag=name` | नाम से एक single tag पढ़ें                       |
| POST   | `/write`         | एक single tag लिखें                              |
| POST   | `/read_batch`    | एक साथ multiple tags पढ़ें                       |
| POST   | `/write_batch`   | एक साथ multiple tags लिखें                       |
| GET    | `/schema`        | सभी tag definitions प्राप्त करें                 |
| POST   | `/validate`      | PLC के विरुद्ध tag validation फिर से चलाएँ       |

## Connection Monitoring

device page वर्तमान connection state, active protocol, और latest tag values के साथ एक live PLC Relay status card दिखाती है। जब relay PLC तक पहुँच नहीं पाता, तो card पर unreachable banner प्रदर्शित होता है।

जब कोई relay connectivity खो दे, तो notified होने के लिए, device के "Device Alerts" tab से एक "PLC Disconnected" alert जोड़ें। देखें [Set up Device Alerts](/roboflow/roboflow-hi/deploy/device-manager/setting-up/set-up-device-alerts.md).

## समस्या निवारण

| लक्षण                                               | सुधार                                                                                                                           |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| "PLC connected नहीं है" (Allen-Bradley)             | PLC address format (IP/Slot) सत्यापित करें, port 44818 तक पहुँच जांचें                                                          |
| "PLC connected नहीं है" (Modbus)                    | IP/port (default 502) जांचें और सत्यापित करें कि Unit ID device से मेल खाता है                                                  |
| "PLC connected नहीं है" (Siemens S7)                | IP/port (default 102), rack, और slot values जांचें; S7-1200/1500 के लिए PUT/GET सक्षम करें और optimized block access अक्षम करें |
| "Function refused" (Siemens S7)                     | TIA Portal में PUT/GET disabled है, या target DB पर optimized block access सक्षम है                                             |
| REAL value garbage के रूप में पढ़ा जाता है (Modbus) | विपरीत Word Order (big बनाम little) आज़माएँ                                                                                     |
| Validation NOT\_FOUND दिखाता है                     | सटीक tag name (case-sensitive) के लिए PLC program जांचें                                                                        |
