For the complete documentation index, see llms.txt. This page is also available as Markdown.

PLC Relay

Allen-Bradley, Modbus TCP, या Siemens S7 के माध्यम से PLC tags को read और write करने के लिए PLC Relay कॉन्फ़िगर करें।

PLC Relay एक एज कंटेनर सेवा है जो PLC टैग पढ़ने और लिखने के लिए एक HTTP API प्रदान करती है। आप इसे Deployment Manager UI के माध्यम से एक प्रोटोकॉल चुनकर, कनेक्शन विवरण दर्ज करके, और टैग परिभाषित करके कॉन्फ़िगर करते हैं।

PLC Relay केवल Enterprise ग्राहकों के लिए उपलब्ध है। Roboflow सेल्स टीम से संपर्क करें अधिक जानने के लिए।

समर्थित प्रोटोकॉल

PLC Relay सेवा जोड़ते या संपादित करते समय, आप तीन प्रोटोकॉल में से एक चुनते हैं। प्रत्येक प्रोटोकॉल की अपनी कनेक्शन सेटिंग्स और टैग प्रारूप होता है।

प्रोटोकॉल

PLC_DRIVER

PLC

डिफ़ॉल्ट पोर्ट

Allen-Bradley (EtherNet/IP)

allen_bradley

CompactLogix, ControlLogix, Micro800

44818

Modbus TCP

modbus

कोई भी Modbus TCP डिवाइस

502

Siemens S7

siemens_s7

S7-300, S7-400, S7-1200, S7-1500

102

