PLC Relay
Allen-Bradley, Modbus TCP, या Siemens S7 के माध्यम से PLC tags को read और write करने के लिए PLC Relay कॉन्फ़िगर करें।
PLC Relay एक एज कंटेनर सेवा है जो PLC टैग पढ़ने और लिखने के लिए एक HTTP API प्रदान करती है। आप इसे Deployment Manager UI के माध्यम से एक प्रोटोकॉल चुनकर, कनेक्शन विवरण दर्ज करके, और टैग परिभाषित करके कॉन्फ़िगर करते हैं।
समर्थित प्रोटोकॉल
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
प्रोटोकॉल बदलने पर सभी कॉन्फ़िगर किए गए टैग साफ़ हो जाते हैं क्योंकि टैग पता प्रारूप प्रोटोकॉल के बीच परस्पर विनिमेय नहीं होते। परिवर्तन लागू करने से पहले UI पुष्टि के लिए पूछेगा।
कनेक्शन सेटिंग्स
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.
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.
Service status
Service status, healthy or unhealthy
Whether the PLC is connected
Number of configured tags
Active PLC driver
Whether the relay is talking to a real PLC or the in-memory simulator
Configured PLC address
GET /healthz HTTP/1.1
Host: device-ip:8007
Accept: */*
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 प्रोग्राम परिवर्तन या पुनः कनेक्शन के बाद सत्यापन फिर से चलाएँ:
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.
Validation summary
Whether validation has been performed
Total number of configured tags
Tags that passed validation
Tags not found on the PLC
Tags whose PLC type does not match the configuration
Tags not yet validated
Service not initialized
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 पते होते हैं, जैसा कि टैग नाम प्रारूप.
Returns the tag schema as defined by the PLC_TAGS environment variable.
Tag definitions
Number of tags
GET /schema HTTP/1.1
Host: device-ip:8007
Accept: */*
Tag definitions
{
"tags": [
{
"name": "text",
"type": "BOOL",
"description": "",
"writable": true
}
],
"count": 1
}मान पढ़ें और लिखें
Returns the current value of every configured tag, along with connection state.
Current values for all tags
Service not initialized
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
}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.
Name of the tag to read, as configured in PLC_TAGS.
Station1.CycleCountTag value
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.
Current value, null when the read failed
Read error, null on success
Unknown tag
Request failed validation
Service not initialized
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
}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.
Tag name to write
Value to write
Write result
Value written, null when the write failed
Tag is configured as not writable
Unknown tag
Request failed validation
Service not initialized
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 बैच का सारांश देते हैं।
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.
Tag names to read
Tag values
Number of tags read
Empty tag list
Unknown tag in the list
Request failed validation
Service not initialized
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
}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.
Per-write results
Empty writes list or duplicate tag name in the batch
A tag in the batch is configured as not writable
Unknown tag in the batch
Request failed validation
Service not initialized
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)
अंतिम अपडेट
क्या यह उपयोगी था?