1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Операция сравнения

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

Доброго времени суток! Есть установка, все процессы в ней завязаны на положение энкодера (Абсолютный), так же есть проект в ней, почти рабочий. Обнаружил такой баг: несколько раз срабатывают некоторые катушки пневмо-клапанов. Когда стал разбираться обнаружил что для срабатывания клапанов в определенном диапазоне, использую две операции сравнения. Т.е. еже ли положение энкодера больше одного значения и меньше другого тогда есть сигнал на срабатывания клапана. На практике проскакивает еще несколько раз сигнал открытия и закрытия, выяснил подключение счетчика. Вопрос : откуда берутся дополнительные срабатывания?

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3576
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Операция сравнения

Сообщение Михайло »

ложные сигналы, механическая вибрация...
Аватара пользователя

DemoN9577
осмотрелся
осмотрелся
Сообщения: 135
Зарегистрирован: 22 июл 2017, 22:47
Имя: Сергей
Страна: СССР
Благодарил (а): 6 раз
Поблагодарили: 27 раз

Операция сравнения

Сообщение DemoN9577 »

megavolt2201 писал(а): 02 мар 2020, 08:56 еже ли положение энкодера больше одного значения и меньше другого тогда есть сигнал на срабатывания клапана.
Как я понял, что в этом диапазоне вы просто активируете выход? Правильно будет взводить триггер по одному условию и сбрасывать по другому.
Или катушка срабатывает когда значения за пределами заданного диапазона?
________________________________
Не ждите чуда - чудите сами!

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

DemoN9577 писал(а): 02 мар 2020, 22:35
megavolt2201 писал(а): 02 мар 2020, 08:56 еже ли положение энкодера больше одного значения и меньше другого тогда есть сигнал на срабатывания клапана.
Как я понял, что в этом диапазоне вы просто активируете выход? Правильно будет взводить триггер по одному условию и сбрасывать по другому.
Или катушка срабатывает когда значения за пределами заданного диапазона?
вы правильно поняли

Отправлено спустя 4 минуты 41 секунду:
Я разобрался в чем проблема.
Оказывается проходило срабатывание в момент перехода с 0 до макс. значения. а причина в том что данный энкодер (турецкого производства) выдавал обычный аналоговый сигнал 0,,10в , в момент перехода с 0 до макс. контроллер успевал считать его положение т.е. возрастание напряжения, а значит я получал за каждый цикл обработки сигнала увеличение напряжения. и оно попадало в тот диапазон который я использовал. Отсюда и ложное срабатывание.
только вот не знаю как это грамотно обойти

stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Операция сравнения

Сообщение stesl »

Ничего не понятно, но очень интересно )
В каждом цикле ПЛК есть значение, которое попадает в диапазон, но его надо игнорировать потому что оно возрастающее? Не "устоявшееся"

paul-th
не первый раз у нас
не первый раз у нас
Сообщения: 305
Зарегистрирован: 19 мар 2015, 08:46
Имя: Павел.
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 3 раза
Поблагодарили: 25 раз
Забанен: Бессрочно

Операция сравнения

Сообщение paul-th »

megavolt2201 писал(а): 02 мар 2020, 08:56 так же есть проект в ней, почти рабочий.
В работающем проекте встроен ваш новый проект? У энкодера выдающего аналоговый сигнал, по моему, другое название. Какая система преобразования аналогового сигнала в цифру?

romm-is
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 06 фев 2020, 22:28
Имя: rrrrrrrr

Операция сравнения

Сообщение romm-is »

megavolt2201 писал(а): 06 мар 2020, 16:53 Оказывается проходило срабатывание в момент перехода с 0 до макс
Я сталкивался с позиционированием планшайбы на намотчике пакетов, стоял абсолютный энкодер 10 бит. Только ПЛК "сегнетикс" и в целом все должно быть похоже. Мне кажется у вас что то не то с алгоритмом позиционирования. Можно попробовать исправить это методом костылей. Вам нужно выделить компараторами два крайних (мин/макс) значения и сигналы с них должны блокировать срабатывание других компараторов. Еще (если не критично к времени реакции системы) можно все выходы управления исп. механизмами, пропустить через on delay. Но лучше всего полностью знать как работает текущий алгоритм.

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