कनेक्शन सेटिंग्स

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) और Word Order (big या little) भी आवश्यक है।

  • Siemens S7: IP या होस्टनाम, के साथ वैकल्पिक :port (जैसे 192.168.1.100:102। साथ ही Rack (0-7) और Slot (0-31) भी आवश्यक है।

सिमुलेशन मोड

सक्षम होने पर, PLC Relay वास्तविक PLC से कनेक्ट करने के बजाय इन-मेमोरी सिम्युलेटर का उपयोग करता है। सभी API ऑपरेशन सामान्य रूप से काम करते हैं, लेकिन मान मेमोरी में संग्रहीत होते हैं। यह हार्डवेयर के बिना परीक्षण के लिए उपयोगी है।

टैग कॉन्फ़िगरेशन

टैग API के माध्यम से उपलब्ध PLC डेटा पॉइंट्स को परिभाषित करते हैं। प्रत्येक टैग में एक नाम, डेटा प्रकार, लिखने योग्य ध्वज, और वैकल्पिक विवरण होता है।

डेटा प्रकार

प्रकार
विवरण
सीमा

BOOL

बूलियन

सत्य / असत्य

INT

16-बिट हस्ताक्षरित पूर्णांक

-32,768 से 32,767

DINT

32-बिट हस्ताक्षरित पूर्णांक

-2,147,483,648 से 2,147,483,647

REAL

32-बिट फ्लोटिंग-पॉइंट

IEEE 754

टैग नाम प्रारूप

टैग नाम PLC प्रोग्राम से मेल खाते हैं और केस-सेंसिटिव होते हैं।

शैली
उदाहरण

साधारण

TagName

प्रोग्राम-स्कोप्ड

Program:MainProgram.TagName

ऐरे तत्व

TagName[0]

UDT सदस्य

MyUDT.Member

प्रारूप: {area}:{address} जहाँ address एक गैर-ऋणात्मक पूर्णांक है।

एरिया
प्रकार(ों)
पहुंच
उदाहरण

कॉइल

BOOL

लिखने योग्य

coil:0

डिस्क्रीट

BOOL

केवल-पठन

discrete:5

होल्डिंग

INT, DINT, REAL

लिखने योग्य

holding:100

इनपुट

INT, DINT, REAL

केवल-पठन

input:200

डेटा ब्लॉक प्रारूप: DB{n}.DB[XWD]{byte}[.{bit}]

एरिया प्रारूप: [MIQEA][WD]?{byte}[.{bit}]

पता
प्रकार
विवरण

DB1.DBX0.0

BOOL

डेटा ब्लॉक 1 में byte 0 का bit 0

DB1.DBW0

INT

DB1 में 16-बिट word

DB1.DBD0

DINT या REAL

DB1 में 32-बिट double-word

M0.0

BOOL

Merker बिट

I0.0 / Q0.0

BOOL

प्रक्रिया इनपुट/आउटपुट बिट

MW0 / MD0

INT / DINT या REAL

Merker word / double-word

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

वेब डैशबोर्ड

PLC Relay में टैग मानों की वास्तविक समय में निगरानी के लिए एक बिल्ट-इन वेब डैशबोर्ड शामिल है। सेवा चलने के बाद, इसे यहाँ एक्सेस करें http://<device-ip>:8007.

डैशबोर्ड पर यहाँ इंटरैक्टिव Swagger दस्तावेज़ीकरण भी होस्ट किया गया है /docs और यहाँ एक विज़ुअल कॉन्फ़िग बिल्डर भी है /static/config-builder.html.

HTTP API

API HTTP के माध्यम से कॉन्फ़िगर किए गए टैग पढ़ता और लिखता है, इसलिए एक पाइपलाइन Allen-Bradley EtherNet/IP, Modbus TCP, या Siemens S7 से सीधे बात किए बिना PLC डेटा का आदान-प्रदान कर सकती है। Base URL है http://<device-ip>:8007और API में प्रमाणीकरण नहीं है। देखें Services डिवाइस पर चलने वाली सभी सेवा APIs द्वारा साझा किए गए नियमों के लिए।

टैग सेवा के PLC_TAGS environment variable से आते हैं और API के माध्यम से बनाए या बदले नहीं जा सकते। केवल मान लिखे जा सकते हैं, और केवल उन टैगों के लिए जो लिखने योग्य के रूप में कॉन्फ़िगर किए गए हैं।

स्टेटस कोड पर भरोसा करने से पहले पढ़ें

जो अनुरोध सेवा तक पहुँचता है लेकिन PLC पर विफल हो जाता है, वह लौटाता है 200। बॉडी जाँचें:

  • /read लौटाता है value: null के साथ error भरा हुआ।

  • /write लौटाता है success: false के साथ error भरा हुआ।

  • /healthz लौटाता है plc_connected: false.

वास्तविक 4xx प्रतिक्रियाओं का अर्थ है कि अनुरोध स्वयं गलत था: 404 ऐसे टैग के लिए जो कॉन्फ़िगर नहीं है, 403 ऐसे टैग के लिए जो केवल-पठन के रूप में कॉन्फ़िगर है, 400 खाली batch या write batch में डुप्लिकेट टैग नाम के लिए, 422 ऐसे body या query parameter के लिए जो validation में विफल हो जाता है।

स्वास्थ्य और सत्यापन

/healthz सक्रिय ड्राइवर, relay live में है या लाइव या सिमुलेशन मोड में है, और नवीनतम टैग सत्यापन सारांश भी रिपोर्ट करता है। सत्यापन प्रत्येक कॉन्फ़िगर किए गए टैग की PLC से तुलना करता है और उसे ठीक, not_found, type_mismatchया not_validated.

Health check

get

Returns service status, PLC connection state, the active driver and mode, and the latest tag validation summary. Returns 200 with plc_connected: false when the PLC is unreachable, so check the field rather than the status code.

Responses
200

Service status

application/json
statusstringRequired

Service status, healthy or unhealthy

plc_connectedbooleanRequired

Whether the PLC is connected

tag_countintegerRequired

Number of configured tags

plc_driverstring · enumRequired

Active PLC driver

Possible values:
modestring · enumRequired

Whether the relay is talking to a real PLC or the in-memory simulator

Possible values:
plc_ipstring · nullableOptional

Configured PLC address

get/healthz
GET /healthz HTTP/1.1
Host: device-ip:8007
Accept: */*
200

Service status

{
  "status": "healthy",
  "plc_connected": true,
  "tag_count": 3,
  "plc_driver": "allen_bradley",
  "mode": "live",
  "plc_ip": "192.168.1.100/0",
  "tag_validation": {
    "validated": true,
    "total": 3,
    "ok": 3,
    "not_found": 0,
    "type_mismatch": 0,
    "not_validated": 0,
    "tags": {}
  }
}

PLC प्रोग्राम परिवर्तन या पुनः कनेक्शन के बाद सत्यापन फिर से चलाएँ:

Re-run tag validation

post

Validates every configured tag against the PLC, checking that it exists and that its data type matches the configuration. Useful after a PLC program change or a reconnection. Returns a summary with validated: false and zeroed counts when no validation results are available.

Responses
200

Validation summary

application/json
validatedbooleanRequired

Whether validation has been performed

totalintegerRequired

Total number of configured tags

okintegerRequired

Tags that passed validation

not_foundintegerRequired

Tags not found on the PLC

type_mismatchintegerRequired

Tags whose PLC type does not match the configuration

not_validatedintegerRequired

Tags not yet validated

post/validate
POST /validate HTTP/1.1
Host: device-ip:8007
Accept: */*
{
  "validated": true,
  "total": 1,
  "ok": 1,
  "not_found": 1,
  "type_mismatch": 1,
  "not_validated": 1,
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": {
      "status": "ok",
      "configured_type": "text",
      "actual_type": "text",
      "detail": "text"
    }
  }
}

