Перейти к содержанию
+7 (800) 234-36-06 IT.encode@encode.one
Скачать в PDF

Основной функционал программы каждой зоны

Подключение к ПЛК из ETL

Для взаимодействия с ПЛК нужно настроить подключение в ETL. Т.к. 2 зоны, то в ETL нужно завести 2 устройства, если используется 2 зоны, если одна, то одно устройство:

  • Зона 1:
    • для записи значений переменных из рецептурных карт ETL: порт OPC UA 4840
    • для получения решений по отбраковке, а так же обработке команд: порт TCP 5001
  • Зона 2:
    • для записи значений переменных из рецептурных карт ETL: порт OPC UA 4840
    • для получения решений по отбраковке, а так же обработке команд: порт TCP 5003

Настройки в рецептурных картах

Переменная ПЛК Описание
isStartedProgram Отвечает за запуск и остановку алгоритма программы
Запустить алгоритм – true, остановить алгоритм – false
Если значение false, при этом нужные переменные будут указаны, основной функционал работать не будет
При установке значения в false сбрасываются все остальные значения переменных, а так же внутренние счётчики программы
invertInputDI По умолчанию, сигналы датчиков считываются на включение (по переднему фронту), то есть при значении false, если нужно считывать сигналы датчиков на отключение (по заднему фронту), нужно установить значение true
debounceProductSensor Время устранения дребезга датчика продукта для камеры, мс
debounceProductSensorByEncoder Включить устранение дребезга датчика продукта для камеры по энкодеру
distanceOfDebounceProductSensor Дистанция устранения дребезга датчика продукта, мм
isUsedTimer Режим работы по таймеру
delayForTriggerCam При режиме работы по таймеру. Задержка срабатывания камеры после срабатывания датчика продукта, мс
Время движения продукта от датчика к камере
delayForDecisionMaking При режиме работы по таймеру. Время движения продукта по линии от датчика продукта до отбраковщика, мс
isUsedEncoder Режим работы по энкодеру (если используется энкодер)
diameterOfEncoderWheel Диаметр ролика энкодера, мм
Значение указывается, если выбран режим работы по энкодеру
encoderPulsesPerCycle Количество импульсов на оборот
Значение указывается, если выбран режим работы по энкодеру
lengthToTriggerCam При режиме работы по энкодеру. Расстояние от датчика продукта до камеры, мм
Расстояние, которое проходит продукт от датчика к камере
lengthToDecisionMaking При режиме работы по энкодеру. Расстояние от датчика продукта до отбраковщика, мм
Расстояние, которое проходит продукт от датчика к отбраковщику
durationTriggerCam Длительность сигнала, подаваемого на камеру, мс
cameraIpAddress IP адрес камеры
cameraPort Порт камеры
maxTimeUpperSensor При режиме работы по таймеру. Время, в течение которого датчик продукта может подавать сигнал. Если датчик продолжает подавать сигнал, считается, что датчик "залип"
maxLengthUpperSensor При режиме работы по энкодеру. Расстояние, на протяжении которого датчик продукта может подавать сигнал. Если датчик продолжает подавать сигнал, считается, что датчик "залип"
durationForFillPusher Длительность сигнала, подаваемого на отбраковщик, время заполнения цилиндра отбраковщика, мс
stopLineMode Инвертирует работу выхода ПЛК B3

Принцип алгоритма основного функционала каждой зоны

Принцип работы алгоритма программы каждой зоны основан на очереди: первый вошёл, первый вышел. ПЛК в памяти держит очередь продуктов. Продуктом в программе ПЛК считается структура, имеющая поле, куда записывается код продукта. Для этого ПЛК необходимо подключение к камере.

Очередь наполняется по сигналу от датчика продукта для камеры. При получении сигнала от этого датчика, ПЛК записывает временную метку или позицию по энкодеру, запись того или иного значения зависит от режима работы. На основе этих данных и значений соответствующих переменных, доступных по OPC UA, производится расчёт момента подачи сигнала на внешнее оборудование (камера, отбраковщик, сигнальная колонна, сортировщик).

Продукт выходит из очереди, когда оказывается на месте принятия решения. Место принятия решения – место, где расположен отбраковщик, здесь продукт либо пропускается, либо отбраковывается. Расчёт этого места в ПЛК происходит на основе значений переменных, доступных по OPC UA, и временной метки или позиции по энкодеру, расчёт по тем или иным значениям зависит от режима работы.

Режим работы определяется наличием энкодера и установкой значений соответствующих переменных:

  • работа по таймеру (по временным меткам)
  • работа по энкодеру (если используется энкодер)

Алгоритм программы ПЛК можно представить в виде следующей принципиальной схемы.

main_algorithm_1

Принцип устранения дребезга датчика продукта

После получения сигнала от датчика продукта ПЛК запускает таймер на время, в течение которого ПЛК игнорирует последующие сигналы, или отсчёт расстояния (это для датчика продукта для камеры, если установлены соответствующие настройки).

