Внедряем LinuxCNC в массы

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение alex_sar »

xenon-alien писал(а): но я тупо не понимаю, что за что отвечает и какой пин к чему подключать...
Надо взять готовый конфиг, который знаешь как работает, и зарисовать схему на бумаге.
Какие компоненты загружаются (квадратиками), какие у них входные и выходные пины с чем соединяются ("net" как раз и есть соединение, один выход может идти на много входов, но не наоборот).

Там в hal файле всего-то четыре команды используется - загружаются компоненты, добавляются их обработчики и собственно соединения.

Где непонятно, открываешь man на компонент и читаешь как работает и какие пины у него. Например man motion, man and2

И ясность появится. Там правда не сложно, очень красиво придумано!
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

alex_sar писал(а): Где непонятно, открываешь man на компонент и читаешь как работает и какие пины у него. Например man motion, man and2

И ясность появится. Там правда не сложно, очень красиво придумано!
Не правда! (в моем случае - тугодум и мало знаний)
Не раз смотрел и ничегошеньки непонятно.
Вот припер мануала генератора ШИМ

Код: Выделить всё

arisc.pwm HAL pins
arisc.pwm.N.enable	(bit, in)	channel ON/OFF (1/0). Default is 0.
· · ·
arisc.pwm.N.pwm-port	(u32, in)	GPIO port number (0..7) for PWM signal.
arisc.pwm.N.pwm-pin	(u32, in)	GPIO pin number (0..23) for the PWM signal.
arisc.pwm.N.pwm-invert	(bit, in)	invert the PWM signal? (0/1). Default is 0.
· · ·
arisc.pwm.N.dir-port	(u32, in)	GPIO port number (0..7) for PWM signal.
arisc.pwm.N.dir-pin	(u32, in)	GPIO pin number (0..23) for the DIR signal.
arisc.pwm.N.dir-invert	(bit, in)	invert the DIR signal? (0/1). Default is 0.
arisc.pwm.N.dir-hold	(u32, io)	minimal pause (in nanoseconds) between last PWM pulse and a DIR signal change. Default is 50000 ns.
arisc.pwm.N.dir-setup	(u32, io)	minimal pause (in nanoseconds) between DIR signal change and next PWM pulse. Default is 50000 ns.
· · ·
arisc.pwm.N.dc-cmd	(float, in)	desired duty cycle (-1..1). 1 = 100%. Default is 0.
arisc.pwm.N.dc-min	(float, io)	minimum duty cycle. If dc-fb < dc-min, real duty cycle will be set to dc-min. Default is -1.
arisc.pwm.N.dc-max	(float, io)	maximum duty cycle. If dc-fb > dc-max, real duty cycle will be set to dc-max. Default is 1.
arisc.pwm.N.dc-max-t	(u32, io)	maximum time (in nanoseconds) of a PWM pulse duration. If value is 0, value is ignored. Default is 0.
arisc.pwm.N.dc-offset	(float, io)	simple offset for the desired duty cycle value. Default is 0.
arisc.pwm.N.dc-scale	(float, io)	simple scale multiplier for the desired duty cycle value. Default is 1.
arisc.pwm.N.dc-fb	(float, out)	real duty cycle feedback = dc-cmd / dc-scale + dc-offset. Then value will be limited by the dc-min, dc-max and dc-max-t values.
· · ·
arisc.pwm.N.freq-cmd	(float, io)	desired PWM frequency (in Hz). Default is 0.
arisc.pwm.N.freq-min	(float, io)	minimum PWM frequency (in Hz). If freq-fb < freq-min, real frequency will be set to 0. Default is 50 Hz.
arisc.pwm.N.freq-max	(float, io)	maximum PWM frequency (in Hz). If freq-fb > freq-max, real frequency will be set to freq-max. Default is 500000 Hz.
arisc.pwm.N.freq-fb	(float, out)	real PWM frequency feedback.
· · ·
arisc.pwm.N.vel-cmd	(float, in)	desired velocity (in movement units/second). Default is 0.
arisc.pwm.N.vel-scale	(float, in)	simple scale multiplier for the desired velocity value. Default is 1.
arisc.pwm.N.vel-fb	(float, out)	real velocity feedback (in movement units/second).
· · ·
arisc.pwm.N.pos-cmd	(float, in)	desired position (in movement units). Default is 0.
arisc.pwm.N.pos-scale	(float, in)	number of PWM pulses per movement unit. Default is 1.
arisc.pwm.N.pos-fb	(float, out)	real position feedback in movement units.
· · ·
arisc.pwm.N.counts	(s32, out)	real position feedback in PWM pulses.
Как узнать что куда подключить, что бы шпиндель работал по степ/дир?
Пример для осей