टैग परिभाषाएँ

टैग नाम सक्रिय ड्राइवर के प्रारूप में PLC पते होते हैं, जैसा कि टैग नाम प्रारूप.

Get tag definitions

get

Returns the tag schema as defined by the PLC_TAGS environment variable.

Responses
200

Tag definitions

application/json
countintegerRequired

Number of tags

get/schema
GET /schema HTTP/1.1
Host: device-ip:8007
Accept: */*
200

Tag definitions

{
  "tags": [
    {
      "name": "text",
      "type": "BOOL",
      "description": "",
      "writable": true
    }
  ],
  "count": 1
}

मान पढ़ें और लिखें

Read all tag values

get

Returns the current value of every configured tag, along with connection state.

Responses
200

Current values for all tags

application/json
countintegerRequired
plc_connectedbooleanRequired
get/all_tags
GET /all_tags HTTP/1.1
Host: device-ip:8007
Accept: */*
{
  "tags": [
    {
      "name": "text",
      "type": "BOOL",
      "description": "text",
      "writable": true,
      "value": true,
      "last_updated": "2026-01-01T00:00:00.000Z",
      "error": "text",
      "validation_status": "ok",
      "validation_detail": "text"
    }
  ],
  "count": 1,
  "plc_connected": true
}

Read a single tag

get

Reads one tag by name. A read that reaches the service but fails at the PLC returns 200 with error populated and value null, so check error as well as the status code.

Query parameters
tagstringRequired

Name of the tag to read, as configured in PLC_TAGS.

Example: Station1.CycleCount
Responses
200

Tag value

application/json
namestringRequired
typestring · enumRequired

Tag data type. INT is a 16-bit signed integer (-32,768 to 32,767), DINT a 32-bit signed integer (-2,147,483,648 to 2,147,483,647), and REAL a 32-bit float.

Possible values:
descriptionstringRequired
writablebooleanRequired
valueone of · nullableOptional

Current value, null when the read failed

booleanOptional
or
numberOptional
last_updatedstring · date-time · nullableOptional
errorstring · nullableOptional

Read error, null on success

