Здравствуйте!
Есть библиотека NModbus - реализация протокола для использования в CLR. Я намерен использовать её для связи ПК и ПЛК160. В принципе, она работает, но по неведомой мне причине если в течение 12 секунд не передавать данные, а потом попытаться это сделать, то вылетает исключение "The operation is not allowed on non-connected sockets". Если же поддерживать активность - периодически передавать или принимать Modbus-данные - всё работает нормально. На ПЛК настроен стандартный Modbus TCP Slave.
Подскажите пожалуйста, где вероятнее всего разрывается соединения при "длительном" простое - на ПЛК или в этой библиотеке?
Здорово упрощённый, но воспроизводящий ошибку код:
Код:
static void Main(string[] args)
{
var client = new TcpClient("192.168.0.18", 502);
var master = ModbusIpMaster.CreateIp(client);
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
while (true)
{
master.WriteSingleRegister(0, 0);
Console.ReadKey(); // Ждём 12 секунд и получаем ошибку в очередном цикле
}
}
Спасибо.