а в чем проблема??shvv писал(а): визуализация присутствует только в симе, в "нормальном" станке её нет
вот создал на скорую руку конфиг вроде бы все работает
в чем подвох????
а в чем проблема??shvv писал(а): визуализация присутствует только в симе, в "нормальном" станке её нет
Это странно, я бы вообще эту скорость завязал на какую-нибудь дополнительную ось... На какой-нибудь thrust....verser писал(а):максимальная скорость перемещений задается жестко в joypad.hal, а было бы удобнее её привязать к той что выставляется слайдером во вкладке
Ишь ты оно как, я правда не совсем понял, где это задается... а не может это сам джойстик "засыпать"?verser писал(а):-после запуска программы LinuxCNC для корректной работы (чтобы оси самопроизвольно не стартовали при включении станка) надо перед включением станка пошевелить на джойстике оси X и Y (типа разбудить что ли) а уже после этого можно включать станок. Как то это неудобно
Код: Выделить всё
#------------------------------------------------------
# Set up X axis one-shot
#------------------------------------------------------
# To set up the jogs as a one-shot, we have to build a small Rube Goldberg machine.
# A window comparator will tell you if there IS a trigger, not which direction the
# pulse should go. That's where the invert output comes in.
# If the second comparator shows that we're in the lower half, then we offset the
# inverse of the pulse wave to get a negative pulse. We also use that second comparator
# to trigger the mux to determine whether to send a positive of negative pulse.
# All these conversions are required because the required components will only work with
# certain types of inputs. Edge detection sends out a bit, and a mux requires a float.
net Xwindow wcomp.0.in => deadzone.3.out
net Xwindow wcomp.1.in => deadzone.3.out
net XwindowInv not.0.in => wcomp.0.out
net Xedge edge.0.in => not.0.out
net Xupconv1 conv-bit-s32.0.in => edge.0.out
net Xupconv2 conv-s32-float.0.in => conv-bit-s32.0.out
net Xupconvinv1 conv-bit-s32.1.in => edge.0.out-invert
net Xupconvinv2 conv-s32-float.2.in => conv-bit-s32.1.out
net Xupconvinv3 offset.0.in => conv-s32-float.2.out
net Xjogleft mux2.3.in0 => conv-s32-float.0.out
net Xjogright mux2.3.in1 => offset.0.out
net XjogDirection mux2.3.sel => wcomp.1.out
net Xjoglink mux2.0.in1 => mux2.3.out
#At this point, mux2.0 has the one-shot Xpulse as one of the inputs.
Странно...verser писал(а):Максимальная скорость при управлении джойстиком у меня получается 959мм/мин и выше даже при увеличении коэф mux2.6.in0 не поднимается.
Так реализована одним махом возможность при зажатой кнопке base (для моего джойстика например) вместо плавного перемещения делать 1 шаг либо на расстояние mux2.6.in0(если выбрано "быстрое" перемещение кнопкой thumb2) или на расстояние mux2.6.in1(если было выбрано "медленное" перемещение кнопкой top).Nick писал(а):Кстати, для чего там такая хитрая система с mux.out => sim-encoder => encoder => jog.counts ??? Есть же jog по скорости...
verser писал(а):Работает неплохо, но хотелось бы улучшить пару моментов:-максимальная скорость перемещений задается жестко в joypad.hal, а было бы удобнее её привязать к той что выставляется слайдером во вкладке "Ручное управление [F3]";-после запуска программы LinuxCNC для корректной работы (чтобы оси самопроизвольно не стартовали при включении станка) надо перед включением станка пошевелить на джойстике оси X и Y (типа разбудить что ли) а уже после этого можно включать станок. Как то это неудобно.Думаю если это дружно подправить - получим идеальное решение для любого джойстика(только надо пины под свой джойстик переназначить)
А если в самом начале написать setp input.0.abs-rz-counts? хотя наверняка не поможет. Скорее всего надо это смотреть в компоненте input....verser писал(а):input.0.abs-rz-counts=127
Там вроде деления на position быть не должно... Скорее всего оно меняется согласно counts...verser писал(а):(не ноль чтобы избежать деление на 0 я так думаю)
Да, можно сначала только counts проинициировать.Nick писал(а):Там вроде деления на position быть не должно... Скорее всего оно меняется согласно counts...
Код: Выделить всё
163 for a in self.abs_items:
164 value = self.get(a + "-counts")
165 scale = self.get(a + "-scale") or 1
166 offset = self.get(a + "-offset")
167 position = (value - offset) / scale
168 self.set(a + "-position", position)
169 # Use .01 because my Joystick isn't exactly zero at rest. maybe should be a parameter?
170 self.set(a + "-is-neg", (position < -.01) )
171 self.set(a + "-is-pos", (position > .01) )
Как ни странно но offset при первом старте =511, с ним все в порядке, scale тоже = 511, (имеют тип IN)Nick писал(а):Может надо offset проинициировать в hal?