बस NModbus (RTU) के बारे में

यह लेख शुरुआती लोगों के लिए है।

सिद्धांत


मोडबस एक संचार प्रोटोकॉल है जो मास्टर-दास वास्तुकला पर आधारित है। डेटा ट्रांसफर के लिए RS-485, RS-422, RS-232 इंटरफेस और साथ ही ईथरनेट टीसीपी / आईपी नेटवर्क का उपयोग करता है।

NModbus एक बड़ा C # पुस्तकालय है जिसमें सभी प्रोटोकॉल ऑपरेशन मोड का कार्यान्वयन शामिल है। इस लाइब्रेरी की कक्षाओं को लागू करने के लिए मॉडल आपको किसी भी मोडबस डिवाइस के साथ काम करने की अनुमति देता है, लेकिन केवल एक के साथ, क्योंकि लाइब्रेरी कक्षाएं अपने आप में पोर्ट को एनकैप्सुलेट करती हैं, जिससे कई मोडबस ऑब्जेक्ट्स के बीच सिंक्रनाइज़ेशन को रोका जा सकता है। यह प्रोटोकॉल काफी लोकप्रिय है जब एक स्मार्ट होम के लिए विभिन्न बाह्य उपकरणों को विकसित करना, साथ ही साथ चीजों का इंटरनेट।

टीमें
, , TCP/IP .

तो, कुछ को प्रबंधित करने के लिए, हमें यह जानना होगा कि क्या और कहाँ भेजना है। इसलिए हमें एक रजिस्टर कार्ड की आवश्यकता है।

मैं स्पष्ट करूंगा कि रजिस्टर सेल हैं:
1. केवल
2. पढ़ें और लिखें
3. केवल लिखें (रिकॉर्ड की पुष्टि एक त्रुटि कोड देने के लिए स्वीकार्य है)

सबसे सरल कार्ड कुछ इस तरह दिखता है:
स्क्रीनशॉट


इसके अलावा, विभिन्न स्पष्टीकरण भी हैं, उदाहरण के लिए, अधिकतम / न्यूनतम मूल्य क्या पते पर प्रेषित किया जा सकता है, आदि।

अभ्यास


मैं RSX -485 इंटरफ़ेस के साथ MOXA से मोडबस टूल्स और COM पोर्ट से सिम्युलेटर के परीक्षण संस्करण का उपयोग करता हूं

COM पोर्ट


एक बार जब आप प्रोजेक्ट बना लेते हैं, तो आपको इसमें NModbus को एकीकृत करना होगा। मैं VisualStudio का उपयोग करने की सलाह देता हूं, क्योंकि यह NuGet के साथ करना काफी आसान है, जैसा कि नीचे दिखाया गया है:

पहला कदम


दूसरा चरण


ModbusTools में हमें कनेक्शन पैरामीटर सेट करने की आवश्यकता है (वे आपके लिए भिन्न हो सकते हैं, ये मेरे COM पोर्ट के लिए उपयुक्त हैं):

F3 या "कनेक्शन" टैब पर खुले पैरामीटर।

मास्टर और स्लेव के लिए, सेटिंग्स को मिलान करना चाहिए, COM पोर्ट वाले आइटम को छोड़कर।

स्क्रीनशॉट


सेट करने के बाद, आप "ओके" पर क्लिक कर सकते हैं और डिवाइस एक दूसरे से कनेक्ट हो जाएंगे। या तो ऐसा नहीं होता है और एक शिलालेख प्रतीत होता है कि कनेक्शन एन सेकंड के लिए बाधित था, या यह पूरी तरह से अनुपस्थित है। इस मामले में, सेटिंग्स और कनेक्शन की जांच करें, सुनिश्चित करें कि COM पोर्ट के लिए ड्राइवर सही तरीके से इंस्टॉल किए गए हैं और सही तरीके से काम करते हैं।

सरल कार्यक्रम उदाहरण
using Modbus.Device;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Modbus
{
    class Program
    {
        static void Main(string[] args)
        {
            SerialPort serialPort = new SerialPort(); //Create a new SerialPort object.
            serialPort.PortName = "COM1";
            serialPort.BaudRate = 9600;
            serialPort.DataBits = 8;
            serialPort.Parity = Parity.None;
            serialPort.StopBits = StopBits.One;
            serialPort.Open();
            ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort);

            byte slaveID = 1;
            ushort startAddress = 0;
            ushort numOfPoints = 1;
            ushort[] holding_register = master.ReadHoldingRegisters(slaveID, startAddress,
            numOfPoints);
            Console.WriteLine(holding_register);
            Console.ReadKey();
        }
    }
}


स्क्रीनशॉट


महत्वपूर्ण: यदि आप कुछ ऐसा विकसित कर रहे हैं जो ऊपर दिए गए उदाहरण से अधिक जटिल है, तो आपको यह सुनिश्चित करना चाहिए कि पैकेज खोए नहीं हैं। चेकसमों की गणना करने की आवश्यकता है, आप इसके बारे में यहां पढ़ सकते हैं

Source: https://habr.com/ru/post/undefined/


All Articles