Код: Выделить всё

loadrt motion base_period_nsec=50000 servo_period_nsec=1000000 num_joints=1
loadrt arisc pwm=p

setp arisc.pwm.0.pos-scale    [AXIS_0]SCALE
setp arisc.pwm.0.pwm-port     0   # 0=PA
setp arisc.pwm.0.pwm-pin      12  # PA12
setp arisc.pwm.0.pwm-invert   0
setp arisc.pwm.0.dir-port     0   # 0=PA
setp arisc.pwm.0.dir-pin      11  # PA11
setp arisc.pwm.0.dir-invert   0

net x-enable   arisc.pwm.0.enable   joint.0.amp-enable-out
net x-pos-cmd  arisc.pwm.0.pos-cmd  joint.0.motor-pos-cmd
Пока что так сделал, но не проверял, что дает на выходе..
Но там свои приколы, не говоря о том, что находил конфигурацию для токарного с 4 шт ШИМ (видимо xyz и шпиндель)
Потом ещё не совсем понимаю разницу шим=p,v... (позиция, скорость и ещё что-то там есть)
В серве тоже есть управление: позиция, скорость и момент.
Какая разница? На что влияет? :think:
alex_sar писал(а): Там в hal файле всего-то четыре команды используется - загружаются компоненты, добавляются их обработчики
Вот с этим я разобрался
alex_sar писал(а): и собственно соединения.
А вот тут уже проблемы...

К примеру вот для карт МЕСА пояснение (но там свои обработчики, или как их там и "подключение" к пинам упрощенное)
https://youtu.be/BKVSvPLVmcs

А как ШИМ заставить подобным образом работать для LPT, или для того же arisc.pwm
Пока что для меня тёмный лес, что подавать на входы выходы пинов.
alex_sar писал(а): "net" как раз и есть соединение, один выход может идти на много входов, но не наоборот).
Про соединения уже читал и как отсоеденять, если что не нужно.
А вот это
alex_sar писал(а): надо взять готовый конфиг, который знаешь как работает, и зарисовать схему на бумаге.
Для меня уже тёмный лес....
Где гарантия, что я правильно зарисую схему и ещё больше не запутаю себя?
Я даже с простым Scalе не разобрался ещё... (не горит, но методом проб и ошибок подбираю...)

Как в детстве не понимал, как работает транзистор по одному проводу - ну на схеме то проводок один. А оказывается второй "заземлён"...
Тут наверное тоже не всё так сложно, но есть нюансы...
Последний раз редактировалось xenon-alien 03 июн 2022, 22:13, всего редактировалось 7 раз.
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

iMaks-RS писал(а): Аппаратно придётся применить для привода серву, хотя-бы с энкодером 2500, возможно даже с тормозом.. инкрементый всё-таки будет жирно..
Настроить её на два режима работы. Режимы переключать в ручную и запускать другую конфигурацию LinuxCNC, которая при старте будет переключать режимы на драйвере. Либо из области фантастики, (для меня) - допилить построцессор так, что в зависимости от режима, управлять портами IO и переключать серву. Наверняка это можно сделать, но я такими задачи перед собой не ставил.
Зачем так извращаться, если всё силами ЛЦНЦ можно реализовать? (Левша свой токарник собрал для точения и нарезания резьбы подобным образом)
Просто я не знаю как....
Серва в наличии как раз-таки для тестов.
На днях спаял провод для связи с ПК. Буду пробовать знакомиться с настройками и самой сервой. (пока только ШД и гибриды использовал)
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

