Основной функционал программы каждой зоны
Подключение к ПЛК из ETL
Для взаимодействия с ПЛК нужно настроить подключение в ETL. Т.к. 2 зоны, то в ETL нужно завести 2 устройства, если используется 2 зоны, если одна, то одно устройство:
- Зона 1:
- для записи значений переменных из рецептурных карт ETL: порт OPC UA
4840 - для получения решений по отбраковке, а так же обработке команд: порт TCP
5001
- для записи значений переменных из рецептурных карт ETL: порт OPC UA
- Зона 2:
- для записи значений переменных из рецептурных карт ETL: порт OPC UA
4840 - для получения решений по отбраковке, а так же обработке команд: порт TCP
5003
- для записи значений переменных из рецептурных карт ETL: порт OPC UA
Настройки в рецептурных картах
| Переменная ПЛК | Описание |
|---|---|
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, и временной метки или позиции по энкодеру, расчёт по тем или иным значениям зависит от режима работы.
Режим работы определяется наличием энкодера и установкой значений соответствующих переменных:
- работа по таймеру (по временным меткам)
- работа по энкодеру (если используется энкодер)
Алгоритм программы ПЛК можно представить в виде следующей принципиальной схемы.

Принцип устранения дребезга датчика продукта
После получения сигнала от датчика продукта ПЛК запускает таймер на время, в течение которого ПЛК игнорирует последующие сигналы, или отсчёт расстояния (это для датчика продукта для камеры, если установлены соответствующие настройки).
Устранение дребезга поддерживается для следующих датчиков:
- датчик продукта для камеры
- датчик факта отбраковки
- датчик корзины
- датчик продукта для сортировщика
Настройки устранения дребезга датчика продукта для камеры
По умолчанию используется устранение дребезга датчика продукта для камеры по времени. Значение устанавливается в переменной 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, кроме 3t – количество времени в мс |
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модуля расширения – сигнал аварии