еще раз. То что стоит в качестве энкодера выдает аналоговый сигнал 0...10В. (я представляю что там что то похожее на потенциометр) есть правильное напряжение - то что подается в зависимости от угла поворота (0...359 градусов) и неправильное - это когда оборот сделан и сигнал с энкодера вновь возрастает до 10 В. Как раз именно в это возрастание и происходят ложные срабатывания, за это время контроллер успевает считать его сигнал.

Отправлено спустя 53 минуты 15 секунд:
Поставщики привезли машины, но пнр так и не прошли, мне пришлось допиливать их. Аналоговый сигнал обрабатывается через : 1) Нормализация 0 до 27648 2) шкалирование 3)округление 4) копирование в глобал дб.

paul-th
не первый раз у нас
не первый раз у нас
Сообщения: 305
Зарегистрирован: 19 мар 2015, 08:46
Имя: Павел.
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 3 раза
Поблагодарили: 25 раз
Забанен: Бессрочно

Операция сравнения

Сообщение paul-th »

А там есть какая то настройка фильтра на аналоговых входах?

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

paul-th писал(а): 10 мар 2020, 09:34 А там есть какая то настройка фильтра на аналоговых входах?
есть только усреднение значений за 4 цикла контроллера. Попробовал сделать большое кол-во циклов но становилось только хуже.
Аватара пользователя

aranea
знаток Eplan
знаток Eplan
Сообщения: 1136
Зарегистрирован: 21 сен 2012, 22:45
Имя: aranea
Благодарил (а): 30 раз
Поблагодарили: 165 раз

Операция сравнения

Сообщение aranea »

megavolt2201, 1. какое общее расстояние вы измеряете этим энкодером?
2. какое расстояние может измерить энкодер без переполнения?
Изображение

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

aranea писал(а): 10 мар 2020, 15:18 megavolt2201, 1. какое общее расстояние вы измеряете этим энкодером?
2. какое расстояние может измерить энкодер без переполнения?
Цикл работы машины подвязан на один оборот работы энкодера. Момент срабатывания пневматики зависит от угла поворота энкодера. Энкодер работает постоянно в одном направлении.
Аватара пользователя

aranea
знаток Eplan
знаток Eplan
Сообщения: 1136
Зарегистрирован: 21 сен 2012, 22:45
Имя: aranea
Благодарил (а): 30 раз
Поблагодарили: 165 раз

Операция сравнения

Сообщение aranea »

megavolt2201, то есть у вас сигнал формы "пила" и вы не знаете что с этим делать?
Изображение
правильно обрабатывайте скачок и будет счастье
Изображение
Аватара пользователя

Looker
эксперт
эксперт
Сообщения: 1112
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 323 раза
Поблагодарили: 218 раз

Операция сравнения

Сообщение Looker »

megavolt2201 писал(а): 10 мар 2020, 08:56есть правильное напряжение - то что подается в зависимости от угла поворота (0...359 градусов) и неправильное - это когда оборот сделан и сигнал с энкодера вновь возрастает до 10 В.
megavolt2201 писал(а): 10 мар 2020, 13:14есть только усреднение значений за 4 цикла контроллера. Попробовал сделать большое кол-во циклов но становилось только хуже.
megavolt2201 писал(а): 10 мар 2020, 15:49Энкодер работает постоянно в одном направлении.
Извиняюсь за кучу цитат, но раз движение в одном направлении попробуй сделать временной дискриминатор - позиция не может измениться резко.
Правильно надо устранять надо причину:
Михайло писал(а): 02 мар 2020, 21:50ложные сигналы, механическая вибрация...
Доводилось ловить ошибки позиции при движении только вперед (назад дергается само при остановке механизма), а также при учете импульсов пульсирующего расхода.
А, этот совет неправильный:
DemoN9577 писал(а): 02 мар 2020, 22:35Правильно будет взводить триггер по одному условию и сбрасывать по другому.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