validation_statusstring · enum · nullableOptionalPossible values:
validation_detailstring · nullableOptional
get/read
GET /read?tag=text HTTP/1.1
Host: device-ip:8007
Accept: */*
{
  "name": "Station1.CycleCount",
  "type": "DINT",
  "description": "Total cycle count",
  "writable": true,
  "value": 42,
  "last_updated": "2025-01-15T12:00:00+00:00",
  "error": null,
  "validation_status": "ok",
  "validation_detail": null
}

Write a single tag

post

Writes one value to a configured writable tag. A write that reaches the PLC and fails there returns 200 with success: false and error populated.

Body
namestringRequired

Tag name to write

valueone ofRequired

Value to write

booleanOptional
or
numberOptional
Responses
200

Write result

application/json
namestringRequired
valueone of · nullableOptional

Value written, null when the write failed

booleanOptional
or
numberOptional
successbooleanRequired
errorstring · nullableOptional
post/write
POST /write HTTP/1.1
Host: device-ip:8007
Content-Type: application/json
Accept: */*
Content-Length: 41

{
  "name": "Station1.CycleCount",
  "value": 42
}
{
  "name": "text",
  "value": true,
  "success": true,
  "error": "text"
}

बैच ऑपरेशंस

दोनों batch endpoints कुछ भी चलने से पहले एक इकाई के रूप में validation करते हैं, इसलिए कोई अज्ञात टैग पूरे अनुरोध को अस्वीकार कर देता है, partial results लौटाने के बजाय।

/write_batch ऐसे batch को भी अस्वीकार करता है जो एक ही टैग को दो बार नामित करता है, क्योंकि दोहराए गए नाम के लिए केवल अंतिम मान रखना पहले के writes को चुपचाप हटा देगा। /read_batch डुप्लिकेट स्वीकार करता है और आपके भेजने के क्रम में प्रत्येक entry के लिए एक परिणाम लौटाता है।

validation के बाद होने वाली PLC विफलताएँ write_batch के results में प्रति entry रिपोर्ट की जाती हैं, साथ में write_batchका resultsके साथ success_count और error_count बैच का सारांश देते हैं।

Read several tags

post

Reads several tags in one request. Every name is checked before any read runs, so an unknown tag fails the whole request with 404 rather than returning partial results.

Body
tagsstring[]Required

Tag names to read

Responses
200

Tag values

application/json
countintegerRequired

Number of tags read

post/read_batch
POST /read_batch HTTP/1.1
Host: device-ip:8007
Content-Type: application/json
Accept: */*
Content-Length: 55

{
  "tags": [
    "Station1.PartPresent",
    "Station1.CycleCount"
  ]
}
{
  "tags": [
    {
      "name": "text",
      "type": "BOOL",
      "description": "text",
      "writable": true,
      "value": true,
      "last_updated": "2026-01-01T00:00:00.000Z",
      "error": "text",
      "validation_status": "ok",
      "validation_detail": "text"
    }
  ],
  "count": 1
}

Write several tags

post

Writes several tags in one request. The whole batch is validated first: an empty list, a duplicate tag name, an unknown tag, or a tag that is not writable rejects the request before any write happens. Duplicates are rejected rather than collapsed, since silently keeping the last value for a name would drop the earlier writes.

Individual PLC failures after validation are reported per entry in results, with success_count and error_count summarizing the batch.

Body
Responses
200

Per-write results

application/json
success_countintegerRequired
error_countintegerRequired
post/write_batch
POST /write_batch HTTP/1.1
Host: device-ip:8007
Content-Type: application/json
Accept: */*
Content-Length: 96

{
  "writes": [
    {
      "name": "Station1.CycleCount",
      "value": 42
    },
    {
      "name": "Station1.ResetCmd",
      "value": true
    }
  ]
}
{
  "results": [
    {
      "name": "text",
      "value": true,
      "success": true,
      "error": "text"
    }
  ],
  "success_count": 1,
  "error_count": 1
}

CLI

