2016-03-02 12 views
2

У меня есть удаленное устройство ввода-вывода (EIP-2017) с 8 аналоговыми входами и оно реализует протокол EtherNet/IP для чтения значений ввода-вывода. Я нашел на codeplex (https://eipnet.codeplex.com/) библиотеку, написанную на .net C#, но у нее нет документации или примера ее использования.EtherNet/IP (промышленный протокол) Библиотека .NET

Итак, это цель (I/O удаленного устройство) Документация:

Мы предлагаем пользователь с помощью неявного сообщения общаться с EIP-2000. Неявные сообщения применяются только для доступа к входному экземпляру 65 hex (101) и выходному экземпляру 66 (102) объекта сборки в объектной модели . Прежде чем использовать Неявные сообщения, вы должны использовать службу Open Forward с правильными настройками «Идентификатор экземпляра» и «Длина данных» Объект диспетчера подключений для построения соединения между сканером EtherNet/IP и EIP-2000. Впоследствии может использоваться Неявное сообщение . «Идентификатор экземпляра» модулей EIP-2000 показан ниже, , но «Длина данных» отличается от модулей.

Это устройство имеет следующие,
Input (Т-> О) Идентификатор экземпляра: 0x65, длина: 53 байта Выход (О-> T), ИД экземпляра: 0x66, длина: 22 байта Конфигурация экземпляра ID: 0x64, длина: 0 байт

и я написал эти строки кода:

static void Main(string[] args) 
     { 
      byte[] sc = new byte[8] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; 
      byte[] path = new byte[] { 0x20, 0x04, 0x24, 0x64, 0x2C, 0x66, 0x2C, 0x65 }; 

      SessionInfo si = SessionManager.CreateAndRegister("192.168.2.227", senderContext: sc); 
      si.SetConnectionParameters(101, 3000, 101, 803, 888); 

      EIPNET.ConnectionManager.ForwardOpen(si, path); 

      bool CIPok = EIPNET.EIP.SessionManager.VerifyCIP(si); 

      EIPNET.EIP.EncapsPacket p = new EncapsPacket(); 
      p.Command = (ushort)EncapsCommand.ListIdentity; 
      p.SessionHandle = si.SessionHandle; 
      p.SenderContext = sc; 
      p.Length = 0; 
      //p.EncapsData = new byte[53]; 
      byte[] rec = si.SendData_WaitReply(p.Pack()); 
} 

Я регистрирующий сессию, а затем открытое соединение с командой вперед Open, а затем ... ничего ...

Любая информация, как продолжить, была бы весьма признательна. Спасибо!

+0

Если кому-то нужно что-то подобное, это библиотека здесь: https://eipnet.codeplex.com/ –

+1

и все остальное написано здесь http://read.pudn.com/downloads166/ebook/763212/EIP- CIP-V2-1.0.pdf и здесь https://www.odva.org/Portals/0/Library/Publications_Numbered/PUB00213R0_EtherNetIP_Developers_Guide.pdf –

+0

Посмотрите на вопрос: http://stackoverflow.com/questions/31461069/read-write -values-using-ethernet-ip – JPelletier

ответ

1

Вы подключены к ПЛК/CompactLogix или к любому устройству, подключенному через Ethernet/IP? Кроме того, Implicit Messaging (UDP) следует использовать только для критических задач. Если вы только читаете регистры из таблицы данных в устройстве, вы должны использовать Явные сообщения (TCP/IP).