paul-th
не первый раз у нас
не первый раз у нас
Сообщения: 305
Зарегистрирован: 19 мар 2015, 08:46
Имя: Павел.
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 3 раза
Поблагодарили: 25 раз
Забанен: Бессрочно

Операция сравнения

Сообщение paul-th »

megavolt2201 писал(а): 10 мар 2020, 13:14 Попробовал сделать большое кол-во циклов но становилось только хуже.
А если уменьшить до 1. цикла? Кривой какой то проект, видел такие машины с нормальным абсолютным энкодером 10 бит на 1 оборот, нормально работают уже с десяток лет, один раз меняли энкодер на одной машине.
При переходе с нуля на 10 вольт все равно на аналоговом входе переходный процесс будет, вот как от него уйти на мгновенное а не усредненное значение.

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

Как вы считаете, может при достижении нижнего положения включать таймер, скажем на 50мс, который бы блокировал обработку сигнала. А за это время энкодер бы проскакивал необходимое мне положение. Костыль, но другого способа я не вижу, если кто знает подскажите.

Corgo
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 мар 2020, 03:46
Имя: Владислав
Страна: Украина
город/регион: Киев
Благодарил (а): 4 раза

Операция сравнения

Сообщение Corgo »

Добрый день!
Хочу уточнить несколько вопросов:
1. Автомат работает циклически. Один цикл работы автомата равен одному обороту вала, на котором установлен энкодер?
2. За один оборот энкодера, на его выходе изменяется напряжение (увеличивается) от 0В (0 град) до 10В (360 град)?
3. После перехода 360 град происходит переполнение энкодера и на его выходе устанавливается напряжение 0В?
4. Процесс "обнуления" выхода энкодера при его переполнении занимает большой промежуток времени. Это время больше чем цикл программы. В процессе так сказать "обнуления" выхода энкодера, есть момент времени когда его значение попадает в диапазон включения клапана и тот кратковременно включается? Т.е. за один цикл работы автомата, клапан включается два раза. Первый - по алгоритму, при вращении вала от 0 до 360 грал. Второй - во время "обнуления" выхода энкодера при переполнении (кратковременно)?
5. Какое время одного цикла работы автомата - время за которое вал делает один оборот (примерно - порядок: минуты, секунды, сотни мс, единицы мс)

Автор темы
megavolt2201
здесь недавно
здесь недавно
Сообщения: 26
Зарегистрирован: 06 апр 2017, 18:15
Имя: Иван
Страна: Россия
город/регион: Краснодар

Операция сравнения

Сообщение megavolt2201 »

Corgo писал(а): 12 мар 2020, 19:06 Добрый день!
Хочу уточнить несколько вопросов:
1. Автомат работает циклически. Один цикл работы автомата равен одному обороту вала, на котором установлен энкодер?
2. За один оборот энкодера, на его выходе изменяется напряжение (увеличивается) от 0В (0 град) до 10В (360 град)?
3. После перехода 360 град происходит переполнение энкодера и на его выходе устанавливается напряжение 0В?
4. Процесс "обнуления" выхода энкодера при его переполнении занимает большой промежуток времени. Это время больше чем цикл программы. В процессе так сказать "обнуления" выхода энкодера, есть момент времени когда его значение попадает в диапазон включения клапана и тот кратковременно включается? Т.е. за один цикл работы автомата, клапан включается два раза. Первый - по алгоритму, при вращении вала от 0 до 360 грал. Второй - во время "обнуления" выхода энкодера при переполнении (кратковременно)?
5. Какое время одного цикла работы автомата - время за которое вал делает один оборот (примерно - порядок: минуты, секунды, сотни мс, единицы мс)
вы поняли все правильно.
время вращения вала регулируется, от этого зависти скорость работы машины. Но она примерно 4 секунды +- 1 секунда

Corgo
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 мар 2020, 03:46
Имя: Владислав
Страна: Украина
город/регион: Киев
Благодарил (а): 4 раза