Устранение дребезга поддерживается для следующих датчиков:

  • датчик продукта для камеры
  • датчик факта отбраковки
  • датчик корзины
  • датчик продукта для сортировщика

Настройки устранения дребезга датчика продукта для камеры

По умолчанию используется устранение дребезга датчика продукта для камеры по времени. Значение устанавливается в переменной debounceProductSensor.

Если используется энкодер, то можно включить устранение дребезга по энкодеру, для этого нужно установить значение переменной debounceProductSensorByEncoder = true, и указать расстояние устранения дребезга distanceOfDebounceProductSensor. Но при использовании энкодера так же возможно устранение дребезга по времени, используя значение переменной debounceProductSensor.

Залипание датчика продукта для камеры

Если датчик продукта выдаёт сигнал дольше определённого времени maxTimeUpperSensor, или дольше заданного расстояния maxLengthUpperSensor, то включается авария. Расчёт по тому или иному значению происходит в зависимости от режима работы ПЛК.

Обработка залипания включается, если значение соответствующей переменной больше 0.

Подача сигнала на камеру

ПЛК рассчитывает момент подачи сигнала на камеру на основе:

  • в режиме работы по таймеру: значения переменной delayForTriggerCam и временной метки продукта в очереди
  • в режиме работы по энкодеру: значения переменной lengthToTriggerCam и позиции продукта в очереди

ПЛК подаёт сигнал на камеру заданное время, определённое в переменной durationTriggerCam.

Подача сигнала на отбраковщик

ПЛК рассчитывает момент подачи сигнала на отбраковщик на основе:

  • в режиме работы по таймеру: значения переменной delayForDecisionMaking и временной метки продукта в очереди
  • в режиме работы по энкодеру: значения переменной lengthToDecisionMaking и позиции продукта в очереди

ПЛК подаёт сигнал на отбраковщик заданное время, определённое в переменной durationForFillPusher при условии, что установлено значение true в переменной isUsedPusher.

Сигнал аварии

Сигнал аварии именуется так же: остановка линии, сигнал запущенной программы (isStartedProgram = true).

Сигнал аварии – это функционал, связанный с дополнительным функционалом программы ПЛК, определяющий условия возникновения аварии.

Сигнал аварии связан с выходом B3. По умолчанию, этот выход выдаёт сигнал при запуске основного алгоритма, что означает следующее:

  • основной алгоритм запущен (isStartedProgram = true)
  • аварии нет

При выполнении одного из условий аварии, ПЛК отключает выход B3.

Сигнал можно инвертировать, чтобы ПЛК выдавал сигнал на выход B3 при возникновении аварии. Чтобы инвертировать сигнал, нужно установить переменной stopLineMode значение true.

Настройка взаимодействия ПЛК с камерой и ETL

ПЛК хранит в памяти очередь продуктов, которые представляют собой структуру с полем для кода. Это поле заполняется данными, полученными от камеры. Для этого нужно указать в рецептурных картах параметры подключения к камере: cameraIpAddress и cameraPort.

ПЛК обрабатывает сообщения от ETL, которые должны содержать решение (браковать или пропустить) по определённому продукту. Для этого ETL должен формировать строку вида решение~код_продукта:

  • решение – значение 1 или 0: 1 – пропустить продукт, 0 – отбраковать продукт
  • код_продукта – код продукта, по которому ПЛК найдёт нужный продукт в очереди и запишет для него решение

Примеры: 1~code1 – пропустить продукт с кодом code1, 0~code2 – отбраковать продукт с кодом code2.

Для отправки таких строк в ETL нужно использовать узел схем "Отправить код на контроллер ENCODE".

Команды ПЛК

Команда Описание
get-program-version Получить версию программы ПЛК
turn-on:Bn Включить физический выход
n – номер выхода от 1 до 8, кроме 3
turn-on:Bn*t Включить физический выход на заданное количество времени
n – номер выхода от 1 до 8, кроме 3
t – количество времени в мс
turn-off:Bn Отключить физический выход
n – номер выхода от 1 до 8, кроме 3
stop-line Включение аварии
reset Сброс, запускается функция сброса, работающая по кнопке сброса

Кнопка сброса

ПЛК поддерживает сброс по кнопке, подключённой на вход A8. Что происходит при сбросе:

  • сброс внутренних счётчиков
  • очистка очереди продуктов
  • сброс сигнала аварии

Используемые входы/выходы

Зона 1:

  • Входы:

    • A1 ПЛК – энкодер (режим работы по энкодеру)
    • A2 ПЛК – датчик продукта для камеры
    • A8 ПЛК – кнопка сброса
  • Выходы:

    • B1 ПЛК – камера
    • B2 ПЛК – отбраковщик
    • B3 ПЛК – сигнал аварии

Зона 2:

  • Входы:

    • A6 ПЛК – энкодер (режим работы по энкодеру)
    • A2 модуля расширения – датчик продукта для камеры
    • A8 модуля расширения – кнопка сброса
  • Выходы:

    • B1 модуля расширения – камера
    • B2 модуля расширения – отбраковщик
    • B3 модуля расширения – сигнал аварии