Страница 1 из 2
Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 19:44
Одессит
Здравствуйте.
Вот пришёл и мой черёд стать участником вашего сообщества.
Долго читал форум. На "Чипмейкере" "ваши" (наши!) помогали. Приятно.
Ладно. Хватит лирики.
Так уж получилось, что ось Z на фрезерном у меня инвертирована (понятие, конечно, относительное).
Напрягало меня это лишь в одном случае: при вращении штурвала ручного энкодера его направление не совпадало с направлением движения оси.
Я, конечно, победил.
Но как!
Это же аппендицит какой-то...
Подскажите, попроще переменных не предусмотрено?
Код: Выделить всё
#Штурвал
loadrt mux4 count=1
addf mux4.0 servo-thread
#Тип энкодера 1-квадратурный, 0-импульсный
setp encoder.3.x4-mode 1
#Vel. mode - 1, pos. mode - 0
setp axis.0.jog-vel-mode 0
setp axis.1.jog-vel-mode 0
setp axis.2.jog-vel-mode 0
#Селектор шага энкодера (множитель) мм.
setp mux4.0.in0 0.00125
setp mux4.0.in1 0.0025
setp mux4.0.in2 0.025
#Пины селектора шага
net scale1 mux4.0.sel0 <= parport.2.pin-10-in-not
net scale2 mux4.0.sel1 <= parport.2.pin-11-in-not
#Передача из mux4 к оси
net mpg-scale <= mux4.0.out
net mpg-scale => axis.0.jog-scale
net mpg-scale => axis.1.jog-scale
net mpg-scale => axis.2.jog-scale
#Пины входа энкодера
net mpg-a encoder.3.phase-A <= parport.2.pin-08-in
net mpg-b encoder.3.phase-B <= parport.2.pin-09-in
#Пины выбора оси
net mpg-x axis.0.jog-enable <= parport.2.pin-12-in-not
net mpg-y axis.1.jog-enable <= parport.2.pin-13-in-not
net mpg-z axis.2.jog-enable <= parport.2.pin-15-in-not
#Подключение выхода счётчика к оси. Ось двигается только при выборе
net encoder-counts <= encoder.3.counts
net encoder-counts => axis.0.jog-counts
net encoder-counts => axis.1.jog-counts
#net encoder-counts => axis.2.jog-counts
#Здесь инвертируем encoder-counts для оси Z
loadrt conv_s32_float count=1
loadrt conv_float_s32 count=1
loadrt mult2 count=1
addf conv-s32-float.0 servo-thread
addf conv-float-s32.0 servo-thread
addf mult2.0 servo-thread
net encoder-counts => conv-s32-float.0.in
net ASD1 conv-s32-float.0.out => mult2.0.in0
setp mult2.0.in1 -1
net ZCOUNT mult2.0.out => conv-float-s32.0.in
net ZCOUNTINV conv-float-s32.0.out => axis.2.jog-counts
Имею на виду часть после
#Здесь инвертируем encoder-counts для оси Z
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:10
PKM
Одессит, можно просто сменить А и В местами.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:14
Одессит
PKM писал(а):Одессит, можно просто сменить А и В местами.
Не проникся.
Физически? Да, я могу прицепить "инвертор", который будет переключать выходы энкодера при выборе оси Z.
Лично мне это проще, чем кнопки жать.
Но как-то пошло махать паяльником, когда клавиатура под рукой...
Или можно сменить программно?
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:16
PKM
Одессит писал(а):net mpg-a encoder.3.phase-A <= parport.2.pin-08-in
net mpg-b encoder.3.phase-B <= parport.2.pin-09-in
А вот же оно, поменять 08 и 09 местами
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:23
Одессит
PKM писал(а):А вот же оно, поменять 08 и 09 местами
Мне нужно менять "на ходу" для одной оси (переключателем выбора оси). Две оси едут в нужные стороны.
Наверное можно прописать логическую функцию подключения энкодера в зависимости от состояния переключателя выбора оси.
Воспримет ЕМС2 такой ход конём?
Да и сомневаюсь, что это будет проще с т.з. написания.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:33
PKM
Аааа... вон оно что. Можно было еще инвертировать axis.2.jog-scale, что в принципе равносильно.
Могу ошибаться, но кажется, можно было это сменить в другом месте - например инвертировать пин DIR и в то же время сделать отрицательный SCALE по Z. И тогда энкодер не трогать.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:38
Одессит
PKM писал(а):Могу ошибаться,
Скорее ошибаться, т.к. изменять эти понятия в процессе работы нереально.
Да ладно. Работает и славно. Просто мне нравятся более короткие решения. Но я их найти не смог.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:40
PKM
Одессит писал(а):изменять эти понятия в процессе работы нереально
Зачем в процессе работы? Сменить раз и навсегда.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:44
Одессит
PKM писал(а):Одессит писал(а):изменять эти понятия в процессе работы нереально
Зачем в процессе работы? Сменить раз и навсегда.
Поясню.
Так уж я построил этот станок (или он меня), что в процессе выполнения программы всё едет куда надо.
И лишь со штурвалом (в ручном режиме) приключился казус.
Так что менять не выйдет. Уже оброс привычками.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:46
PKM
Одессит писал(а):в процессе выполнения программы всё едет куда надо
Так я это и учитываю. Если сменить DIR и SCALE - будет ехать по-прежнему.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 20:58
Nick
Так я это и учитываю. Если сменить DIR и SCALE - будет ехать по-прежнему
Но похоже, он будет так же по прежнему ехать и от mpg

.
Тут скорее всего то, что Одессит написал - самый простой вариант... Может еще чуть проще будет, если менять не counts, а axis.2.jog-scale, т.к. он уже во float, т.е. минус conv-s32-float и conv-float-s32.0.in...
ЗЫ А вообще, ты крутишь точно так же штурвал а циферки на оси едуд в другую сторону? Или просто вращаешь вправо и хочешь, что бы ось ехала вниз, т.е. в минус, влево - вверх, т.е. в плюс?
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:00
Одессит
PKM писал(а):Одессит писал(а):в процессе выполнения программы всё едет куда надо
Так я это и учитываю. Если сменить DIR и SCALE - будет ехать по-прежнему.
Так точно не получится.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:01
PKM
Nick писал(а):Но похоже, он будет так же по прежнему ехать и от mpg .
Вполне возможно

Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:06
Одессит
Nick писал(а):А вообще, ты крутишь точно так же штурвал а циферки на оси едуд в другую сторону? Или просто вращаешь вправо и хочешь, что бы ось ехала вниз, т.е. в минус, влево - вверх, т.е. в плюс?
Совершенно верно.
Затея началась с того, что нынче приняты фрезерные станки с подвижным по Z ШПИНДЕЛЕМ, а у меня двигается СТОЛ.
Поэтому положительное направление перемещения стола в моём случае - вниз.
А я хочу, чтобы направление вращения штурвала совпадало с направлением вращения железных штурвалов станка. Чтобы не путаться. Т.е. крутим по часовой стрелке - стол поднимается. Хотя циферки таки уменьшаются.
Я же росту из обычного "ручного" станка.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:12
Одессит
И ещё.
Ткните пожалуйста носом в тему (темы) про обнуление координат в главном окне (Вид). Точно читал, но найти не могу.
Дабы можно было принудительно указать Home position (командой, или внешней кнопкой).
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:15
PKM
Nick писал(а):Но похоже, он будет так же по прежнему ехать и от mpg .
Подумал, не факт. Ведь SCALE действует на генератор шагов, а не на значение координаты по оси. А энкодер изменяет именно координату.
Одессит, ну проверь, это же не займет долго - инвертировать пин и поставить "-" перед SCALE.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:17
Одессит
PKM писал(а): ну проверь,
Да я уже проверил. Не получилось.
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 21:51
Nick
PKM писал(а):Подумал, не факт. Ведь SCALE действует на генератор шагов, а не на значение координаты по оси. А энкодер изменяет именно координату.
Одессит, ну проверь, это же не займет долго - инвертировать пин и поставить "-" перед SCALE.
Какая разница все это происходит уже прямо при выводе на шаговик, т.е. ручное перемещение и перемещение от motion никак не будут отличаться, но идея занятная

.
Одессит писал(а):Ткните пожалуйста носом в тему (темы) про обнуление координат в главном окне (Вид).
Если хомяков нет - то просто жмешь home и это должно стать home, если тебе надо сказать что-то вроде g92 кнопочками, это TouchOff - кнопка рядом с home/
Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 03 окт 2013, 22:19
Одессит
Nick писал(а):просто жмешь home и это должно стать home, если тебе надо сказать что-то вроде g92 кнопочками, это TouchOff - кнопка рядом с home
Если я просто жму Home, то активная ось ищет его.
Задача такова (извините, что повторяю то, что на этом форуме точно есть): на столе есть заготовка - приехали инструментом к нужному месту. Обозвали это место Home (показания линеек (в моём случае работаем с обратной связью) обнулились) - погнали пилить от него. Риск вылететь за рабочие пределы осознаю. Но это мой станок. Что хочу то и делаю

Re: Реверсирование оси при управлениии от ручного энкодера
Добавлено: 04 окт 2013, 00:31
Nick
А чем тебе не нравится G92 X0 Y0 Z0??? Зачем именно home, если можно просто координаты в 0 скинуть?