Так если вам нужно заставить работать серву в режиме step/dir, то и компонент нужно использовать не шим генератор, а степ генератор. stepgen вроде название у него. Но судя по вашему примеру конфиг, это шим генератор который на сопроцессоре Orange pi работает. Там должен быть и степ генератор под сопроцессор. Вот нужно с ним и разбираться. И внимательно изучить видосы talla83. Он достаточно подробно все объясняет. Яндекс браузер и функцию перевода видео на ютубе в руки, все станет понятнее....
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

antoxa-kylibin писал(а): Так если вам нужно заставить работать серву в режиме step/dir,
Для шпинделя.
antoxa-kylibin писал(а): это шим генератор который на сопроцессоре Orange pi работает. Там должен быть и степ генератор под сопроцессор.
Пример ШИМ-ки для оси (step/dir).
antoxa-kylibin писал(а): И внимательно изучить видосы talla83. Он достаточно подробно все объясняет. Яндекс браузер и функцию перевода видео на ютубе в руки, все станет понятнее....
Весь "прикол" в том, что инженерные и физические и прочие слова тоже не понятны, как к примеру...
xenon-alien писал(а): Но там свои приколы, не говоря о том, что находил конфигурацию для токарного с 4 шт ШИМ (видимо xyz и шпиндель)
Потом ещё не совсем понимаю разницу шим=p,v... (позиция, скорость и ещё что-то там есть)
В серве тоже есть управление: позиция, скорость и момент.
Какая разница? На что влияет?
И куча примитивных вопросов. Режим позиции, но управление моментом, или скоростью, или позицией, ну и т.д.... (или на оборот)
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение mikehv »

Stepgen надо использовать конечно. Конфигурировать его на две оси дополнительных. Одна по скорости, другая по позиции. Переключать энейблом
Пример чисто шпинделя по скорости
https://forum.linuxcnc.org/49-basic-con ... e-step-dir
Сначала сделай это, потом научимся переключать
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

mikehv писал(а): 03 июн 2022, 22:21 Stepgen надо использовать конечно. Конфигурировать его на две оси дополнительных. Одна по скорости, другая по позиции. Переключать энейблом
Пример чисто шпинделя по скорости
https://forum.linuxcnc.org/49-basic-con ... e-step-dir
Сначала сделай это, потом научимся переключать
Эта ссылка уже пару месяцев открыта в отдельной вкладке браузера...
ЛПТ порта нет, так что трудно будет...
Вот ссылка, с чем есть возможность работать...
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

Talla83 на видосе же рассказывает, в каких случаях и в каких режимах работает компонент stepgen. Когда просто нужно крутить шпиндель с заданной скоростью, то stepgen работает в режиме "управление по скорости", когда нужно ориентацию шпинделя сделать, то ещё включается pid регулятор. Если опять дать команду крутить с заданной скоростью, то pid уже не используется....Там на самом деле он с компонентами прикольно намудрил, надо глянуть его видос как он по аналогу настраивал серву, скорее всего там всю логику работы и рассказывает.
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

antoxa-kylibin писал(а): Когда просто нужно крутить шпиндель с заданной скоростью, то stepgen работает в режиме "управление по скорости", когда нужно ориентацию шпинделя сделать, то ещё включается pid
Есть ещё и "управление позицией"
Какая между ними разница, и для чего их столько?
Ну и stepgen-а нет в проекте для апельсины... Как быть?
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

Надо MX_Master спрашивать где у него в драйвере stepgen спрятан..... Я так понял что он просто использует arisc.gpio в качестве входных/выходных пинов.... Может просто нет в документации описания по step/dir режиму работы....но он должен быть, речь об этом была, когда он брался за написание драйвера.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение MX_Master »

Если у ШИМ генератора не трогать скважность, а менять только частоту, получается генератор шагов. Направление в обоих случаях регулирует отдельный пин
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

MX_Master писал(а): 03 июн 2022, 22:50 Если у ШИМ генератора не трогать скважность, а менять только частоту, получается генератор шагов. Направление в обоих случаях регулирует отдельный пин
А что так можно?
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

xenon-alien писал(а): Есть ещё и "управление позицией"
Ну да, есть 2 режима. Управление по скорости и управление по позиции. Как я понял, разница в том что при управлении по скорости stepgen генерирует сигналы исходя из заданной скорости. А при управлении по позиции, stepgen генерирует сигналы исходя из заданной позиции оси, т. е. в этом случае есть жёсткая привязка к количеству импульсов, которые stepgen должен выдать, чтобы переместить ось в заданную позицию. Поэтому для работы с шаговиками и рекомендуется использовать управление по позиции.
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

antoxa-kylibin писал(а): Поэтому для работы с шаговиками и рекомендуется использовать управление по позиции.
А если это серва?
Она имеет возможность управляться по скорости, не только по позиции.
Или это никак не связано?
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение alex_sar »

xenon-alien писал(а): 04 июн 2022, 16:48
antoxa-kylibin писал(а): Поэтому для работы с шаговиками и рекомендуется использовать управление по позиции.
А если это серва?
Она имеет возможность управляться по скорости, не только по позиции.
Или это никак не связано?
обычно на лету это не переключается в настройках сервы. или так или так.
если серва подключена по скорости, надо выдавать ей с компа +-10V, а в комп заводить обратную связь с энкодера. в linuxcnc настроить pid и таки-да, будет всё работать. под шпиндель выдавать постоянную скорость, а под позиционирование включать pid.

имхо, проще со step-dir разобраться. выдавать либо постоянный пульс через pwm, либо нужный для позиционирования. переключать через mux2
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

alex_sar писал(а): под шпиндель выдавать постоянную скорость, а под позиционирование включать pid.
Если я правильно понял, то управление по позиции боле точное в stepgen, а если использовать тот же stepgen только по скорости, то нужна обратная связь и pid, даже если управляется по степ/дир.
Я как-то под видео Талла83 спрашивал про шпиндель степ/дир (ещё в начале моего пути ЛЦНЦ) и он ответил, что серву нужно переключить в режим скорости, что бы использовать ориентацию и просто обороты...
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

Ну да, серва либо рулится в режиме step/dir (по сути управление по позиции, ещё встречается терминология управление по моменту двигателя) и в этом случае обратная связь не нужна, либо +-10в аналог и это уже режим управления по скорости. Но управление по скорости подразумевает контроль этой скорости, со стороны linuxcnc, потому и обратная связь нужна и pid и танцы с бубном чтобы это настроить ещё....
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение antoxa-kylibin »

xenon-alien писал(а): Если я правильно понял, то управление по позиции боле точное в stepgen, а если использовать тот же stepgen только по скорости, то нужна обратная связь и pid, даже если управляется по степ/дир.
Ну да, можно и step/dir задать режим по скорости, только нужно обратную связь использовать, потому что генерация сигналов не будет привязана к позиции оси..... Я как раз походу на эти подводные камни и нарвался в своём проекте.....
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение alex_sar »

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

тогда можно в режиме позиционирования шаги не высчитывать, а выдавать частоту шагов пропорционально рассогласованию текущей координаты расчётной.
а в режиме шпинделя просто выдавать частоту шагов пропорционально скорости.
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Внедряем LinuxCNC в массы

Сообщение xenon-alien »

alex_sar писал(а): кстати да, если использовать обратную связь, то можно использовать тот же pid и вот этот pwm генератор, который вам доступен.
Всё можно, только как ???
Упираюсь опять в связку пинов, которые не понимаю для чего предназначены, что на них подавать и снимать и куда направлять дальше...
Я только пользовался штатным конфигуратором, ну и копи/пастить умею, без осознанности. (ну чуток понимаю что и куда и для чего предназначено, но связи не понимаю)
Ответить

Вернуться в «LinuxCNC»