2015-03-13 2 views
0

Я хочу установить двухстороннюю связь между ПК и S7-PLC. До сих пор я был успешным установка этой односторонняя с использованием драйвера с открытым исходным кодом здесь: https://github.com/killnine/s7netplusC# TCP-соединение с Siemens S7 PLC - Network Newbie

Этот драйвер позволяет мне сказать ПК для извлечения данных из ПЛК, а также записывать данные , Но проблема в том, что я хочу настроить событие onChanged для конкретных данных ПЛК, и единственный способ повысить эффективность, то есть частоту опроса данных ПЛК, пока я не заметил, что он изменился.

Я бы хотел, чтобы он был более прерывистым, поэтому ПЛК посылает сигнал на ПК асинхронно, когда его данные изменились, что позволяет быстрее реагировать и меньше сетевого трафика.

Итак, я нашел Siemens Open Communication Wizard, чтобы в основном настроить соединение на стороне ПЛК, на которое можно ссылаться в коде ПЛК. Я имею установку соединения поэтому ПЛК пассивен и ищет порт 2000:

enter image description here

Теперь на моей стороне 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?

ответ

2

Я знаю, что это старая нить, но теперь есть лучший инструмент, чем s7netplus.

Посмотрите: Snap7 - Step7 Ethernet Communication Suite

Отлично LGPL3 инструмент Давиде Nardella.

Обзор

Snap7 является открытым исходным кодом, 32/64 бит, мультиплатформенный Ethernet люкс связи для взаимодействия изначально с Siemens S7 PLC. Кроме того, частично поддерживаются новые процессоры 1200/1500, старый S7200, небольшие LOGO 0BA7/0BA8 и Приводы SINAMICS.

Хотя он был разработан для преодоления ограничений OPC серверов при передаче больших объемов данных высоких скорости в промышленных объектах, это хорошо масштабируется до небольшой основы Linux руки или MIPS плата, таких как малина PI, BeagleBone Black , pcDuino, CubieBoard, UDOO и ARDUINO YUN.

Три специализированных компонента, клиент, сервер и партнер, позволяют окончательно интегрировать системы на базе ПК в автоматизацию ПЛК цепь.

+0

Я заглянул в Snap7 некоторое время назад, настройка «Партнер» показалась мне именно такой, какой мне нужно. Но я не мог понять код, я бы хотел, чтобы у них была еще какая-то документация или даже ясный пример того, как использовать Partner. –

+0

Взгляните на сайт; у вас отличный документ и примеры.Также используйте Wiki; Давиде всегда готов помочь и дать совет каждому сообщению в вики. –