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


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