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

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


Вводный текст

Управление состояниями станка и количеством деталей с помощью 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. Part Count (int) - сигнал от разрывной балки, указывающий на завершение изготовления детали.

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

Вы также можете задать тип машины (Machine Type), если планируете использовать датчик тока для изменения таких параметров, как состояние машины, или выполнять какие-либо подсчеты на основе выходов датчика. Если это представляет интерес, обратитесь к разделу " Как настроить типы машин ".

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 Machine Attribute: Среднеквадратичный ток
    • Назначение: Передача полезной нагрузки (partCount) в Tulip через API.

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

  1. Is Current > 100mA?

    • Назначение: Проверяет, превышает ли значение тока 100 мА.
    • Состояние = ON
    • Назначение: Установить полезную нагрузку в состояние ON, если ток больше 100 мА.
    • Состояние = ВЫКЛ
    • Цель: Установить полезную нагрузку в состояние OFF, если ток меньше или равен 100 мА.
    • Атрибут Tulip Machine: Состояние
    • Назначение: Отправить полезную нагрузку (состояние) в 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, вы сможете увидеть ответы и соответствующие коды состояния от API Tulip.

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

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

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

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

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

  1. Мониторный вывод

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

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

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

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

    • Тип узла: Switch .

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

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

    • Тип узла: Change .

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

      • Правила:

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

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

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

      • Device Info* - {"attributeId":"", "machineId":""}.
      • Источник атрибута - msg.payload

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

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

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

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

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

      • Analog Config - Differential ADC RMS @ 1kHZ.

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

    • Тип узла: Switch .

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

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

      • Правила:

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

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

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

      • Правила:

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

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

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

      • Правила:

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

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

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

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

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

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

      • Device Info* - {"attributeId":"", "machineId":""}.
      • Источник атрибута - msg.data[0]

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

  1. Is Current > 100mA?

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

    • Тип узла: Switch .

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

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

      • Правила:

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

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

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

      • Правила:

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

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

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

      • Правила:

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

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

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

      • Device Info* - {"attributeId":"", "machineId":""}.
      • Источник атрибута - msg.payload

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

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


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

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


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