#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. Этот ответ не отвечает на заданный вопрос.