Modbus RTU, ASCII, और SerialTool के साथ TCP
Modbus क्या है
Modbus एक सीरियल संवाद प्रोटोकॉल है जिसे 1979 में Modicon® द्वारा बनाया गया था (जो अब Schneider Electric का हिस्सा है) ताकि इसे इसके प्रोग्रामेबल लॉजिक कंट्रोलर्स (PLCs) से कनेक्ट किया जा सके। यह औद्योगिक संवाद में एक डि फैक्टो स्टैंडर्ड बन गया है और यह औद्योगिक इलेक्ट्रॉनिक डिवाइस के बीच वैश्विक रूप से सबसे व्यापक जुड़ाव प्रोटोकॉलों में से एक है। Modbus एक रॉयल्टी-फ्री प्रोटोकॉल है जिसे द मॉड्बस आर्गेनाइजेशन की वेबसाइट पर विशेषज्ञों द्वारा घोषित किया गया है।
सरल शब्दों में, यह इलेक्ट्रॉनिक डिवाइस के बीच सीरियल लाइनों के माध्यम से जानकारी प्रेषित करने का एक तरीका है। जानकारी अनुरोध करने वाला डिवाइस Modbus Client कहलाता है, और जानकारी प्रदान करने वाले डिवाइस Modbus Servers होते हैं। स्टैंडर्ड Modbus नेटवर्क में एक क्लाइयंट और 1 से 247 की संख्या तक के सर्वर होते हैं, प्रत्येक के पास 1 से 247 तक का एक अद्वितीय सर्वर पता होता है। क्लाइयंट को सर्वरों को जानकारी लिखने की भी सुविधा है।
मौद्रिक उपयोग के लिए मूल रूप से डिज़ाइन किया गया था, इस प्रोटोकॉल को समय के साथ विभिन्न क्षेत्रों में अपनाया गया है, जिससे यह सबसे व्यापक प्रोटोकॉलों में से एक बन गया है। आज भी, 40 वर्षों से अधिक समय बाद भी, यह कई उपकरणों में उपलब्ध है, जैसे कि ऑपरेटर पैनल, PLCs, होम ऑटोमेशन, और यहां तक कि आर्डुइनो जैसे साधारित उपकरणों में भी समाहित किया गया है।
Modbus RTU और ASCII सीरियल के माध्यम से संदेश प्रेषण
जब प्रोटोकॉल बनाया गया था, तो संवाद का उपयोग सीरियल पोर्ट के माध्यम से किया जाना इच्छित था, इसलिए इसे SerialTool में लागू किया गया है। Modbus का उपयोग सामरिक नियंत्रण और डेटा अधिग्रहण (SCADA) सिस्टम में दूरस्थ टर्मिनल यूनिट (RTU) को संयोजित करने के लिए अक्सर किया जाता है। जिस प्रारूप में डेटा प्रेषित किया जाता है, इसे दो भागों में विभाजित किया गया है:
- MODBUS RTU - डेटा को हेक्साडेसिमल प्रारूप में प्रेषित किया जाता है।
- MODBUS ASCII - डेटा को ASCII प्रारूप में प्रेषित किया जाता है।
त्रुटि नियंत्रण दो मामलों में भिन्न है; MODBUS RTU में, कमांड के बाद एक साइक्लिक रीडंडन्सी चेक (CRC) का उपयोग किया जाता है और इसे कमांड के बाद भेजा जाता है, जबकि MODBUS ASCII में, एक लॉन्जीट्यूडिनल रीडंडन्सी चेक (LRC) कमांड के बाद भेजा जाता है।
Modbus TCP Transmission
1999 में, "Modbus TCP" विकसित किया गया, एक मानक जो TCP/IP प्रोटोकॉल स्वीट का उपयोग करने वाले नेटवर्क्स के लिए समर्पित है। यह मौद्रिक सीरियल RTU का एक संस्करण है जो TCP/IP पर आधारित है, जो इंटरनेट/इंट्रानेट नेटवर्कों पर संवाद संभावित बनाता है। हाल के वर्षों में, TCP/IP संस्करण बढ़ती हुई है क्योंकि यह ओपन सोर्स, लागू करने में सरल, विकास लागत कम है, और इसमें न्यूनतम हार्डवेयर समर्थन है।
त्रुटि नियंत्रण दो मामलों में भिन्न है; MODBUS RTU में, कमांड के बाद एक साइक्लिक रीडंडन्सी चेक (CRC) का उपयोग किया जाता है और इसे कमांड के बाद भेजा जाता है, जबकि MODBUS ASCII में, एक लॉन्जीट्यूडिनल रीडंडन्सी चेक (LRC) कमांड के बाद भेजा जाता है।
Modbus TCP/IP प्रोटोकॉल डेटा का बाइनरी इन्कोडिंग और TCP/IP त्रुटि पहचान मेकेनिज़्म का उपयोग करता है। सीरियल Modbus के विपरीत, TCP/IP संस्करण कनेक्शन-उन्मुख है और एक ही स्लेव या एकाधिक उपकरणों पर समकालिक क्रियाएँ करने की अनुमति देता है। Modbus TCP/IP भी मास्टर-स्लेव पैरेडाइम का उपयोग करता है, और इस संवाद में चार प्रकार के संदेश होते हैं।
Modbus ISO/OSI स्टैक (अनुप्रयोग परत) में परत 7 पर स्थित है, जो संदेश स्वरूपण और डेटा और नियंत्रण कार्यों के संवहन को परिभाषित करने के लिए है (मोडिंग और त्रुटि नियंत्रण के लिए)। संवाद ग्राहक-सर्वर पैरेडाइम के माध्यम से होता है। प्रोटोकॉल एक प्रोटोकॉल डेटा इकाई (PDU) को परिभाषित करता है जो उपयोग की जाने वाली संचार परत पर निर्भर नहीं करती है। एप्लिकेशन डेटा इकाई (ADU) संचार परत के लिए और त्रुटि नियंत्रण के लिए अतिरिक्त क्षेत्र प्रस्तुत करती है।
SerialTool Modbus Client
SerialTool RTU, ASCII, और Modbus TCP संदेश प्रेषण मोड का समर्थन करता है ताकि एक Modbus Client को अधिकतम पेशेवर समर्थन प्रदान किया जा सके।
SerialTool एक डेवेलपर की आवश्यकताओं को सुगम बनाने के लिए Raw कमांड भेजने का विकल्प भी प्रदान करता है।
भेजे गए कमांड का लॉग दिखाने वाला स्क्रीन
भेजे गए लो-स्तर के कमांड दिखाने वाला स्क्रीन
Modbus Functions
यहां वह कार्य हैं जो Modbus प्रोटोकॉल के लिए SerialTool अमल करता है।
Function Code | Action | Table Name |
---|---|---|
0x01 | Read | Discrete Output Coils |
0x02 | Read | Discrete Input Contacts |
0x03 | Read | Analog Output Holding Register |
0x04 | Read | Analog Input Registers |
0x05 | Write Single | Discrete Output Coil |
0x06 | Write Single | Analog Output Holding Register |
0x0F (dec 15) | Write Multiple | Discrete Output Coils |
0x10 (dec 16) | Write Multiple | Analog Output Holding Registers |
Modbus डेटा संरचनाएँ
जानकारी को सर्वर उपकरण में चार विभिन्न परतों में संग्रहित किया जाता है। दो परतें विकेन्द्री चालू/बंद मूल्य (कॉइल्स) को संग्रहित करती हैं, और दो परतें संख्यात्मक मूल्यों (रजिस्टर्स) को संग्रहित करती हैं। कोइल और रजिस्टर दोनों ही एक पठन-केवल तालिका और एक पठन-लिखने वाली तालिका हैं। प्रत्येक तालिका में 9999 मूल्य हैं। प्रत्येक कोइल या संपर्क 1 बिट है और उसमें डेटा पता 0000 से 270E के बीच है। प्रत्येक रजिस्टर 1 वर्ड = 16 बिट = 2 बाइट है और उसमें डेटा पता 0000 से 270E के बीच है।
Coil/Registers numbers | Data Addresses | Type | Table Name |
---|---|---|---|
1-9999 | 0x0000 to 0x270E | Read/Write | Discrete Output Coils |
10001-19999 | 0x0000 to 0x270E | Read Only | Discrete Input Contacts |
30001-39999 | 0x0000 to 0x270E | Read Only | Analog Input Register |
40001-49999 | 0x0000 to 0x270E | Read/Write | Analog Output Holding Register |