Управление состояниями машины и количеством деталей с помощью Edge IO и Node-RED
  • 20 Dec 2022
  • 7 Минуты для чтения
  • Авторы

Управление состояниями машины и количеством деталей с помощью Edge IO и Node-RED


Article Summary

Управление состояниями станка и количеством деталей с помощью Edge IO и Node-RED

Узнайте, как использовать поток Node-RED для контроля состояния станка с помощью Edge IO.

В этой статье рассматривается рабочий процесс подключения датчика луча излома и датчика тока к Edge IO для управления состоянием и подсчета деталей в Tulip. Для этого используется поток библиотеки Tulip Node-RED, который может быть импортирован на граничное устройство клиента.

К концу этой статьи у вас будет следующий поток в Node-RED для отправки данных с подключенных датчиков на машину в Tulip.

Вам нужно будет выполнить следующие шаги:

  1. Настройка оборудования: Подключение пограничного входа-выхода
  2. Настройка машины: Создание машины в Tulip
  3. Установка Node-RED: Импорт, редактирование и развертывание потока Node-RED из библиотеки Tulip.

Что вам понадобится

  • Edge IO, зарегистрированный в вашей учетной записи Tulip.

  • Датчик тока: CR3111-3000 или другой аналогичный трансформатор тока

    • резистор нагрузки правильного размера для трансформатора тока, рекомендуется 100 Ом для CR3111-3000 (см. раздел "Настройка оборудования" для определения размеров).
    • Разрывная балка
    • 3,5 мм плоская отвертка

1. Настройка оборудования - подключение краевого входа/выхода

Этот рабочий процесс предполагает, что вы будете использовать трансформатор тока и разрывную балку, подключенные к Edge IO.

Расчет размера резистора нагрузки: При использовании CR3111-3000 рекомендуется использовать резистор 100 Ом. Если используется другой токовый клещ, вы можете рассчитать максимально допустимый размер резистора(R_burden) исходя из эффективного отношения витков(T_e) и максимального измеряемого тока(I_max) следующим образом: R_burden = 3,12 * T_e / I_max. Ваш резистор может быть меньше, чем максимально допустимый размер резистора; это уменьшит разрешение датчика.

Подключите токовые клещи (CR3111-3000) и разрывной луч к Edge IO следующим образом:

  • Токовый клещ

    • Измерение переменного тока через кабель питания в вашей машине
    • Подключите резистор между двумя проводами токового зажима, как показано на рисунке.
    • Присоедините один провод к клемме [+] дифференциального АЦП и один провод к клемме [-] дифференциального АЦП.
    • Разрывной луч
    • Захват создания детали
    • Подсоедините коричневый провод (+24 В) к клемме +24 В на АЦП SAR.
    • Подсоедините синий провод (gnd) к клемме заземления банка цифровых входов
    • Подключите черный провод (out) к выводу 1 блока цифровых входов.

Кроме того, убедитесь, что вы подали питание на устройство и подключили его к сети, подключив кабель ethernet к порту WAN.

2. Настройка машины - создание машины в Tulip

Чтобы отправить данные с разрывной балки и датчика тока в Tulip, давайте сначала создадим машину, используя API Tulip в качестве источника данных. Подробный обзор см. в разделе Настройка новой машины статьи Как использовать API атрибутов машины.

В этом примере мы создали машину с двумя атрибутами:

  1. Current (float) - представляет ток, возвращаемый датчиком.
  2. Количество деталей (int) - сигнал от разрывной балки, указывающий на завершение изготовления детали.

Вы захотите записать значения attributeId и machineId для передачи в поток Node-RED.

Вы также можете настроить тип машины, чтобы присвоить его машине, если вы планируете использовать датчик тока для изменения таких аспектов, как состояние машины, или выполнять какие-либо подсчеты на основе выходов датчика. Обратитесь к разделу Как настроить типы машин, если это представляет интерес.

3. Настройка Node-RED

Откройте портал Edge Device Portal на Edge IO, подключенном к разрывной балке и датчикам тока. Запустите редактор Node-RED, используя следующие учетные данные:

  • Имя пользователя: admin
  • Пароль: пароль вашего Edge IO

Смотрите дополнительную информацию здесь, чтобы начать работу с Node-RED на Edge IO.

3a. Импорт потока библиотеки

