Modbus.Net TcpClient завершается с ошибкой ровно в каждом шестом опросеC#

Место общения программистов C#
Ответить
Anonymous
 Modbus.Net TcpClient завершается с ошибкой ровно в каждом шестом опросе

Сообщение Anonymous »

Я внедрил клиент Modbus.Net v1.4.3 и периодически опрашивал данные в основной программе, и наблюдалось странное поведение.
Каждый шестой опрос дает:

Код: Выделить всё

  Data = null
Success = false
ErrorCode = 0
ErrorMsg  = ""
Другие опросы работают нормально.
[img]https://i.sstatic. net/tCgvLTLy.png[/img]

Не стесняйтесь обвинять мой код по ходу дела.
В следующем коде опрос выполняет только эта строка. :

Код: Выделить всё

//Get data from machine
var result = await _machine.GetMachineMethods().GetDatasAsync(MachineDataType.CommunicationTag);`
Класс клиента Modbus:
using Microsoft.Extensions.Logging;
using Modbus.Net;
using Modbus.Net.Modbus;

///
/// Modbus using Modbus.Net
///
internal class ModbusClient
{
public ModbusClient(string ip, byte id, List addressConfig)
{
// init machine object with address-unit config
_machine = new ModbusMachine(id, ModbusType.Tcp, ip, addressConfig, true, id, 0, 2);
}

///
/// Modbus.Net Machine
///
private IMachineProperty _machine;

///
/// Poll configured addresses.
///
/// Collection of
/// Poll failed.
public async Task PollReturnUnits()
{
//Get data from machine
var result = await _machine.GetMachineMethods().GetDatasAsync(MachineDataType.CommunicationTag);

//Error handling
if (result.Datas is null || !result.IsSuccess)
{
throw new IOException($"code:{result.ErrorCode}, msg:{result.ErrorMsg}");
}
//Return AdressUnits
return result.Datas.Values;
}
}
< /code>
Изменить: < /p>
-please Не полагайтесь на документацию пакета, поскольку он устарел. Загрузите пакет и вставьте мой код в просмотр.
- Он возвращает «returnStruct» со свойствами (которые частично имеют неправильное множественное число): данные, успех, ошибка, ошибка, ошибка.

Подробнее здесь: https://stackoverflow.com/questions/793 ... y-6th-poll
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»