Я хочу установить двухстороннюю связь между ПК и S7-PLC. До сих пор я был успешным установка этой односторонняя с использованием драйвера с открытым исходным кодом здесь: https://github.com/killnine/s7netplusC# TCP-соединение с Siemens S7 PLC - Network Newbie
Этот драйвер позволяет мне сказать ПК для извлечения данных из ПЛК, а также записывать данные , Но проблема в том, что я хочу настроить событие onChanged для конкретных данных ПЛК, и единственный способ повысить эффективность, то есть частоту опроса данных ПЛК, пока я не заметил, что он изменился.
Я бы хотел, чтобы он был более прерывистым, поэтому ПЛК посылает сигнал на ПК асинхронно, когда его данные изменились, что позволяет быстрее реагировать и меньше сетевого трафика.
Итак, я нашел Siemens Open Communication Wizard, чтобы в основном настроить соединение на стороне ПЛК, на которое можно ссылаться в коде ПЛК. Я имею установку соединения поэтому ПЛК пассивен и ищет порт 2000:
Теперь на моей стороне C#, как бы я установить соединение, используя только сокет?
// open the channel
_mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_mSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);
_mSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);
IPEndPoint server = new IPEndPoint(IPAddress.Parse(IP), 2000);
_mSocket.Connect(server);
Я действительно новичок в netowrking. Если ПК является активным партнером, и я устанавливаю соединение, я хочу, чтобы асинхронно мог принимать данные из ПЛК, , если я установил сокет.BeginRecieve() где-нибудь, могу ли я все еще активно усваивать через сокет с ПК-> ПЛК или он застрял в ожидании в BeginRecieve?
Я заглянул в Snap7 некоторое время назад, настройка «Партнер» показалась мне именно такой, какой мне нужно. Но я не мог понять код, я бы хотел, чтобы у них была еще какая-то документация или даже ясный пример того, как использовать Partner. –
Взгляните на сайт; у вас отличный документ и примеры.Также используйте Wiki; Давиде всегда готов помочь и дать совет каждому сообщению в вики. –