Операция сравнения

Сообщение Corgo »

megavolt2201 писал(а): 13 мар 2020, 10:05 вы поняли все правильно.
Вам необходимо разделить цикл на две части. Первая часть это собственно выполнение алгоритма. В этой части необходимо работать с клапаном. Вторая часть - это процесс обнуления выхода энкодера. В этой части цикла действия с клапаном необходимо запретить. Это можно сделать по времени, как Вы предлагали выше. Но я бы не советовал так делать. Я предлагаю привязаться к значениям энкодера. Ввести переменную Prohibition, которая в первой части цикла, когда выполняется алгоритм будет = FALSE а во второй части, когда происходит обнуление выхода будет = TRUE. Затем необходимо прописать четыре условия.

1. Условие начала процесса переполнения, Prohibition переходит из FALSE в TRUE.
2. Условие конца процесса переполнения, Prohibition переходит из TRUE в FALSE.
3. Условие включения клапана.
4. Условие выключения клапана.

Условия 3 и 4 должны выполняться только если переменная Prohibition = FALSE т.е. процесс обнуления не происходит.

Накидал на скорую руку один из вариантов. Просто как пример, чтобы был понятен ход моих мыслей.
[+] Вариант 1
//-------------------------------------------------------------------------------------------------------------------
// Условие начала процесса переполнения
IF
Value_encoder = 359 //Максимальное значение энкодера перед переполнением
AND Prohibition = FALSE //Процесс переполнения энкодера не происходит
THEN
Prohibition := TRUE;

//-----------------------------------------------------------
// Условие окончания процесса переполнения
ELSIF
Value_encoder = 0 //Минимальное значение энкодера после переполнения
AND Prohibition = TRUE //Процесс переполнения энкодера происходит
THEN
Prohibition := FALSE;
END_IF;

//-------------------------------------------------------------------------------------------------------------------
//Условие включения клапана
IF
Value_encoder = Value_MIN_valve_on //Значение энкодера равно значению включения клапана
AND Open_valve = FALSE //Клапан отключен
AND Prohibition = FALSE //Процесс переполнения энкодера не происходит
THEN
Open_valve := TRUE; //Включить клапан

//-----------------------------------------------------------
//Условие отключения клапана
ELSIF
Value_encoder = Value_MAX_valve_on //Значение энкодера равно значению отключения клапана
AND Open_valve = TRUE //Клапан включен
AND Prohibition = FALSE //Процесс переполнения энкодера не происходит
THEN
Open_valve := FALSE; //Отключить клапан
END_IF;
//-------------------------------------------------------------------------------------------------------------------
А можно сделать еще проще. Подменить значение выхода энкодера "нолем" во время переходного процесса при его переполнении. В данном случае Вам не нужно будет изменять алгоритм включения/отключения клапана, который уже существует. Необходимо только подменить переменную, которую Вы используете сейчас при сравнении на Value_encoder. (Из минусов мы теряем одно последнее значение энкодера перед переполнением)
[+] Вариант 2
//-------------------------------------------------------------------------------------------------------------------
// Условие начала процесса переполнения
IF
Real_value_encoder = 359 //Максимальное значение энкодера перед переполнением
AND Prohibition = FALSE //Процесс переполнения энкодера не происходит
THEN
Prohibition := TRUE;

//-----------------------------------------------------------
// Условие окончания процесса переполнения
ELSIF
Real_value_encoder = 0 //Минимальное значение энкодера после переполнения
AND Prohibition = TRUE //Процесс переполнения энкодера происходит
THEN
Prohibition := FALSE;
END_IF;

//-------------------------------------------------------------------------------------------------------------------
//Обнуление выхода энкодера во время процесса переполнения
IF
Prohibition = TRUE
THEN
Value_encoder = 0;
ELSE
Value_encoder = Real_value_encoder;
END_IF;
//-------------------------------------------------------------------------------------------------------------------
Ответить

Вернуться в «Simatic TIA Portal»