Чтобы импортировать поток библиотеки, выполните шаги, описанные в документе Импортирование потоков Tulip Node-RED. Поток для импорта - machine_visibility.json, а импорт создает в редакторе вкладку Machine Visibility with Current Clamp and Breakbeam.

3b. Обзор потока

Этот поток состоит из двух отдельных рабочих потоков:

Счетчик деталей

Первый поток - это мониторинг количества деталей с помощью датчика траверсы. Этот поток состоит из четырех функциональных узлов:

  1. Monitor Pin

    • Назначение: Определить вывод(ы) GPIO на Edge IO для мониторинга через свойство enabled pin.
    • Фильтр для pinUp
    • Цель: Из полезной нагрузки сообщения определить, истинно ли событие на контролируемом выводе (выводах).
    • Increment Part Count
    • Цель: Увеличить количество частей переменной потока при истинном событии на выводе.
    • Атрибут машины Tulip Machine: Part Count
    • Назначение: Отправить полезную нагрузку (partCount) в Tulip через API.

Мониторинг среднеквадратичного тока

Второй путь - это мониторинг датчика тока, подключенного к входу АЦП (аналого-цифрового преобразователя). Этот поток состоит из шести функциональных узлов.

  1. Дифференциальные показания АЦП

    • Назначение: Назначение профиля аналоговой конфигурации на вход АЦП.
    • Фильтр 1/5 показаний
    • Цель: Извлечение каждого пятого измерения (5 секунд) для передачи в Tulip.
    • Передать сообщение
    • Цель: Сбросить счетчик показаний для каждого пятого сообщения до нуля.
    • Сбросить сообщение и инкремент
    • Цель: Для всех остальных показаний увеличить счетчик показаний на 1.
    • Масштабирование CR-3111
    • Назначение: Масштабирование измерения датчика в соответствии со спецификациями производителя.
    • Атрибут машины Tulip: Среднеквадратичный ток
    • Назначение: Отправка полезной нагрузки (partCount) в Tulip через API.

Есть также четыре дополнительных узла, которые по умолчанию отключены, но могут быть включены, чтобы состояние машины определялось Node-RED. Обратите внимание, что для выполнения этой же логики в Tulip можно использовать машинные триггеры.

  1. Ток > 100 мА?

    • Назначение: Проверьте, превышает ли значение тока 100 мА.
    • Состояние = ВКЛ
    • Цель: Установить полезную нагрузку в ON, если ток больше 100 мА.
    • Состояние = ВЫКЛ
    • Цель: Установить полезную нагрузку в положение OFF, если ток меньше или равен 100 мА.
    • Атрибут машины "Тюльпан": Состояние
    • Назначение: Отправить полезную нагрузку (состояние) в Tulip через API.

3c. Редактирование потока

Чтобы завершить настройку этого потока, информация об устройстве для атрибута Tulip Machine Attribute: Part Count и Tulip Machine Attribute: RMS Current узлы должны быть включены с полями attributeId и machineIdfиз машины, настроенной ранее.

В зависимости от используемого датчика можно дополнительно отредактировать узел CR-3111 Scaling, чтобы отразить коэффициент трансформации трансформатора тока.

3d. Развертывание потока

Когда поток Node-RED создан и необходимые параметры добавлены, можно развернуть поток и начать просматривать данные, поступающие в Tulip от разрывной балки и датчиков тока.

Выбрав опцию Debug message в правой части редактора Node-RED Editor, вы сможете увидеть ответы и соответствующие коды состояния от API Tulip.

Чтобы получить более подробную информацию о кодах состояния, перейдите к документации API в вашем экземпляре Tulip (т.е. .tulip.co/apidocs). В частности, обратитесь к документации по конечной точке POST /attributes/report.

Теперь вы сможете увидеть данные и в Tulip, перейдя на вкладку конфигурации машины.

Технические детали потока Node-RED

Ниже приведена подробная информация об узлах и их параметрах конфигурации по умолчанию, импортированных с файлом machine_visibility.json.

