PDA

Просмотр полной версии : Подключение энкодеров 5В с частотой до 65 кГц к ПЛК110-60М02



ilys
21.12.2016, 09:30
Добрый день!
Надеюсь получить нужный ответ. Ранее на другой ветке форума вопрос уже задавал: http://www.owen.ru/forum/showthread.php?t=22169&p=230391&viewfull=1#post230391 пост #633.
Думаю вернее будет тут продолжить.

Вопрос по энкодерам!!! Подключил 2 AB энкодера на первые 4 канала ПЛК110-60М02, быстрые входы, переключил в режим Fast Encoders, энкодеры - амплитуда 5 В, для увеличения до 24 В использовал модули ПДИ5-4, знаю что они предназначены для других серий плк фирмы Овен, но все в порядке, плата выполняет свои функции. Энкодеры при максимальных передвижениях шпинделя по осям выдают до 65 кГц, но контроллер стабильно справляется примерно до 30 кГц.
Прикладываю картинку, работа одного канала энкодера 5В через развязку ПДИ5-4, пиковая амплитуда 24В. Вместо прямоугольных импульсов получаем эту гребенку, чем выше частота, тем более явная треугольная форма вершин. Примерно до 30 кГц в режиме Fast Encoders сигналы ловятся, чем выше частота - тем больше пропусков. Как оказалось нужно ловить до 65 кГц. В схемотехнике ПДИ5-4 используются оптроны PC817, изготовили самодельную развязку оптронную на PC814, та же самая картина.
Как разъяснить причину пропусков?
- Это из-за неправильной формы сигналов, пик импульса за счет треугольной формы сигнала очень мал и контроллер не успевает уловить?
- Если так, то есть вариант увеличить амплитуду допустим до 30В, тем самым при срезе на уровне 24 В будет уже не большой фронт, до какого уровня напряжения можно подавать на входы ПЛК110 без риска порчи оборудования?
- Каким оборудованием помимо ПДИ5-4 возможно согласовать энкодер 5В и ПЛК110-60 на совместную работу при 65 кГц?
- Или как-то программно возможно уловить уже имеющиеся сигналы, в каком направлении целесообразнее продолжать вести работу?

Вольд
21.12.2016, 14:11
Каким оборудованием помимо ПДИ5-4 возможно согласовать энкодер 5В и ПЛК110-60 на совместную работу при 65 кГц?

Все очень просто, см вложение. Импульсы на коллекторе транзистора будут идеально прямоугольными.
Никаких оптронов для согласования уровней сигналов не надо. Дискретные входы ПЛК110 и без того имеют гальваническую развязку.


в каком направлении целесообразнее продолжать вести работу?

