Использую пример на базе этой библиотеки:
http://www.codeproject.com/Tips/16260/Modbus-TCP-class
ПЛК110-32. Конфиг такой:
Код, осуществляющий подключение:
ip == "192.168.0.101"Код:public void connect(string ip, ushort port) { try { IPAddress _ip; if (IPAddress.TryParse(ip, out _ip) == false) { IPHostEntry hst = Dns.GetHostEntry(ip); ip = hst.AddressList[0].ToString(); } // ---------------------------------------------------------------- // Connect asynchronous client tcpAsyCl = new Socket(IPAddress.Parse(ip).AddressFamily, SocketType.Stream, ProtocolType.Tcp); tcpAsyCl.Connect(new IPEndPoint(IPAddress.Parse(ip), port)); tcpAsyCl.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, _timeout); tcpAsyCl.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, _timeout); tcpAsyCl.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, 1); // ---------------------------------------------------------------- // Connect synchronous client tcpSynCl = new Socket(IPAddress.Parse(ip).AddressFamily, SocketType.Stream, ProtocolType.Tcp); tcpSynCl.Connect(new IPEndPoint(IPAddress.Parse(ip), port)); tcpSynCl.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, _timeout); tcpSynCl.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, _timeout); tcpSynCl.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, 1); _connected = true; } catch (System.IO.IOException error) { _connected = false; throw (error); } }
port == 502
_timeout == 500
при исполнении выскакивает исключение на попытке установить синхронное соединение. Тут:
Предупреждая дополнительные распросы, контролер сконфигурирован правильно. По указанному ip пингуется, TCP-подключение из CDS устанавливается, видимых причин для неправильной работы нет.Код:tcpSynCl = new Socket(IPAddress.Parse(ip).AddressFamily, SocketType.Stream, ProtocolType.Tcp);
Вопрос: В чем может быть причина? В реализации библиотеки? Или в самом контролере?





Ответить с цитированием