ну вы тут наваяли//. намудрили и все разрулили ))
Вам всем надо бросать писать конфиг через мастер, и начать писать вручную. Тогда будете понимать что к чему связывается.
А то вот рассуждаете тут: "да нам бы все готовое, нам бы чтобы кнопку одну нажать". А потом вижу у вас осутствие вообще понимания как работает ваш станок.
xenon-alien писал(а): ↑
А если это серва?
Она имеет возможность управляться по скорости, не только по позиции.
Или это никак не связано?
Есть управление осью по скорости и по позиции. По моменту не рассматриваем - нам оно не надо.
Есть управление мотором по аналогу и по импульсам.
и они не взаимосвязаны.
Входные сигналы в серву могут быть аналоговые (+/-10в, +10в/дир, +/-5в и тп). То есть по двум проводам подается 0-10В для прямого вращения, -10-0 для обратного. Где +/-10в максимальная скорость. Так же может быть скорость по одному каналу, а направление по второму (как у степ/дир).
А есть цифровые - степ/дир типа..Ну там на самом деле в серве варивантов полно - можно как шаговики, можно как энкодеры, можно... их кажется 6 или 8 версий.
Обычно, именно обычно. И в целом сама LinuxCNC управляеn осями по скорости. ЧПУ задает скорость перемещения оси и сама по датчику обратной связи (энкодеру) контролирует где СЕЙЧАС ось. Таким образом выбирает ЗАДАННУЮ скорость вращения вала мотора. Поэтому нужен PID.
В самой серве тоже есть PID - его надо настроиться, чтобы без внешнего управления не было вибраций и ускорение было достаточным для ваших задач. Потом уже PID в ЧПУ подгоняется под заданные вами в конфиге скорости и ускорения.
Положение управляется не так же как шаговики.
alex_sar писал(а): ↑
тогда можно в режиме позиционирования шаги не высчитывать, а выдавать частоту шагов пропорционально рассогласованию текущей координаты расчётной.
именно так и происходит. в режиме SD на серву просто выдается поток импульсов с заданной частотой, и ожидается когда серва повернется. При чем если ты отключишь серву, и нажмешь перемещение на 0.1мм - то ошибки рассогласования не будет никогда. Просто сигналы будут шпарить до тех пор, пока что-то их не прикажет отключить.
То что серва принимает SD еще не означает что она считает импульсы и поворачивается так как шаговый мотор.
Она считает импульсы и поворачивается, но импульсы генерятся не так как в варианте домашнего фрезера или 3д принтера. Сигнал генерится пока серва не переместится в указанное положение. именно импульсы генерятся.
Да можно задать 10к импульсов на 1 оборот вала сервы. Но это лишь точность ее поворота и максимальная скорость. Сможет ли ваш комп сгенерить 120кГц для обеспечения вращения мотора на скорости 12об/сек. А это лишь 720об/мин.
С шаговиками вообще не так. Вы задаете количество импульсов на 1 оборот вала или 1 мм хода оси. И ЧПУ генерит 1 импульс и двигает на экране на указанное значение. При этом ЧПУ ничего не знает о том, есть ли мотор вообще. Работает ли он, или пропускает шаги.
Поэтому при наличии энкодера, даже шаговики уже работают в режиме скорости. Просто драйвер шаговика это лишь усилитель, он просто принимает сигналы с контроллера(порта) и превращает их в силовые сигналы подаваемые на обмотки.
Серва же принимает сигнал и анализируя кучу параметров пропускает все через свою логику уже потом выдает ток на мотор.
antoxa-kylibin писал(а): ↑
потому что генерация сигналов не будет привязана к позиции оси..... Я как раз походу на эти подводные камни и нарвался в своём проекте.....
Не совсем. Часть ответа выше. Плюсом:
Ты задаешь в конфиге обратную связь, софтовым энкодером. То есть ты жестко завязываешь генератор импульсов на поворот оси. Вот ты же сам в степконфиге задаешь количество импульсов на оборот. При этом связываешь выход оси joint со входом степгена, а его уже со портом LPT или что у вас там. И у степгена берешь обрятную связь и заводишь ее в joint.
А для сервы joint связывается с портом контроллера напрямую.
Суть в том, что JOINT дает "аналоговый" сигнал, то есть там числовое значение. СтепГен по нему генерит сигналы и считает каждый сигнал в фидбэк.
Контроллер (меса, пинцет и тп) генерят по числу от joint либо имульсы либо уровень напряжения.
antoxa-kylibin писал(а): ↑
Ну да, серва либо рулится в режиме step/dir (по сути управление по позиции, ещё встречается терминология управление по моменту двигателя) и в этом случае обратная связь не нужна, либо +-10в аналог и это уже режим управления по скорости. Но управление по скорости подразумевает контроль этой скорости, со стороны linuxcnc, потому и обратная связь нужна и pid и танцы с бубном чтобы это настроить ещё....
вам бы теорию управления серв почитать. Есть скорость, есть позиция, есть момент. Но по факту, момент < скорость < позиция.
То есть для движения нам надо подать указанное в настройках значение тока, но не более чем задано. Подаем минимум, не едем? подаем еще больше и это пофакту PID в некотром роде. Скажем серва должна удерживать натяжение ленты с заданным усилием, не ослаблять и не рвать. Вот и будет держать.
Для управления по скорости - ЧПУ генерит сигнал (напряжение или импульсы) для вращения с заданной скоростью. Мотор двигает, ЧПУ контролирует перемещение по энкодеру, корректируя скорость.
Позиция - ну в целом это как и по скорости, но драйвер сервы БОЛЕЕ автономен. Ему дается сигнал движения, но он сам контролирует качество движения и удержание позиции. да это похоже на шаговики, но совсем не так.