Самое перспективное направление - это использовать Hardella IDE (http://www.owen.ru/forum/showthread.php?t=23013&page=28&p=231416#post231416). Там вы точно сможете подавать на быстрые дискретные входа ПЛК110[М02] и 100 и 200 кГц. В.Ситников вам в помощь.

Вот еще похожая тема (http://www.owen.ru/forum/showthread.php?t=23600), там то же человек мучился с традиционным подходом . ;)

Владимир Ситников
21.12.2016, 14:46
Вот еще похожая тема (http://www.owen.ru/forum/showthread.php?t=23600), там то же человек мучился с традиционным подходом . ;)

Всё-таки Hardella не решает проблему плохого сигнала.
Если от ПЛК нужно только считывать значение энкодера, то и штатные средства должны работать.

Фильтрацию точно отключили?
28277

Попробовать пример работы с энкодером в Hardella, конечно, можно (пример входит в штатную поставку), но, честно говоря, сомневаюсь, что штатный энкодер "не работает на частотах выше 30кГц". С другой стороны, если оба инструмента упрутся в 30кГц, значит точно дело в сигнале.

Вольд
21.12.2016, 14:55
Всё-таки Hardella не решает проблему плохого сигнала.

Hardella не надо решать проблему плохого сигнала. Проблему плохого сигнала решает грамотное физическое согласование энкодера с дискретными входами ПЛК.

Мою картинку в посте #2 что плохо видно ? ;)

capzap
21.12.2016, 14:56
штатные средства должны работать.

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

Вольд
21.12.2016, 14:57
есть шанс, что программы энкодера, счетчика и т.п., в связи с тем что написаны на заре развития плк этих серий, возможно не оптимальны или имеет даже разного рода ошибки, свежее решение с другим подходом очень не помешало бы

++++++++++++++++++++++

ilys
21.12.2016, 15:14
Всё-таки Hardella не решает проблему плохого сигнала.
Если от ПЛК нужно только считывать значение энкодера, то и штатные средства должны работать.

Фильтрацию точно отключили?
28277

Попробовать пример работы с энкодером в Hardella, конечно, можно (пример входит в штатную поставку), но, честно говоря, сомневаюсь, что штатный энкодер "не работает на частотах выше 30кГц". С другой стороны, если оба инструмента упрутся в 30кГц, значит точно дело в сигнале.

Вот что у меня на этот счет. Время фильтрации как положено 0.28279
Думаю что второй пост от Вольда мне в помощь! Думаю тут и зарыта собака, надеюсь. Изначально я хотел на транзисторах согласовать, еще при подборе оборудования, и письма писал разработчикам об этом..... Спешить пока с выводами не буду, завтра буду по месту и продолжу эксперименты.

BETEP
21.12.2016, 15:26
Примерно до 30 кГц...........оптроны PC817.......PC814
Это придельная частота для этих оптронов.

эти вытянут
6N138
6N139
HCPL4506
HCPL-2530

Вольд
21.12.2016, 15:31
Это придельная частота для этих оптронов.

эти вытянут
6N138
6N139
HCPL4506
HCPL-2530

Не нужны в данном случае вообще никакие оптроны.

BETEP
21.12.2016, 21:33
Не нужны в данном случае вообще никакие оптроны.
Не спорю, просто поделился опытом по поводу скорости этих оптронов.
Но я бы Вашу схему не собирал, а например использовал подобное ULN2803, нужной полярности, просто чтобы не напрягаться с обвесом вокруг транзистора.

Вольд
22.12.2016, 09:54
Не спорю, просто поделился опытом по поводу скорости этих оптронов.
Но я бы Вашу схему не собирал, а например использовал подобное ULN2803, нужной полярности, просто чтобы не напрягаться с обвесом вокруг транзистора.

ULN2803 на каждом углу продается ? ;)

BETEP
22.12.2016, 10:34
Вообще то да, и на любой вкус, штука очень распространённая.
http://www.chipdip.ru/catalog/ic-darlington/?gq=uln2
http://www.electronshik.ru/find?q=ULN2&rel=rel&page=1&section=01010211&brand=all&show=40&in_stock=all&field=grid

и вишенка на торт
http://www.electronshik.ru/item/stepper-motor-driver-board-uln2003-for-arduino-1266697

ilys
28.12.2016, 15:32
Это придельная частота для этих оптронов.

эти вытянут
6N138
6N139
HCPL4506
HCPL-2530
Проработали и этот вопрос, фотки нет, но форма сигнала не идеальная, сказывается время затухания сигнала на высоких частотах


Вообще то да, и на любой вкус, штука очень распространённая.
http://www.chipdip.ru/catalog/ic-darlington/?gq=uln2
http://www.electronshik.ru/find?q=ULN2&rel=rel&page=1§ion=01010211&brand=all&show=40&in_stock=all&field=grid

и вишенка на торт
http://www.electronshik.ru/item/stepper-motor-driver-board-uln2003-for-arduino-1266697
Эта микросхема хороша, но для данного случая потребуется снова городуха для инвертирования сигналов, т.к. на выходе общий +, а у меня общий минус и на входных и на выходных каналах.


Все очень просто, см вложение. Импульсы на коллекторе транзистора будут идеально прямоугольными.
Никаких оптронов для согласования уровней сигналов не надо. Дискретные входы ПЛК110 и без того имеют гальваническую развязку.

Остановились на этом варианте и долго бились с повышением до 24В амплитуды выходного сигнала, т.к. в схемотехнике ПЛК на входных каналах уже стоят делители в паре с оптроном, которые в итоге общей цепи гасят амплитуду. Пришлось на переходную плату подать 27В, использовать КТ815 и сопротивления на делителях мощностью 1Вт, и они даже греются малость.
ИТОГО: вот что имею на сегодняшний день.
В первый раз данные давал по максимальной рабочей частоте - 30 кГц, ошибся, даже их нет блин, ну максимум до 10 кГц нет пропусков оказывается! Да и немного с частотниками поработав уменьшил немного свой аппетит, и теперь нужно 52 кГц максимум. Прикладываю фото с последними результатами по согласованию сигналов энкодера, есть амплитуда около 24 В, хотя ловит контроллер уже при 16 В, может и ниже. Получается и искаженный сигнал от ПДИ5-4 подходит что-ли контроллеру, просто в режиме Fast Encoders он вместо 100 кГц работает на 10% от заявленной частоты... Не порядок.
28445 28446
28447Это уже панель оператора с моей первой работой, для общего вида прикладываю

Вольд
28.12.2016, 16:28
Остановились на этом варианте и долго бились с повышением до 24В амплитуды выходного сигнала, т.к. в схемотехнике ПЛК на входных каналах уже стоят делители в паре с оптроном, которые в итоге общей цепи гасят амплитуду. Пришлось на переходную плату подать 27В, использовать КТ815 и сопротивления на делителях мощностью 1Вт, и они даже греются малость.

Зачем было нужно делать общий минус для дискретных входов ?

Владимир Ситников
28.12.2016, 18:37
звиняйте за такой вид программки моей, если нарушил какие-то принципы построения кода, самоучка я. Ну вот собственно кусочек кода. Переменная Shet1: DINT - глобальная.
28448

Да даже визуально видно при работе программы во вкладке глобальных переменных, как себя ведет счетчик накопительный и данные какие поступают с энкодера. Все что поступило - программой просчиталось и про суммировалось. Тут явно пропуски контроллера
Вообще говоря, должно хватать такого (и разнообразные программные сбросы по 50000 я бы выключал. Зачем они?):


prevEncoderValue : WORD; (* например, в глобальных *)
encoderValue : WORD; (* это в plc configuration *)

value : DINT; (* тут будет абсолютное положение энкодера *)

value := value + WORD_TO_INT(encoderValue-prevEncoderValue);
prevEncoderValue := encoderValue;


Т.е. все эти "abs", ">40000" и т.п. это всё не нужно.
Для вычисления абсолютного положения энкодера достаточно двух строк.

ilys
29.12.2016, 08:16
Зачем было нужно делать общий минус для дискретных входов ?
Дело в том, что станок был разработан немцами более 20 лет назад, весь монтаж датчиков, релюшек и т.д. был продуман еще в то время, вся логика продумана на общем минусе, я тогда в школе еще учился, посему мне пришлось приспосабливаться к уже имеющемуся шкафу автоматики.


Вообще говоря, должно хватать такого (и разнообразные программные сбросы по 50000 я бы выключал. Зачем они?):


prevEncoderValue : WORD; (* например, в глобальных *)
encoderValue : WORD; (* это в plc configuration *)

value : DINT; (* тут будет абсолютное положение энкодера *)

value := value + WORD_TO_INT(encoderValue-prevEncoderValue);
prevEncoderValue := encoderValue;


Т.е. все эти "abs", ">40000" и т.п. это всё не нужно.
Для вычисления абсолютного положения энкодера достаточно двух строк.

Сбросы по 50000 делал - мог и максимум взять, 65000, просто 50000 для удобства, для себя, а нужно для того, чтобы не потерять данных с счетчика энкодера. В ходе работ выяснилось, что даже при медленных режимах движения шпинделя за время одного цикла управляющей программы счетчик энкодера меняется на 15 и более значений. Движение шпинделя может быть от приводов, и так же от ручной подачи, т.е. оператор станка крутит штурвалы рукой и теперь нет понятия в программе, куда будет вращаться энкодер, в отличии от программного управления серводвигателями, где я явно знаю направление движения, относительно к которому привязал бы логику - или плюсовать или минусовать. Получается, если мы находимся на границе программного обнуления счетчика при 65000 (если максимальное, у меня 50000) и в это время оператор крутанул штурвал, при следующем цикле счет будет (примерно) или 25 - если вперед, или 64980 - обратка. Разница предыдущего значения счетчика и действующего будет или ABS(65000-25) = 64975 или ABS(65000-64980) = 20. Если просто это значение прибавлять или отнимать от счетчика, то будет неправильно. Потому для себя заморочился, что если разница более 40000, то нужно с полученного значения отнимать максимальное значение счетчика. И у меня общий счетчик DINT, для того чтобы соблюдался нуль и держались при необходимости и минусовые значения. 7985 им/мм * 9000 мм(максимальный ход по оси) = +-71865000, в пределы DINT входим.
Тяжеловато объяснил...
В краце, для себя такой алгоритм разработал, он работает и не привязывается к командам управления серводвигателей, а просто следит за данными с энкодеров.

value := value + WORD_TO_INT(encoderValue-prevEncoderValue); - не совсем ясно как работает выделенное.
prevEncoderValue := encoderValue;

Вижу что разницу прибавляем к общему счетчику, а если была ситуация, что обнуление энкодера при достижении 65000 произошло именно в тот момент, когда оператор в ручную ловит микроны, и в этот момент он раз 10 штурвалом крутил почуточку в разные стороны, и получаем значения то 64980, то 20, и и это все отнимается и складывается... и счет ушел

Вольд
29.12.2016, 10:05
Зачем было 27 В подавать на дискретные входы. Надо подавать ровно 24 В. Дискретные входы ПЛК110 будут нормально работать при напряжении от 12 до 30 В. Какое сопротивление стоит в коллекторе КТ815 ?

Энкодер у вас исправен ?

Филоненко Владислав
29.12.2016, 10:14
Размах сигнала на входах ПЛК должен быть 24В. Если энкодер 5 в - ставьте высокоскоростную развязку.
Осциллограмма у Вас не с энкодера, а с генератора пилы :D Это точно энкодер? Китайский неликвид?

Вольд
29.12.2016, 10:26
Размах сигнала на входах ПЛК должен быть 24В. Если энкодер 5 в - ставьте высокоскоростную развязку.
Осциллограмма у Вас не с энкодера, а с генератора пилы :D Это точно энкодер? Китайский неликвид?

Вы посты читаете через один ? Вопрос согласования уровней уже решен. Не надо путать человека ?

Владимир Ситников
29.12.2016, 10:58
Получается, если мы находимся на границе программного обнуления счетчика при 65000
Простите, но "бла-бла-бла-65000".

Вот вам пример:



VAR
prevEncoderValue, encoderValue : WORD;
diff_word : WORD;
diff_int : INT;
value : DINT;
newValue : DINT;
newValue2 : DINT;
END_VAR

value := 10; (* прошлое значение -- 10 *)
prevEncoderValue := 65530; (* было у границы *)
encoderValue := prevEncoderValue + 9; (* крутанули на 9 *)
newValue := value + encoderValue - prevEncoderValue; (* неправильно *)
diff_word := encoderValue - prevEncoderValue;
diff_int := WORD_TO_INT(diff_word);
newValue2 := value + diff_int; (* правильно *)


Вот в симуляции:
28461

newValue2 правильно изменилось с 10 до 19 (увеличилось на 9)

Попробуем в обратную сторону. Т.е. пусть старое значение 5, а крутанули на -9:
28462

Тоже всё верно. newValue2 изменилось с 10 до 1 (уменьшилось на 9)
Поэтому никакие "сбросы по 50000" не нужны. Они только вредят и запросто могут вызывать ошибку счёта.
Честное слово, я даже не хочу вчитываться, если есть нормальный и простой вариант в одну строку.

ilys
29.12.2016, 11:26
Поэтому никакие "сбросы по 50000" не нужны. Они только вредят и запросто могут вызывать ошибку счёта.
Честное слово, я даже не хочу вчитываться, если есть нормальный и простой вариант в одну строку.
Спасибо Вам, за обед прочитал в архивах форума про WORD_TO_INT, попробую у себя этот пример!

ilys
29.12.2016, 11:39
Зачем было 27 В подавать на дискретные входы. Надо подавать ровно 24 В. Дискретные входы ПЛК110 будут нормально работать при напряжении от 12 до 30 В. Какое сопротивление стоит в коллекторе КТ815 ?

Энкодер у вас исправен ?

На дискретный вход поступает 24В, а для того чтобы исключить полностью все разногласия подняли 27 В на вход самодельной платы развязки, где за счет работы делителя немного падает напряжение. Энкодер исправен и по осцилограмме видно, да и датчикам лет 20 точно, они немецкие, не Китай, ROD426 - Heidenhain, это очень хорошие немецкие энкодеры, хоть и возраст есть, но они нас еще переживут при бережном обращении

Вольд
29.12.2016, 12:15
На дискретный вход поступает 24В, а для того чтобы исключить полностью все разногласия подняли 27 В на вход самодельной платы развязки, где за счет работы делителя немного падает напряжение.

Лишнее все это. Какое сопротивление стоит в коллекторе КТ815 ?

В идеале надо так, но элементов многовато получается.

ilys
29.12.2016, 12:46
Лишнее все это. Какое сопротивление стоит в коллекторе КТ815 ?
прикладываю пейзаж гогена. Такой получился согласовательный узел, т.к. у меня общий минус и делитель в ПЛК тоже играется, уже было желание разобрать контроллер и убрать оттуда этот делитель и подать на оптопару непосредственно с энкодера сигналы ттл 5 В и все было бы пучком.!
Кстати, это предложение разработчикам контроллера, почему бы не предусмотреть внутри корпуса ПЛК джампер, на три положения, чтобы можно было выбирать необходимый для себя уровень сигнала, типа 5В, 12В и 24В!
28464

Вольд
29.12.2016, 12:50
прикладываю пейзаж гогена. Такой получился согласовательный узел, т.к. у меня общий минус и делитель в ПЛК тоже играется, уже было желание разобрать контроллер и убрать оттуда этот делитель и подать на оптопару непосредственно с энкодера сигналы ттл 5 В и все было бы пучком.!
Кстати, это предложение разработчикам контроллера, почему бы не предусмотреть внутри корпуса ПЛК джампер, на три положения, чтобы можно было выбирать необходимый для себя уровень сигнала, типа 5В, 12В и 24В!
28464

Не надо подавать 27В, а надо 24В и греться будет меньше.

ilys
29.12.2016, 12:52
Не надо подавать 27В, а надо 24В и греться будет меньше.

все это понятно. подали 27 В чтобы на выходе уже иметь амплитуду 24В, а если подаем 24 - то и выход меньше, и тут же на форуме бы начали говорить, что вот мол не добрал пару вольт и все сыпится

IVM
29.12.2016, 12:56
и тут же на форуме бы начали говорить, что вот мол не добрал пару вольт и все сыпится

Не надо слушать всякий бред, а надо опираться на собственные знания и опыт, а также читать РЭ на ПЛК. Я тоже утверждаю, что подавать 27 В не надо. Вольд правильно говорит и рисует.

ilys
29.12.2016, 13:16
Не надо слушать всякий бред, а надо опираться на собственные знания и опыт, а также читать РЭ на ПЛК. Я тоже утверждаю, что подавать 27 В не надо.
Всякий бред я читаю, при необходимости иногда что-то полезное оттуда вытягиваю, просто лишнее фильтровать нужно.
А 27 В - это был эксперимент, в итоге станок до сих пор работает с сигналами в виде гребенки на ПДИ5-4 и подаем нормальные 24 В, а эту самодельную плату буду ставить после праздников и как писал ранее каждый из 4-х быстрых входов проверять в режиме быстрых счетчиков.

IVM
29.12.2016, 13:24
Всякий бред я читаю, при необходимости иногда что-то полезное оттуда вытягиваю, просто лишнее фильтровать нужно.
А 27 В - это был эксперимент, в итоге станок до сих пор работает с сигналами в виде гребенки на ПДИ5-4 и подаем нормальные 24 В, а эту самодельную плату буду ставить после праздников и как писал ранее каждый из 4-х быстрых входов проверять в режиме быстрых счетчиков.

Кто вас надоумил использовать ПДИ5-4 ? На осциллограмму смотреть страшно. Плохо вы фильтруете информацию. ;)

ilys
29.12.2016, 13:55
Кто вас надоумил использовать ПДИ5-4 ? На осциллограмму смотреть страшно. Плохо вы фильтруете информацию. ;)
Стоимость ПДИ5-4 рублей 500-600, точно не помню, ерунда в общем. Мне просто интересна была сама схемотехника, и на что способна плата эта, обычный спортивный интерес. А так до закупа я вел переписку с производителями компании, с инженерами ихними, я точно знал что эта плата не для ПЛК110-60 и был заранее предупрежден об этом. Немного умолчал ранее, до ПДИ5-4 был пробный пуск на ПЛК110-32 с развязкой на PC814, на скоростях до 3 кГц все работало, не думал что для этого станка нужно 50 кГц. И т.к. это первая моя работа с ПЛК - соответственно много косяков, вопросов и т.д.....

IVM
29.12.2016, 18:49
Вообще то да, и на любой вкус, штука очень распространённая.
http://www.chipdip.ru/catalog/ic-darlington/?gq=uln2
http://www.electronshik.ru/find?q=ULN2&rel=rel&page=1§ion=01010211&brand=all&show=40&in_stock=all&field=grid

и вишенка на торт
http://www.electronshik.ru/item/stepper-motor-driver-board-uln2003-for-arduino-1266697

А таких же сборок, но с p-n-p транзисторами нет ?

BETEP
30.12.2016, 10:24
не знаю, не встречал

ilys
10.01.2017, 13:20
Всех с прошедшими праздниками!
К сожалению из-за большого накопленного объема работ с применением данного станка эксперименты на нем не могу проводить в ближайшие дни. В том виде как есть на нем стругают сутками, бьют по рукам при попытке что-то поменять в программе, мол и так 1,5 года отстояла, пусть так хотя бы пашет.
У меня возник детский вопрос, простите конечно, но задам, что-то поиском не смог найти именно для меня нужную информацию.
Как писал ранее, для визуализации использую обычный компьютер, частями уложил его внутренности в панель оператора и хотелось бы вывести текущую дату и время именно с компьютера на монитор, как это в ST коде прописать? заранее спасибо!

ilys
11.01.2017, 13:55
Потерей сигналов не может являться старая версия таргет-файла и прошивки? Как получил ПЛК110-60М02 - я его перепрошил на версию 2.14.0 - то что шло с диском поставки в комплекте. http://www.owen.ru/catalog/programmiruemij_logicheskij_kontroller_oven_plk110/87310138 - а тут совсем свеженькие версии всего, может тут собака зарыта?

lara197a
11.01.2017, 15:47
собака зарыта в неверном подборе оборудования.
все операции со счетными входами ограничены.
в т.ч. и у других производителей.
как правило если счетный вход максимально 100кгц,
то в ПЛК при наличии (обычно) 2хили 4-х входов общая частота входов снижается до 20-30кгц.
При этом большое количество энкодеров или сильно скоростные импупульсные источники счета подключаются
к специальным счетным модулям, с гарантированной скоростью обработки сигналов.