Подключение NX-EIC202 к NX1P

Модуль NX-EIC202 от японской Омрон предназначен для работы с контроллерами серий NX1P и NJ. У него есть много разных название - Ethernet/IP Coupler, интерфейсный модель и устройства удалённого ввода/вывода.

Cуть в другом. Часто бывает необходимо собрать какие-то сигналы, находящиеся на удалении места установки контроллера. По инженерным или техническим причинам часто нецелесообразно тащить целый пучок проводов. Именно для этих целей и существуют устройства удалённого ввода/вывода. Они позволяют удалённо реализовать набор вводов/выводов через различные протоколы. Если с NX-ECC202 и NX-ECC203 всё понятно (они работают поверх EtherCAT), то NX-EIC202 уже работает через Ethernet/IP. Фактически это означает невозможность автоматической настройки. Приступим же ручной настройке.

Подключаем наш контроллер (сейчас это NX1P2-9024DT1, но не так принципиально) в обычную проводную сеть. Туда же подключаем NX-EIC202. По-умолчанию у него IP-адрес 192.168.250.1 как и у контроллера. Если актуально, то самым простым решением является выбор последний цифры адреса с помощью регуляторов на "мордочке". Поставим, например, 2 чтобы получить 192.168.250.2

Подключаемся к NX-EIC202 через обычный кабель Micro USB и включаем Sysmac Studio. В новом проекте наверху выбираем Insert -> Slave Terminal -> Ethernet/IP Coupler. Переключаем в режим Online путём правого клика на названии и Coupler Connection (USB) -> Online.

Настраиваем набор модулей NX на устройстве. Самое простое - правой клавишей на иконке и Compare and Merge with Actual Unit Configuration. Если не получается, то убедитесь что находитесь в режиме Online.

Нужный пункт Compare and Merge with Actual Unit Configuration в самом низу

Далее начинается самое интересное. Каждый из установленных модулей NX описывает своё состояние каким-то количеством битов. Например, это NX-ID3417 модуль с 4 входами, то каждый вход - это один бит, который либо включен, либо выключен. Но, единства и простоты ради, на каждый NX модуль приходится не менее 16 битов. В нашем примере у входа может быть всего 4 входов. Тогда оставшиеся 12 битов просто не будут использоваться.

Но что делать если мы имеем дело с модулем аналоговых входов как NX-AD3203? Там же нет битов. Там каждое значение описывается целым числом, состоящим из 16 битов. То есть на каждый вход приходится по 16 битов. В NX-AD3203 таких входов 4. Значит это 64 бита или 8 байтов.

Можно и проще. Кликаем на иконку NX-EIC202 и справа выбираем Edit I/O Allocation Settings. В открывшемся окне смотрим наверх где указанно количество байтов на входа и количество байтов на выхода. Запоминаем.

На всякий случай, правый клик на иконку устройства и Coupler Connection (USB) -> Transfer to Coupler для обновления настроек устройства.

В меню контроллера заходим в Programming -> Data -> Global Variables и создаём две переменные. Первая, назовём её EIC_Inputs, с полем Network Publish равным Input и с типом ARRAY[0..n] OF BOOL, где n - найденная выше длина в битах. Вторая, назовём её EIC_Outputs, с полем Network Publish равным Output и с типом ARRAY[0..n] OF BOOL, где n - найденная выше длина в битах. На всякий случай, 8 бит равно одному байту или 16 бит равно одной целому число UINT/INT. Поэтому типо массива можно менять.

Выше мы сделали следующее. Задали как поток битов из NX-EIC202 будет накладываться на переменные в NX1P. Самое просто - массив битов. Этого, если работаем с дискретными вводами/выводами, может быть и достаточно.

Далее, в верхнем меню выбираем Tools -> EtherNet/IP Connection Settings. В открывшемся окне выбираем наш контроллер, правый клик и Edit. Открывается окно, мы начинаем с первой вкладки - Tag Set. Повторюсь, данные из NX-EIC202 идут массивом и нам надо описать этот массив.

Начнём с вводов. Нажимаем Create New Tag Set и создаём один такой поток. Уже внутри него нажимаем Create New Tag и выбираем нашу глобальную переменную, созданную выше. Они должны совпадать по длине. Если же мы хотим разбить такой поток сразу же на несколько переменных, тогда нажимаем Create New Tag ещё раз и выбираем другую переменную. Опять-таки, длина этих тэгов должна соответствовать общей длине. Если что-то неправильно, то поле будет светиться красным цветом. Аналогично делаем для вывод