Просмотр полной версии : Подключение энкодеров 5В с частотой до 65 кГц к ПЛК110-60М02
Добрый день!
Надеюсь получить нужный ответ. Ранее на другой ветке форума вопрос уже задавал: 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 кГц?
- Или как-то программно возможно уловить уже имеющиеся сигналы, в каком направлении целесообразнее продолжать вести работу?
Каким оборудованием помимо ПДИ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кГц, значит точно дело в сигнале.
Всё-таки Hardella не решает проблему плохого сигнала.
Hardella не надо решать проблему плохого сигнала. Проблему плохого сигнала решает грамотное физическое согласование энкодера с дискретными входами ПЛК.
Мою картинку в посте #2 что плохо видно ? ;)
штатные средства должны работать.
есть шанс, что программы энкодера, счетчика и т.п., в связи с тем что написаны на заре развития плк этих серий, возможно не оптимальны или имеет даже разного рода ошибки, свежее решение с другим подходом очень не помешало бы
есть шанс, что программы энкодера, счетчика и т.п., в связи с тем что написаны на заре развития плк этих серий, возможно не оптимальны или имеет даже разного рода ошибки, свежее решение с другим подходом очень не помешало бы
++++++++++++++++++++++
Всё-таки Hardella не решает проблему плохого сигнала.
Если от ПЛК нужно только считывать значение энкодера, то и штатные средства должны работать.
Фильтрацию точно отключили?
28277
Попробовать пример работы с энкодером в Hardella, конечно, можно (пример входит в штатную поставку), но, честно говоря, сомневаюсь, что штатный энкодер "не работает на частотах выше 30кГц". С другой стороны, если оба инструмента упрутся в 30кГц, значит точно дело в сигнале.
Вот что у меня на этот счет. Время фильтрации как положено 0.28279
Думаю что второй пост от Вольда мне в помощь! Думаю тут и зарыта собака, надеюсь. Изначально я хотел на транзисторах согласовать, еще при подборе оборудования, и письма писал разработчикам об этом..... Спешить пока с выводами не буду, завтра буду по месту и продолжу эксперименты.
Примерно до 30 кГц...........оптроны PC817.......PC814
Это придельная частота для этих оптронов.
эти вытянут
6N138
6N139
HCPL4506
HCPL-2530
Это придельная частота для этих оптронов.
эти вытянут
6N138
6N139
HCPL4506
HCPL-2530
Не нужны в данном случае вообще никакие оптроны.
Не нужны в данном случае вообще никакие оптроны.
Не спорю, просто поделился опытом по поводу скорости этих оптронов.
Но я бы Вашу схему не собирал, а например использовал подобное ULN2803, нужной полярности, просто чтобы не напрягаться с обвесом вокруг транзистора.
Не спорю, просто поделился опытом по поводу скорости этих оптронов.
Но я бы Вашу схему не собирал, а например использовал подобное ULN2803, нужной полярности, просто чтобы не напрягаться с обвесом вокруг транзистора.
ULN2803 на каждом углу продается ? ;)
Вообще то да, и на любой вкус, штука очень распространённая.
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
Это придельная частота для этих оптронов.
эти вытянут
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Это уже панель оператора с моей первой работой, для общего вида прикладываю
Остановились на этом варианте и долго бились с повышением до 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" и т.п. это всё не нужно.
Для вычисления абсолютного положения энкодера достаточно двух строк.
Зачем было нужно делать общий минус для дискретных входов ?
Дело в том, что станок был разработан немцами более 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, и и это все отнимается и складывается... и счет ушел
Зачем было 27 В подавать на дискретные входы. Надо подавать ровно 24 В. Дискретные входы ПЛК110 будут нормально работать при напряжении от 12 до 30 В. Какое сопротивление стоит в коллекторе КТ815 ?
Энкодер у вас исправен ?
Филоненко Владислав
29.12.2016, 10:14
Размах сигнала на входах ПЛК должен быть 24В. Если энкодер 5 в - ставьте высокоскоростную развязку.
Осциллограмма у Вас не с энкодера, а с генератора пилы :D Это точно энкодер? Китайский неликвид?
Размах сигнала на входах ПЛК должен быть 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" не нужны. Они только вредят и запросто могут вызывать ошибку счёта.
Честное слово, я даже не хочу вчитываться, если есть нормальный и простой вариант в одну строку.
Поэтому никакие "сбросы по 50000" не нужны. Они только вредят и запросто могут вызывать ошибку счёта.
Честное слово, я даже не хочу вчитываться, если есть нормальный и простой вариант в одну строку.
Спасибо Вам, за обед прочитал в архивах форума про WORD_TO_INT, попробую у себя этот пример!
Зачем было 27 В подавать на дискретные входы. Надо подавать ровно 24 В. Дискретные входы ПЛК110 будут нормально работать при напряжении от 12 до 30 В. Какое сопротивление стоит в коллекторе КТ815 ?
Энкодер у вас исправен ?
На дискретный вход поступает 24В, а для того чтобы исключить полностью все разногласия подняли 27 В на вход самодельной платы развязки, где за счет работы делителя немного падает напряжение. Энкодер исправен и по осцилограмме видно, да и датчикам лет 20 точно, они немецкие, не Китай, ROD426 - Heidenhain, это очень хорошие немецкие энкодеры, хоть и возраст есть, но они нас еще переживут при бережном обращении
На дискретный вход поступает 24В, а для того чтобы исключить полностью все разногласия подняли 27 В на вход самодельной платы развязки, где за счет работы делителя немного падает напряжение.
Лишнее все это. Какое сопротивление стоит в коллекторе КТ815 ?
В идеале надо так, но элементов многовато получается.
Лишнее все это. Какое сопротивление стоит в коллекторе КТ815 ?
прикладываю пейзаж гогена. Такой получился согласовательный узел, т.к. у меня общий минус и делитель в ПЛК тоже играется, уже было желание разобрать контроллер и убрать оттуда этот делитель и подать на оптопару непосредственно с энкодера сигналы ттл 5 В и все было бы пучком.!
Кстати, это предложение разработчикам контроллера, почему бы не предусмотреть внутри корпуса ПЛК джампер, на три положения, чтобы можно было выбирать необходимый для себя уровень сигнала, типа 5В, 12В и 24В!
28464
прикладываю пейзаж гогена. Такой получился согласовательный узел, т.к. у меня общий минус и делитель в ПЛК тоже играется, уже было желание разобрать контроллер и убрать оттуда этот делитель и подать на оптопару непосредственно с энкодера сигналы ттл 5 В и все было бы пучком.!
Кстати, это предложение разработчикам контроллера, почему бы не предусмотреть внутри корпуса ПЛК джампер, на три положения, чтобы можно было выбирать необходимый для себя уровень сигнала, типа 5В, 12В и 24В!
28464
Не надо подавать 27В, а надо 24В и греться будет меньше.
Не надо подавать 27В, а надо 24В и греться будет меньше.
все это понятно. подали 27 В чтобы на выходе уже иметь амплитуду 24В, а если подаем 24 - то и выход меньше, и тут же на форуме бы начали говорить, что вот мол не добрал пару вольт и все сыпится
и тут же на форуме бы начали говорить, что вот мол не добрал пару вольт и все сыпится
Не надо слушать всякий бред, а надо опираться на собственные знания и опыт, а также читать РЭ на ПЛК. Я тоже утверждаю, что подавать 27 В не надо. Вольд правильно говорит и рисует.
Не надо слушать всякий бред, а надо опираться на собственные знания и опыт, а также читать РЭ на ПЛК. Я тоже утверждаю, что подавать 27 В не надо.
Всякий бред я читаю, при необходимости иногда что-то полезное оттуда вытягиваю, просто лишнее фильтровать нужно.
А 27 В - это был эксперимент, в итоге станок до сих пор работает с сигналами в виде гребенки на ПДИ5-4 и подаем нормальные 24 В, а эту самодельную плату буду ставить после праздников и как писал ранее каждый из 4-х быстрых входов проверять в режиме быстрых счетчиков.
Всякий бред я читаю, при необходимости иногда что-то полезное оттуда вытягиваю, просто лишнее фильтровать нужно.
А 27 В - это был эксперимент, в итоге станок до сих пор работает с сигналами в виде гребенки на ПДИ5-4 и подаем нормальные 24 В, а эту самодельную плату буду ставить после праздников и как писал ранее каждый из 4-х быстрых входов проверять в режиме быстрых счетчиков.
Кто вас надоумил использовать ПДИ5-4 ? На осциллограмму смотреть страшно. Плохо вы фильтруете информацию. ;)
Кто вас надоумил использовать ПДИ5-4 ? На осциллограмму смотреть страшно. Плохо вы фильтруете информацию. ;)
Стоимость ПДИ5-4 рублей 500-600, точно не помню, ерунда в общем. Мне просто интересна была сама схемотехника, и на что способна плата эта, обычный спортивный интерес. А так до закупа я вел переписку с производителями компании, с инженерами ихними, я точно знал что эта плата не для ПЛК110-60 и был заранее предупрежден об этом. Немного умолчал ранее, до ПДИ5-4 был пробный пуск на ПЛК110-32 с развязкой на PC814, на скоростях до 3 кГц все работало, не думал что для этого станка нужно 50 кГц. И т.к. это первая моя работа с ПЛК - соответственно много косяков, вопросов и т.д.....
Вообще то да, и на любой вкус, штука очень распространённая.
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 транзисторами нет ?
Всех с прошедшими праздниками!
К сожалению из-за большого накопленного объема работ с применением данного станка эксперименты на нем не могу проводить в ближайшие дни. В том виде как есть на нем стругают сутками, бьют по рукам при попытке что-то поменять в программе, мол и так 1,5 года отстояла, пусть так хотя бы пашет.
У меня возник детский вопрос, простите конечно, но задам, что-то поиском не смог найти именно для меня нужную информацию.
Как писал ранее, для визуализации использую обычный компьютер, частями уложил его внутренности в панель оператора и хотелось бы вывести текущую дату и время именно с компьютера на монитор, как это в ST коде прописать? заранее спасибо!
Потерей сигналов не может являться старая версия таргет-файла и прошивки? Как получил ПЛК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кгц.
При этом большое количество энкодеров или сильно скоростные импупульсные источники счета подключаются
к специальным счетным модулям, с гарантированной скоростью обработки сигналов.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot