2 мотора на одной оси LinuxCNC 2.8 HAL и INI от чайника
Добавлено: 28 июл 2020, 17:14
Пишу для себя ,что бы не хранить в голове и если надо быстро вспомнить ,а так же для всех, кто при приготовлении «салата» предпочитает не знать про «пестики» и «тычинки», а резать сразу «огурчики» и «помидорчики» (шутка)!
Мой станок с двумя моторами по Y уже год работает на Linux CNC 2.7.14 + народная LPT плата ,в конфигураторе продублировал ось Y и всё. Но время идёт, ноут старенький ,не абгрейдится ваще, хочу поменять и обновить Linux соответственно ,да ещё MPG пульт свербит прикрутить. С появлением новых технологий с использованием микрокомпьютеров http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=16788 открываются новые возможности в этом направлении. Но есть «небольшой» упор в достижении цели ,это чтение доков и изучение Linux . На зарубежном форуме Linux CNC один не специалист в 2017м году доступным языком (google translate) объяснил как настроить HAL и INI файлы для работы 2х и более моторов на одной оси . Я и раньше читал эту ветку ,но мой мозг тогда ещё не был так повреждён линуксом и я ни черта не понял. Теперь попробовал и получилось !
Попробую пересказать (себе) как это делается пошагово (это мой случай -2 мотора на Y).
1.Степконфигвизарда для версии 2.8 специального похоже нет совсем . Пишут что 2.8 заточена для работы с двумя моторами на оси ,но признаков этого ни где я не увидел. Однако с его помощью легко делается заготовка конфига для редактирования. Настраиваем простой конфиг на 3 оси XYZ и получаем файлы HAL и INI. Основа для понимания это распечатать файлы на бумаге и положить перед собой!
2.Берём INI файл
Изменяем раздел
[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYYZ
Дальше копируем раздел [JOINT_1] и вставляем ниже через пустую строку
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -1080.0
MAX_LIMIT = 0.001
MAX_VELOCITY = 11.4182692308
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 1280.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 5.000000
HOME_SEARCH_VEL = 50.000000
HOME_LATCH_VEL = 0.390625
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
Во вставленном изменяем 1 на 2
[JOINT_2]
Все остальные цифири будут ваши (мои) из конфига
[JOINT_2] для Z изменяем на [JOINT_3]
HOME_SEQUENCE = ? это очерёдность «хоумления» 0,1,2 .Для оси с двумя моторами номер должен быть одинаковым , если поставить знак минус перед номером должно синхронизировать моторы по двум датчикам лимита (не проверял )
INI готов!
3.Берём HAL ,в строке добавляем ещё «,0» для четвёртого мотора
loadrt stepgen step_type=0,0,0
Вот в этой группе строк
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ymstep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ymdir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
net xenable => parport.0.pin-14-out
net ysstep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net ysdir => parport.0.pin-09-out
net max-home-x <= parport.0.pin-12-in-not
net min-home-ym <= parport.0.pin-13-in-not
net min-home-ys <= parport.0.pin-11-in-not
net min-home-z <= parport.0.pin-15-in-not
Добавлены это
net ysstep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net ysdir => parport.0.pin-09-out
и это
net min-home-ys <= parport.0.pin-11-in-not (надеюсь видно куда?)
и изменены имена «y» на «ym» и «уs» типа мастер и славе ,но могут быть любые.
Что бы инвертировать сигнал –добавить или удалить «-not»
далее копируем это
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 70000
setp stepgen.1.dirsetup 70000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ympos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net ympos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net ymstep <= stepgen.1.step
net ymdir <= stepgen.1.dir
net ymenable joint.1.amp-enable-out => stepgen.1.enable
net min-home-ym => joint.1.home-sw-in
net min-home-ym => joint.1.neg-lim-sw-in
тут уже изменено «у» на «уm»
и вставляем ниже через пустую строку и изменяем так
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 70000
setp stepgen.2.dirsetup 70000
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net yspos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
net yspos-fb stepgen.2.position-fb => joint.2.motor-pos-fb
net ysstep <= stepgen.2.step
net ysdir <= stepgen.2.dir
net ysenable joint.2.amp-enable-out => stepgen.2.enable
net min-home-ys => joint.2.home-sw-in
net min-home-ys => joint.2.neg-lim-sw-in
Следующий кусок изменяем так
setp stepgen.3.position-scale [JOINT_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 70000
setp stepgen.3.dirsetup 70000
setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
net zpos-cmd joint.3.motor-pos-cmd => stepgen.3.position-cmd
net zpos-fb stepgen.3.position-fb => joint.3.motor-pos-fb
net zstep <= stepgen.3.step
net zdir <= stepgen.3.dir
net zenable joint.3.amp-enable-out => stepgen.3.enable
net min-home-z => joint.3.home-sw-in
net min-home-z => joint.3.neg-lim-sw-in
Все двойки на тройки и усё HAL готов!
При попытке подвигать осями у меня получилась жуть! X -поехала нормально ,Y- поехал один мотор , Z -поехал второй мотор от Y! Этот случай описан на Линукс форуме ,нужно сначала отхоумиться и потом оси едут как надо ,но так можно и портал загнуть ! Есть возможность перевести оси на ручное управление ,но это отдельный бубен в 4 строки в INI.
Вот ,вроде старался не ошибаться ,на вопрос почему так ,ответ : не знаю!
После редактирования ни в коем случае не запускать степконфигвизард для этого конфига !!!
Про пробелы и запятые я в курсе ,но…..
Мой станок с двумя моторами по Y уже год работает на Linux CNC 2.7.14 + народная LPT плата ,в конфигураторе продублировал ось Y и всё. Но время идёт, ноут старенький ,не абгрейдится ваще, хочу поменять и обновить Linux соответственно ,да ещё MPG пульт свербит прикрутить. С появлением новых технологий с использованием микрокомпьютеров http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=16788 открываются новые возможности в этом направлении. Но есть «небольшой» упор в достижении цели ,это чтение доков и изучение Linux . На зарубежном форуме Linux CNC один не специалист в 2017м году доступным языком (google translate) объяснил как настроить HAL и INI файлы для работы 2х и более моторов на одной оси . Я и раньше читал эту ветку ,но мой мозг тогда ещё не был так повреждён линуксом и я ни черта не понял. Теперь попробовал и получилось !
Попробую пересказать (себе) как это делается пошагово (это мой случай -2 мотора на Y).
1.Степконфигвизарда для версии 2.8 специального похоже нет совсем . Пишут что 2.8 заточена для работы с двумя моторами на оси ,но признаков этого ни где я не увидел. Однако с его помощью легко делается заготовка конфига для редактирования. Настраиваем простой конфиг на 3 оси XYZ и получаем файлы HAL и INI. Основа для понимания это распечатать файлы на бумаге и положить перед собой!
2.Берём INI файл
Изменяем раздел
[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYYZ
Дальше копируем раздел [JOINT_1] и вставляем ниже через пустую строку
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -1080.0
MAX_LIMIT = 0.001
MAX_VELOCITY = 11.4182692308
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 1280.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 5.000000
HOME_SEARCH_VEL = 50.000000
HOME_LATCH_VEL = 0.390625
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
Во вставленном изменяем 1 на 2
[JOINT_2]
Все остальные цифири будут ваши (мои) из конфига
[JOINT_2] для Z изменяем на [JOINT_3]
HOME_SEQUENCE = ? это очерёдность «хоумления» 0,1,2 .Для оси с двумя моторами номер должен быть одинаковым , если поставить знак минус перед номером должно синхронизировать моторы по двум датчикам лимита (не проверял )
INI готов!
3.Берём HAL ,в строке добавляем ещё «,0» для четвёртого мотора
loadrt stepgen step_type=0,0,0
Вот в этой группе строк
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ymstep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ymdir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
net xenable => parport.0.pin-14-out
net ysstep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net ysdir => parport.0.pin-09-out
net max-home-x <= parport.0.pin-12-in-not
net min-home-ym <= parport.0.pin-13-in-not
net min-home-ys <= parport.0.pin-11-in-not
net min-home-z <= parport.0.pin-15-in-not
Добавлены это
net ysstep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net ysdir => parport.0.pin-09-out
и это
net min-home-ys <= parport.0.pin-11-in-not (надеюсь видно куда?)
и изменены имена «y» на «ym» и «уs» типа мастер и славе ,но могут быть любые.
Что бы инвертировать сигнал –добавить или удалить «-not»
далее копируем это
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 70000
setp stepgen.1.dirsetup 70000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ympos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net ympos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net ymstep <= stepgen.1.step
net ymdir <= stepgen.1.dir
net ymenable joint.1.amp-enable-out => stepgen.1.enable
net min-home-ym => joint.1.home-sw-in
net min-home-ym => joint.1.neg-lim-sw-in
тут уже изменено «у» на «уm»
и вставляем ниже через пустую строку и изменяем так
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 70000
setp stepgen.2.dirsetup 70000
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net yspos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
net yspos-fb stepgen.2.position-fb => joint.2.motor-pos-fb
net ysstep <= stepgen.2.step
net ysdir <= stepgen.2.dir
net ysenable joint.2.amp-enable-out => stepgen.2.enable
net min-home-ys => joint.2.home-sw-in
net min-home-ys => joint.2.neg-lim-sw-in
Следующий кусок изменяем так
setp stepgen.3.position-scale [JOINT_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 70000
setp stepgen.3.dirsetup 70000
setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
net zpos-cmd joint.3.motor-pos-cmd => stepgen.3.position-cmd
net zpos-fb stepgen.3.position-fb => joint.3.motor-pos-fb
net zstep <= stepgen.3.step
net zdir <= stepgen.3.dir
net zenable joint.3.amp-enable-out => stepgen.3.enable
net min-home-z => joint.3.home-sw-in
net min-home-z => joint.3.neg-lim-sw-in
Все двойки на тройки и усё HAL готов!
При попытке подвигать осями у меня получилась жуть! X -поехала нормально ,Y- поехал один мотор , Z -поехал второй мотор от Y! Этот случай описан на Линукс форуме ,нужно сначала отхоумиться и потом оси едут как надо ,но так можно и портал загнуть ! Есть возможность перевести оси на ручное управление ,но это отдельный бубен в 4 строки в INI.
Вот ,вроде старался не ошибаться ,на вопрос почему так ,ответ : не знаю!
После редактирования ни в коем случае не запускать степконфигвизард для этого конфига !!!
Про пробелы и запятые я в курсе ,но…..