Я пишу ведомый симулятор Modbus tcp / ip, используя NModbus, и наблюдаю, что хранилище данных, присутствующее для ведомого nmodbus, поддерживает только тип данных ushort.Есть ли способ записать значения с плавающей запятой или десятичные значения в хранилище данных, предоставляемое подчиненным nmodbus?
Я пытаюсь использовать это хранилище данных, чтобы использовать его для чтения данных из входных регистров в моей главной программе Modbus tcp / ip, которая написана отдельно.
Я посмотрел вИсходный код NModbus (https://github.com/NModbus/NModbus/blob/develop/NModbus/Data/DefaultSlaveDataStore.cs) специально для класса хранилищ данных. Однако я заметил, что он поддерживает только типы ushort.
Ниже приведен код, который я использую при записи данных в подчиненные регистры ввода Modbus вМой modbus tcp / ip slave.
public void WriteDefaultValuesToModbusSlave()
{
// create and start the TCP slave
StartTcpListener();
var factory = new ModbusFactory();
var network = factory.CreateSlaveNetwork(_slaveTcpListener);
IModbusSlave slave = factory.CreateSlave(_slaveId);
// _floatValues = 0F, 2F, 4F, 6F, 8F, 10F
byte[][] data = RegisterFunctions.FloatToByteValueArrays(_floatValues, 32);
int i = 0;
foreach (byte[] byteArray in data)
{
_littleEndianValues[i] = Endian.LittleEndian(byteArray);
i++;
}
ushort[] ushortArray = RegisterFunctions.ByteValueArraysToUShorts(_littleEndianValues);
slave.DataStore.InputRegisters.WritePoints(0, ushortArray);
network.AddSlave(slave);
// Start listening
var listenTask = network.ListenAsync();
}
Если у кого-то есть опыт работы с NModbus и создания хранилища данных для modbus tcp / ip slave, который можно использовать в качестве данных для чтения входных регистров. Пожалуйста, дайте мне знать, какэто может быть достигнуто?