Подключение E8PC к NX-ILM400 через IO-link

Набирающий популярность протокол IO-Link постепенно набирает популярность и проникает в обычные датчики. Казалось бы обычный датчик давления - что можно придумать? Японская Omron выпустила серию E8PC, которая объединяет в себе и датчик давления, и датчик температуры. Работает всё это счастье через IO-Link.

Что такое и зачем нам IO-Link?

Все уже давно привыкли к протоколам Modbus и ему подобным. Обычно через него подключаются серьёзные устройства, но не сами датчики. Протокол IO-Link же специально разработан для работы с датчиками и им подобными исполнительными устройствами.

На примере нашего датчика E8PC, с помощью IO-Link мы можем получать значения текущего давления и температуры. Вы скажете что это можно делать с помощью обычного аналогово сигнала. Можно, но для этого надо и по 2-3 провода на каждый сигнал, и потом разобрать его аналоговое значение.

Работа через протокол IO-Link обеспечивает передачу по 3-4 проводам  уже нормализованных значений давления и температуры, а также сервисную информацию как статус, наличие ошибок и используемые единицы:

Структура данных в CX-ConfiguratorFDT

Подключение IO-Link

Подключение всех конечных устройств по протоколу IO-Link в вышестоящий контроллер осуществляется через Master/Coupler. В данном случае мы выбрали NX-ILM400, который удобно монтируется на NX-BUS в NX1P2.

Чтобы не долго маяться с разводкой разъёма, мы подключаемся через кабель серии XS2F. Чтобы разобраться с распиновкой сигналов по цветам жил, надо обратиться в спецификация к серии кабелей (скачать). Там мы находим следующую информативную картинку:

Сравнив со спецификацией на NX-ILM400, подключаем следующим образом в первый порт NX-ILM400. Черный в первый контакт, белый во второй контакт, коричневый в третий контакт и синий в четвёртый контакт.

Настройка в Sysmac

IO-Link почти также удобен как и EtherCAT, но с одной маленькой оговоркой. Надо ручкам выбрать размерность передаваемых данных и потом их разобрать в переменные. На фото вначале статьи видна структура передаваемых данных.

В Sysmac сначала требуется провести стандартную процедуру по настройке модуля NX-ILM400. Для этого на CPU Rack просто нажимаем Compare and Merge with Actual Unit Configuration.

По появившемся NX-ILM400 нажимаем Edit Unit Operation Settings и в новом окне жмём Transfer from Unit. Вроде бы всё хорошо и синхронизируемся с контроллером. У нас мастер IO-Link висит прямо на CPU Rack - можно физически не перевключать питание.

Всё бы хорошо, но после всех манипуляций мы видим Port1 Device IO Size Error. Неожиданно, но вернёмся в Edit Unit Operation Settings и найдём вот это поле. Его значение совпадает со структурой передаваемых данных, описанной выше.

 
Отсюда берём значение

Если же внимательно присмотреться, то мы имеем дело с Device Information Area. Нам же надо перенести ручками это значение в Device Configuration Data. 

Вот сюда переносим значение

Настройка переменных

Вышли на финишную прямую. Использую уже знакомую таблицу структуры данных или иначе, надо обработать данные из E8PC для работы внутри программы контроллера. Для этого в I/O Map находим нужные значения и задаём переменные.

Пример задания переменных

Если не отвлекаться на формат передачи данных в IO-Link, то мы просто имеем дело массивами по 2 байта каждый. Рассмотрим на примере температуры.

Значение температуры 27.9 передаётся как 279 или ^10. Один байт - это 2**8 или 256. Таким образом нам нужен второй байт. На самом деле, значение типа Integer в Sysmac равно 2**16 или 65 536. Таким образом, можно использовать следующую формулу (обратите внимание на разницу в единицы - 255 или 256).

Пример преобразования ARRAY[0..1] OF BYTE в температуру типа Integer

Всё работает. В итоге, очень даже удобно. Если же Вы хотите сделать ещё удобнее и использовать тип Double, то это уже другая, несложная история.