C # MODBUS RTU для ЧТЕНИЯ РЕГИСТРА

#c# #serial-port #modbus #serial-communication

#c# #последовательный порт #modbus #последовательная связь

Вопрос:

В настоящее время я нахожусь в процессе написания программы на c # в VS, где она считывает регистры хранения измерителя мощности Panasonic KW9M-A с использованием Modbus-RTU. Регистр хранения, который я пытаюсь прочитать, равен: от 00A4H до 00A5H; 32-битный без знака

Примечание: Я написал это в консольном приложении. Я использовал NModbus4 от Maxwe11 Idk, чего мне не хватает, поскольку я новичок в программировании. Может кто-нибудь, пожалуйста, помочь мне? Заранее благодарю вас 🙂

Вот что у меня есть на данный момент:

 using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Console_ye
{
    class Program
    {

        public static void Main(string[] args)
        {
            SerialPort serialPort = new SerialPort("COM13", 115200, Parity.Odd, 8, StopBits.One);
            serialPort.Open();

            Console.WriteLine("This is the beginning: ");

            string hex_add = "0x00A4";
            ushort dec_add = Convert.ToUInt16(hex_add, 16);

            Console.WriteLine("Value of hex: "   hex_add);
            Console.WriteLine("Value of ushort: "   dec_add);

            byte slaveId = 1;
            ushort startAddress = dec_add;
            ushort numberOfPoints = 8;
            IModbusMaster masterRTU = ModbusSerialMaster.CreateRtu (serialPort);
            ushort[] ushortArray = masterRTU.ReadHoldingRegisters(slaveId, startAddress, numberOfPoints);

            Console.WriteLine("Here "   ushortArray[0]);
            foreach (ushort item in ushortArray)
            {
                Console.WriteLine(string.Join ("n", item));
            }
        }
    }
} 
  

Комментарии:

1. Я не верю, что Modbus встроен в C #, поэтому вам, вероятно, не хватает using инструкции и, возможно, ссылки. Вы получаете сообщение об ошибке? Если да, пожалуйста, добавьте это в свой вопрос.

2. Modbus — это последовательный протокол, вы должны следовать протоколу, иначе устройство, прослушивающее modbus, вас не поймет. Существует несколько различных протоколов Modbus, поэтому вам нужно будет использовать правильный (ASCII, RTU, TCP / IP и т.д.). Я понятия не имею, что IModbusMaster такое, лучше всего следовать документации для их библиотеки.

Ответ №1:

Ничего не знаю о NModbus4, но, как показано в примере программы, вам, вероятно, потребуется включить в вашу программу одно или несколько из следующих.

 using Modbus.Data;
using Modbus.Device;
using Modbus.Utility;
using Modbus.Serial;
  

Ответ №2:

Вы должны исправить строку: Console.WriteLine(string.Join ("n", item)); на Console.WriteLine(item);

Тогда это будет работоспособно.

Комментарии:

1. Этот ответ не отвечает на заданный вопрос.