Tentang NModbus (RTU)

Artikel ini ditujukan untuk pemula.

Teori


Modbus adalah protokol komunikasi yang didasarkan pada arsitektur master-slave. Menggunakan antarmuka RS-485, RS-422, RS-232, serta jaringan Ethernet TCP / IP untuk transfer data.

NModbus adalah pustaka C # besar yang mencakup implementasi semua mode operasi protokol. Model untuk mengimplementasikan kelas-kelas perpustakaan ini memungkinkan Anda untuk bekerja dengan perangkat Modbus apa pun, tetapi hanya dengan satu, karena kelas-kelas perpustakaan merangkum port itu sendiri, mencegah sinkronisasi antara beberapa objek Modbus. Protokol ini cukup populer ketika mengembangkan periferal yang berbeda untuk rumah pintar, serta internet.

Tim
, , TCP/IP .

Jadi, untuk mengelola sesuatu, kita perlu tahu apa dan ke mana harus mengirim. Jadi kita perlu kartu register.

Saya akan mengklarifikasi bahwa sel-sel register adalah:
1. Hanya baca
2. Baca dan tulis
3. Hanya menulis (konfirmasi catatan diizinkan untuk memberikan kode kesalahan)

Kartu paling sederhana terlihat seperti ini:
Tangkapan layar


Juga, ada berbagai penjelasan, misalnya, tentang apa nilai maksimum / minimum dapat dikirim ke alamat, dll.

Praktek


Saya menggunakan versi percobaan simulator dari Modbus Tools dan COM port dari MOXA dengan antarmuka RS-485.

Port COM


Setelah Anda membuat proyek, Anda perlu mengintegrasikan NModbus ke dalamnya. Saya sarankan menggunakan VisualStudio, karena cukup mudah untuk melakukannya dengan NuGet, seperti yang ditunjukkan di bawah ini:

Langkah 1


Langkah ke-2


Di ModbusTools kita perlu mengatur parameter koneksi (mereka mungkin berbeda untuk Anda, ini cocok untuk port COM saya):

Parameter terbuka pada F3, atau pada tab "Connection".

Untuk Master dan Slave, pengaturan harus cocok, kecuali untuk item dengan port COM.

Tangkapan layar


Setelah pengaturan, Anda dapat mengklik "OK" dan perangkat akan terhubung satu sama lain. Entah ini tidak terjadi dan sebuah prasasti muncul bahwa koneksi terputus selama N detik, atau sama sekali tidak ada. Dalam hal ini, periksa pengaturan dan koneksi, pastikan driver untuk port COM dipasang dengan benar dan berfungsi dengan benar.

Contoh program sederhana
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();
        }
    }
}


Tangkapan layar


Penting: jika Anda mengembangkan sesuatu yang lebih rumit daripada contoh di atas, Anda harus memastikan bahwa paket tidak hilang. Ada kebutuhan untuk menghitung checksum, Anda dapat membacanya di sini.

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


All Articles