The plc-cli टूल टैग पढ़ने और लिखने के लिए एक इंटरैक्टिव टर्मिनल इंटरफ़ेस देता है। जब वेब डैशबोर्ड उपलब्ध न हो, तब डिबगिंग और त्वरित संचालन के लिए इसका उपयोग करें। यह कंटेनर के अंदर चलने वाला एक स्थानीय क्लाइंट है, जो उसी HTTP API के विरुद्ध काम करता है जिसका उपयोग डैशबोर्ड करता है।

कुंजी
क्रिया

R

सभी टैग मान पढ़ें

T

सूची से चुने गए एक टैग को पढ़ें

W

लिखने योग्य टैगों में से चुने गए टैग को लिखें

S

टैग स्कीमा दिखाएँ

H

विस्तृत स्वास्थ्य स्थिति दिखाएँ

V

PLC के विरुद्ध टैग सत्यापन चलाएँ

Enter

प्रदर्शन ताज़ा करें

Q

बंद करें

पर्यावरण चर

Configure modal इन्हें आपके लिए लिखता है। इन्हें सीधे तभी संपादित करें जब deployment हाथ से प्रबंधित किया गया हो। देखें डिवाइस कॉन्फ़िगरेशन अपडेट करें.

चर
डिफ़ॉल्ट
विवरण

PLC_DRIVER

कोई नहीं

allen_bradley, modbusया siemens_s7

PLC_IP

कोई नहीं

चुने गए ड्राइवर के प्रारूप में PLC पता

PLC_TAGS

कोई नहीं

JSON के रूप में टैग परिभाषाएँ। यहाँ स्थित कॉन्फ़िग बिल्डर /static/config-builder.html इसे जनरेट करता है

SIMULATION_MODE

बंद

वास्तविक PLC के बजाय इन-मेमोरी सिम्युलेटर का उपयोग करें

LOG_LEVEL

INFO

लॉगिंग की विस्तृतता: DEBUG, INFO, WARNINGया ERROR

ड्राइवर-विशिष्ट सेटिंग्स:

ड्राइवर
चर
सीमा
डिफ़ॉल्ट

Modbus

MODBUS_UNIT_ID

0 से 255

1

Modbus

MODBUS_WORD_ORDER

big या little

big

Siemens S7

S7_RACK

0 से 7

0

Siemens S7

S7_SLOT

0 से 31

1

कनेक्शन मॉनिटरिंग

डिवाइस पृष्ठ पर वर्तमान कनेक्शन स्थिति, सक्रिय प्रोटोकॉल, और नवीनतम टैग मानों वाला एक लाइव PLC Relay स्थिति कार्ड दिखता है। जब relay PLC तक नहीं पहुँच पाता, तो कार्ड एक unreachable बैनर दिखाता है।

जब कोई relay कनेक्टिविटी खो दे, तब सूचना पाने के लिए डिवाइस के "Device Alerts" टैब से एक "PLC Disconnected" अलर्ट जोड़ें। देखें डिवाइस अलर्ट सेट करें.

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

लक्षण
समाधान

"PLC कनेक्ट नहीं है" (Allen-Bradley)

PLC पता प्रारूप (IP/Slot) सत्यापित करें, देखें कि port 44818 पहुँच योग्य है

"PLC कनेक्ट नहीं है" (Modbus)

IP/port (डिफ़ॉल्ट 502) जाँचें और पुष्टि करें कि Unit ID डिवाइस से मेल खाता है

"PLC कनेक्ट नहीं है" (Siemens S7)

IP/port (डिफ़ॉल्ट 102), rack, और slot मान जाँचें; S7-1200/1500 के लिए PUT/GET सक्षम करें और optimized block access अक्षम करें

"Function refused" (Siemens S7)

TIA Portal में PUT/GET अक्षम है, या लक्ष्य DB पर optimized block access सक्षम है

REAL मान कचरे जैसा पढ़ता है (Modbus)

विपरीत Word Order (big बनाम little) आज़माएँ

सत्यापन NOT_FOUND दिखाता है

सटीक टैग नाम के लिए PLC प्रोग्राम जाँचें (case-sensitive)

अंतिम अपडेट

क्या यह उपयोगी था?