Часть Счетчик

  1. Контакт монитора

    • Назначение: Определите вывод(ы) GPIO на Edge IO для мониторинга через свойство включенного вывода.

    • Тип узла: Цифровой вход

    • Свойства по умолчанию:

      • Режим работы - Непрерывный
      • Частота обновления - 1 секунда
      • Включенные контакты - 1
      • Фильтр для pinUp
    • Назначение: Из полезной нагрузки сообщения определить, истинно ли событие на контролируемом выводе (выводах).

    • Тип узла: Коммутатор

    • Свойства по умолчанию:

      • Свойство - msg.payload
      • Правила - истинно
      • Increment Part Count
    • Назначение: Увеличивает количество частей переменной потока при событии pin true.

    • Тип узла: Изменить

    • Свойства по умолчанию:

      • Правила:

        • Установить flow.partCount в выражение $flowContext('partCount') + 1
        • Установить msg.payload в значение flow.partCount
        • Атрибут машины Tulip Machine: Part Count
    • Назначение: Отправить полезную нагрузку (partCount) в Tulip через API.

    • Тип узла: Машинный атрибут

    • Свойства по умолчанию:

      • Информация об устройстве* - {"attributeId":"", "machineId":""}.
      • Источник атрибута - msg.payload

Монитор среднеквадратичного тока

  1. Дифференциальные показания АЦП

    • Назначение: Присвоить аналоговый профиль конфигурации входу АЦП.

    • Тип узла: Высокоскоростной аналоговый

    • Свойства по умолчанию:

      • Analog Config - Differential ADC RMS @ 1kHZ

        • Выберите АЦП для конфигурирования - дифференциальный АЦП
        • Включенные выходы - RMS
        • Размер буфера - 1000
        • Частота дискретизации (Гц) - 1000+ Тип данных - RMS+ Режим вывода - Непрерывный+ Частота обновления (секунды) - 1
        • Фильтр 1/5 показаний
    • Назначение: Извлечение каждого пятого измерения (5 секунд) для передачи в Tulip.

    • Тип узла: Коммутатор

    • Свойства по умолчанию:

      • Свойство - flow.numReadings

      • Правила:

        • == 4
        • иначе
        • Передать сообщение
    • Назначение: Сбросить счетчик показаний для каждого пятого сообщения до нуля.

    • Тип узла: Изменить

    • Свойства по умолчанию:

      • Правила:

        • Установить flow.numReadings на 0.
        • Отбросить сообщение и увеличить
    • Назначение: Для всех остальных показаний увеличить количество показаний на 1.

    • Тип узла: Изменить

    • Свойства по умолчанию:

      • Правила:

        • Установить flow.numReadings в выражение $flowContext('numReadings') + 1
        • CR-3111 Масштабирование
    • Назначение: Масштабирование измерения датчика в соответствии со спецификациями производителя.

    • Тип узла: Шаблон подпотока

    • Свойства по умолчанию:

      • Свойство - данные
      • Масштаб* - 3000
      • Смещение - 0
      • Атрибут машины Tulip Machine: Среднеквадратичный ток
    • Назначение: Отправить полезную нагрузку (partCount) в Tulip через API.

    • Тип узла: Машинный атрибут

    • Свойства по умолчанию:

      • Информация об устройстве* - {"attributeId":"", "machineId":""}.
      • Источник атрибута - msg.data[0]

Подпоток для вычисления состояния машины

  1. Is Current > 100mA?

    • Назначение: Проверьте, превышает ли значение тока 100 мА.

    • Тип узла: Переключатель

    • Свойства по умолчанию:

      • Свойство - msg.data[0]

      • Правила:

        • > 0.1
        • иначе
        • Состояние = ВКЛ
    • Назначение: Установить полезную нагрузку в состояние ON, если ток больше 100 мА.

    • Тип узла: Изменить

    • Свойства по умолчанию:

      • Правила:

        • Установить msg.payload в ON
        • Состояние = ВЫКЛ
    • Назначение: Установить полезную нагрузку в состояние OFF, если ток меньше или равен 100 мА.

    • Тип узла: Изменить

    • Свойства по умолчанию:

      • Правила:

        • Установить msg.payload в OFF
        • Атрибут машины Tulip Machine: Состояние
    • Назначение: Отправка полезной нагрузки (состояния) в Tulip через API.

    • Тип узла: Машинный атрибут

    • Свойства по умолчанию:

      • Информация об устройстве* - {"attributeId":"", "machineId":""}.
      • Источник атрибута - msg.payload

* Параметры должны быть обновлены, чтобы поток работал должным образом. Значение шкалы датчика тока должно быть изменено в соответствии с рекомендациями производителя.

Дополнительное чтение


Вы нашли то, что искали?

Вы также можете зайти на community.tulip.co, чтобы задать свой вопрос или узнать, сталкивались ли другие с подобным вопросом!


Была ли эта статья полезной?