Maho 400p фрезерный станок по металлу (400x250x375)

Тяжелые фрезерные станки по металлу.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение mikehv »

Зачем использовать хоуминг внутри привода? Надо просто взять сигнал Z метки и хоумить средствами LCNC. Поставить любые датчики на дом, ехать до них, реверсироваться и ждать сигнал с Z метки. Классическая же схема. А так вообще не понятно
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

mikehv писал(а): Зачем использовать хоуминг внутри привода?
Мне казалось, что это более правильное решение :) .

Хотя с ним у меня появилось много нюансов, начиная от ALM и WARN (скорее ошибка выбора оборудования), и кончая тем, что при поиске дома (режим PR), контролер перестает контролировать станок. Получается экономия выходов\выходов, 3 входа (3 сигнала метки) и 2 выхода на запуск поиска дома (перевод в специальный режим и сам запуск поиска). И реализовать это просто.
mikehv писал(а): Надо просто взять сигнал Z метки и хоумить средствами LCNC. Поставить любые датчики на дом, ехать до них, реверсироваться и ждать сигнал с Z метки.
В таком случае нам понадобиться 6 входов (3 датчика, 3 сигнала метки), 3 выхода (хотя можно объединить команду запуска поиска нуля). Но решается проблема с ALM и WARN, а так же с контролем станка. Но пока не знаю, как реализовать.

Но мысль хорошая, это видимо не последняя моя ошибка :).
Спасибо!
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Нужно будет сохранить настройки сервоприводов осей в режиме поиска нуля (не факт, что она останется в конечном виде, вероятнее все буду использовать схему поиска 0-ля предложенную mikehv), вдруг пригодится.

Проверял винт по X с помощью оптических линеек Sino KA-300. На станке были родные оптические линейки Heidenhain LS803, но по X разбито стекло, по Y и Z их состояние как и состояние блока отображения не давали уверенности в том, что они показываю корректные значения.

Погрешность 12,5 соток на длине 330мм (не весь ход из-за линейки и ее крепления), люфт на гайке 19 соток. Надо возвращаться к поиску винтов или ШВП.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение mikehv »

tpolimer2000 писал(а): таком случае нам понадобиться 6 входов (3 датчика, 3 сигнала метки), 3 выхода (хотя можно объединить команду запуска поиска нуля)
Шесть входов и всё. Никакой команды запуска поиска нуля нет и не надо. Привод управляется по степ дир
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

mikehv писал(а): Шесть входов и всё. Никакой команды запуска поиска нуля нет и не надо. Привод управляется по степ дир
Да, ошибся.

Там другой принцип, при получении сигнала от датчика, он будет запускать поиск 0-ля по метке. В сервоприводе надо дать команду идти на 0, запутался.
Последний раз редактировалось tpolimer2000 03 май 2022, 13:42, всего редактировалось 1 раз.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение mikehv »

tpolimer2000 писал(а): 03 май 2022, 13:01
mikehv писал(а): Шесть входов и всё. Никакой команды запуска поиска нуля нет и не надо. Привод управляется по степ дир
Да, ошибся.

Там другой принцип, при получении сигнала от датчика, он будет запускать поиск 0-ля по метке. В сервоприводе надо дать команду идти на 0, запутался.
В сервопривод не надо никаких команд. Не нужна эта функция в станке. Управление сервой только по входам степ дир. Остальным занимается стойка
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

mikehv писал(а): В сервопривод не надо никаких команд. Не нужна эта функция в станке. Управление сервой только по входам степ дир. Остальным занимается стойка
Вроде бы понял.

Получается, что сервопривод постоянно отправляет все сигналы на внешних выходах энкодера (OA, OB, OZ). Нужно завести сигнал индуктивного датчика и сигнал OZ от сервопривода в Mesa и так для каждой из осей.

А дальше расписать логику поведения в LinuxCnc. Мы дошли по индуктивному датчику, после этого идем вперед или назад и ждем когда получим сигнал с выхода OZ сервопривода. В теории не сложно.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение mikehv »

tpolimer2000 писал(а): А дальше расписать логику поведения в LinuxCnc. Мы дошли по индуктивному датчику, после этого идем вперед или назад и ждем когда получим сигнал с выхода OZ сервопривода. В теории не сложно.
Всё так. Да и там расписывать то особо нечего. Все варианты описаны в мануале к ini файлу.
Еще можно в hal описать логику на простейших логических компонентах. например суммировать два сигнала и при наличии сигнала на обоих подать как обычный home.
Можно в Classicladder сделать логическую схемку с тем же суммированием.
Вариантов масса
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

mikehv писал(а): Все варианты описаны в мануале к ini файлу.
Нашел не плохое описание работы - https://linuxcnc.org/docs/html/config/i ... ple_layout. Так же есть на русском - https://www.cnc-club.ru/wiki/index.php/ ... 0.BA.D0.B0, путь не такое подробное.

Там же нашел ответ, почему LinuxCnc игнорирует мягкие лимиты, если использую пульт и кнопки в программе (но работают в G-коде). Вероятнее всего из-за настройки NO_FORCE_HOMING = 1 в файле ini.
mikehv писал(а): Еще можно в hal описать логику на простейших логических компонентах. например суммировать два сигнала и при наличии сигнала на обоих подать как обычный home.
С этим пока не разобрался, так как станок не всегда под рукой, чтобы делать тесты. Думаю разбираться с hal на виртуальной машине, с конфигурацией для LTP, там как раз есть возможность сделать конфигурацию в режиме симуляции.
mikehv писал(а): Можно в Classicladder сделать логическую схемку с тем же суммированием.
Какой-то язык основанный на электрической логики - http://linuxcnc.org/docs/stable/html/la ... intro.html. Пока не разбираюсь в электронике, как и в программировании.

Спасибо за пояснение, не знал, что это настраивается в ini.
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Сохраню себе настройки сервоприводов осей.
Оси X,Y,Z (для просмотра содержимого нажмите на ссылку)

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

Состояние привода (отображение на экране)
P0.002 - 12 (Средняя нагрузка (скользящее среднее каждые 20 мс) от сервопривода. Ед. изм.: %.)
Режим управления и команды управления
P1.001 - D
Электронный коэффициент редукции (знаменатель) (M)
P1.045 - 2667
Дискретные входы
P2.010 - 121
P2.011 - 12B
P2.012 - 127
P2.013 - 24
P2.017 - 1
Дискретные выходы
P2.018 - 107
P2.019 - 9
Режим поиска исходного положения (HOME)
P5.004 - 106
Шпиндель (для просмотра содержимого нажмите на ссылку)

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

Состояние привода (отображение на экране)
P0-02 (Средняя нагрузка (скользящее среднее каждые 20 мс) от сервопривода. Ед. изм.: %.)
Режим управления и направление вращения
P1-01 - 2
Ограничение максимальной скорости
P1-55 - 2000
Дискретные входы
P2-10 - 121
P2-11 - 101
Дискретные выходы
P2-18 - 107
P2-19 - 111
Наводим порядок с электроникой в шкафу. Отец старается делать идеально.
Контроллер с дополнительными выплатами (2319 просмотров) <a class='original' href='./download/file.php?id=203248&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (584.61 КБ)</a>
Контроллер с дополнительными выплатами
Сервоприводы (2319 просмотров) <a class='original' href='./download/file.php?id=203249&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (402.96 КБ)</a>
Сервоприводы
Подключили оптическую линейку Sino KA-300 (родным не было доверия из-за внешнего вида) к Arduino, чтобы можно было проверять винты. Взяли Arduino Mega + 7 сегментный индикатор MAX7219.
Arduino Mega + 7 сегментный индикатор MAX7219 (2319 просмотров) <a class='original' href='./download/file.php?id=203250&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (455.12 КБ)</a>
Arduino Mega + 7 сегментный индикатор MAX7219
Отображение на 7 сегментном индикаторе MAX7219 (2319 просмотров) <a class='original' href='./download/file.php?id=203251&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (462.51 КБ)</a>
Отображение на 7 сегментном индикаторе MAX7219
Код и ссылки (для просмотра содержимого нажмите на ссылку)
Рабочий код (потихоньку учусь)

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

// Библиотека работы с MAX7219
#include "LedControl.h"

// Порты подключения энкодеров (оптических линеек) с сигналом TTL
// Порты энкодера A и B оси X
#define encoderXPinA 2
#define encoderXPinB 3

//*********************  Макросы для атомарных операций  ********************//
#ifndef MC_CRITICAL_SECTION_START
  #define MC_CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();      
#endif

#ifndef MC_CRITICAL_SECTION_END     
  #define MC_CRITICAL_SECTION_END    SREG = _sreg;
#endif
//*********************  /Макросы для атомарных операций  *******************//

// Значения импульсов энкодера оси X
volatile long encoderXPos;

// Значения энкодера оси X в микронах
long encoderXValueInUM = 0;

// Размер импульса энкодера в микронах оси X
long encoderXStepInUM = 5;

// Порты 7 сегментных экранов
byte led7SegmentDataPin = 12;
byte led7SegmentClockPin = 11;
byte led7SegmentCSPin = 10;
byte led7SegmentCount = 1;

// Инициализация 7 сегментных экранов
LedControl led7Segment = LedControl(led7SegmentDataPin, led7SegmentClockPin, led7SegmentCSPin, led7SegmentCount);

// Настройка таймера на основе millis для 7 сегментных экранов
unsigned long led7SegmentUpdateTimer;
// Период обновления 7 сегментных экранов
int led7SegmentUpdatePeriod = 40;

// /Переменные отладки

void setup ()
{
  // Настройка Serial
  Serial.begin(9600);

  // Настройка входов энкодера оси X
  pinMode(encoderXPinA, INPUT);
  pinMode(encoderXPinB, INPUT);

  // Настройка прерываний энкодера оси X
  attachInterrupt(0, encoderXPinChangeA, CHANGE);
  attachInterrupt(1, encoderXPinChangeB, CHANGE);

  // Обнуляем настройки энкодеров
  encoderXPos = 0;

  // Настройка 7 сегментных экранов
  for (byte i = 0; i < led7SegmentCount; i++)
  {
    // Включаем 7 сегментный экран
    led7Segment.shutdown(i, false);
    // Устанавливаем яркость экрана
    led7Segment.setIntensity(i, 15);
    // Очищаем экран
    led7Segment.clearDisplay(i);
  }

  delay(1000);
}

void loop()
{
  // Таймер на основе millis
  if (millis() - led7SegmentUpdateTimer >= led7SegmentUpdatePeriod)
  {
    // Сброс таймера
    led7SegmentUpdateTimer += led7SegmentUpdatePeriod;

    MC_CRITICAL_SECTION_START
    encoderXValueInUM = encoderXPos * encoderXStepInUM; 
    MC_CRITICAL_SECTION_END

    //Serial.println(encoderXValueInUM);
    
    ShowValueOnLed7Segment(0, encoderXValueInUM);
  }
}

void encoderXPinChangeA()
{
  // Look for a low-to-high on channel A
  if (digitalRead(encoderXPinA) == HIGH)
  {
    // Check channel B to see which way encoder is turning
    if (digitalRead(encoderXPinB) == LOW)
    {
      encoderXPos = encoderXPos + 1;        // CW
    }
    else
    {
      encoderXPos = encoderXPos - 1;        // CCW
    }
  }
  else  // Must be a high-to-low edge on channel A
  {
    // Check channel B to see which way encoder is turning
    if (digitalRead(encoderXPinB) == HIGH)
    {
      encoderXPos = encoderXPos + 1;          // CW
    }
    else
    {
      encoderXPos = encoderXPos - 1;          // CCW
    }
  }
}

void encoderXPinChangeB()
{
  // Look for a low-to-high on channel B
  if (digitalRead(encoderXPinB) == HIGH)
  {
    // Check channel A to see which way encoder is turning
    if (digitalRead(encoderXPinA) == HIGH)
    {
      encoderXPos = encoderXPos + 1;        // CW
    }
    else
    {
      encoderXPos = encoderXPos - 1;        // CCW
    }
  }
  // Look for a high-to-low on channel B
  else
  {
    // Check channel B to see which way encoder is turning
    if (digitalRead(encoderXPinA) == LOW)
    {
      encoderXPos = encoderXPos + 1;          // CW
    }
    else
    {
      encoderXPos = encoderXPos - 1;          // CCW
    }
  }
}

void ShowValueOnLed7Segment(byte numberLed7Segment, long value)
{
  //Serial.println(value);
  
  if (value < 0)
  {
    led7Segment.setChar(numberLed7Segment, 7, '-', false);
  }
  else
  {
    led7Segment.setChar(numberLed7Segment, 7, ' ', false);  
  }

  if (value < 1000)
  {
    led7Segment.setChar(numberLed7Segment, 6, ' ', false);
  }

  if (value < 100)
  {
    led7Segment.setChar(numberLed7Segment, 5, ' ', false);
  }

  if (value < 10)
  {
    led7Segment.setChar(numberLed7Segment, 4, ' ', false);
  }

  unsigned long intValue = abs(value);
  for (byte i = 0; i < 7; i++)
  {
    if (i < 4 || (i > 3 && intValue > 0))
    {
      led7Segment.setDigit(numberLed7Segment, i, intValue % 10, (i == 3));
    }
    else
    {
      led7Segment.setChar(numberLed7Segment, 7, ' ', false);
    }

    if (intValue > 0 && i != 6) {
      intValue = intValue / 10;
    }
  }
}

void ShowDigitOnLed7Segment(byte numberLed7Segment, byte digit, byte value, bool showPoint)
{
  led7Segment.setDigit(numberLed7Segment, digit, value, showPoint);
}
https://playground.arduino.cc/Main/RotaryEncoders/
https://www.ardumotive.com/8-digit-7seg-display-en.html
https://github.com/wayoda/LedControl
Тесты показали, что родные линейки Heidenhain LS803 (подключенные к родному блоку индикации) дают более точные показания (проверяли индикатором часового типа), чем Sino KA-300 (5 микронная линейка).
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Планировал управлять оборотами шпинделя сигналом 0-10В.
Mesa 7I96 генерирует ШИМ, этот сигнал подаем на плату конвертации ШИМ в сигнал 0-10В (PWM10V), плата конвертации подает сигнал на сервопривод. Подключил внешние сигналы энкодера шпинделя с сервопривода (A,B) на Mesa, думал с их помощью контролировать скорость в заданном диапазоне.

Получилось управлять шпинделем, но обороты не соответствовали тем, что были заданы. К примеру в программе задано 100 об/минуту, значение hm2_7i96.0.pwmgen.00.value = 100, а показания энкодера hm2_7I96.0.encoder.00.velocity-rpm = 534 (они советовали реальным оборотам). Вероятнее всего не правильная настройка, оставлю себе на память архив с настройками.

Отказался от этой идеи, так как в документации к плате PWM10V было написано следующее: Разрешающая способность 0,1В. Если правильно понял, плата способна выдавать сигнал от 0 до 10В с минимальным шагом 0,1В. При 4000 об/минуту на шпинделе, минимальный шаг изменения 40об/минуту (если предположить, что сигнал будет линейным).

Забыл проверить интересную мысль xenon-alien.
xenon-alien писал(а): Вы чисто для интереса ткните мултиметром (только осторожно) в режиме измерения напряжения. Чёрный щуп на землю, а красный на ШИМ.
Полюбуйтесь результатом изменяя обороты.
Решил перейти на управление оборотами шпинделя с помощью Step\Dir. Залил стандартную прошивку в Mesa, перегрузил и проверил настройки.

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

mesaflash --device 7i96 --addr 10.10.10.10 --write 7i96d.bit
mesaflash --device 7i96 --addr 10.10.10.10 --reload
mesaflash --device 7i96 --addr 10.10.10.10 --readhmid
Настроил сервопривод шпинделя для управления Step\Dir.

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

P1-00 - 002
P1-01 - 000
P1-44 - 25000
P1-45 - 10
P1-46 - 2500
Попытался настроить управление оборотами шпинделя с помощью PncConf, не получилось. Нашел тему, в которой решали аналогичную проблему, viewtopic.php?f=15&t=28669&start=160. В итоге получилось, но не до конца понял как (в решении проблемы использовался метод научного тыка).
Настройки в файле ini

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

[SPINDLE_0]
MAX_VELOCITY = 66.6666666667
MAX_ACCELERATION = 300.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 83.33
STEPGEN_MAXACCEL = 375.00
P = 0.0
I = 0.0
D = 0.0
FF0 = 1.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 4000.0
# these are in nanoseconds
DIRSETUP   = 2000
DIRHOLD    = 2000
STEPLEN    = 1000
STEPSPACE  = 1000
STEP_SCALE = 32.1
Настройки файла hal были взяты после запуска PncConf.

Изменение скорости происходило только при изменении параметра STEP_SCALE, все остальные параметры не влияли на скорость. Получилось управлять оборотами шпинделя с точностью около 1% от заданной скорости. В будущем надо настроить энкодер и возможно ПИД для нарезания резьбы. И надо находить время на изучение hal, без этих знаний становится все сложнее.

Сейчас надо разбирать станок чтобы замерить винты и сделать чертежи. Все винты и гайки под замену, учитывая возраст станка, чудес не бывает.
Вложения
7I96_GMOC_Spindle_PWM.zip
(362.25 КБ) 141 скачивание
7I96_GMOC_Spindle_STEPGEN.zip
(362.2 КБ) 131 скачивание
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

xenon-alien писал(а): Вы чисто для интереса ткните мултиметром (только осторожно) в режиме измерения напряжения. Чёрный щуп на землю, а красный на ШИМ.
Полюбуйтесь результатом изменяя обороты.
но проще так... На выходе видим 0-5В, почти аналог. По этому некоторые ПЧ, даже на 0-10в могут воспринимать 0-5в, только ему нужно дать понять, что 5в это уже потолок.
Так и есть, специально перепрограммировал Mesa в режим генерации ШИМ.
Вот мои результаты:
S10 (10 об. минуту) -4,71В
S500 (500 об. минуту) -3,55В
S1000 (1000 об. минуту) -2,37В
S2000 (2000 об. минуту) 0В
S3000 (3000 об. минуту) 2,36В
S4000 (4000 об. минуту) 4,73В
До 2000 об. минуту получаю минус, ожидал увидеть значения от 0В до 5В (для моего диапазона работы от 0 до 4000 об. минуту), возможно все дело в настройках hal.

Разбираюсь с hal, решил разобраться на примере настроек шпинделя. Причина простая, режим управления шпинделем по STEP\DIR, который был взят из конфигуратора Pncconf, странно работает на маленьких скоростях. На скорости 10 об. минуту, он делает большой шаг, останавливается, выжидает и снова делает большой шаг. На скорости 100 об. минуту, получаю хороший резонанс, причем он не связан с механикой. Если запускать шпиндель с помощью внутреннего управления с сервопривода в режиме JOG, резонанса практически нет.
Немного о поиске информации, оставлю себе на случай если забуду (для просмотра содержимого нажмите на ссылку)
http://linuxcnc.org/docs/stable/html/, тут можно найти все, хотя не всегда просто. К примеру искал spindle.0.index-enable и не сразу понял, что он находится в motion (искал его в spindle). Чтобы было проще, лучше начинать с русской wiki https://www.cnc-club.ru/wiki/index.php/ ... 0%B8%D1%8F и читать глава за главой, а не как я лишь необходимые мне разделы :) .
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение mikehv »

tpolimer2000 писал(а): На скорости 10 об. минуту, он делает большой шаг, останавливается, выжидает и снова делает большой шаг. На скорости 100 об. минуту, получаю хороший резонанс, причем он не связан с механикой
Смотри настройки ПИД в сервоприводе.
Управление шпинделем по степ.дир в лцнц работает без нареканий.
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

mikehv писал(а): Смотри настройки ПИД в сервоприводе.
Управление шпинделем по степ.дир в лцнц работает без нареканий.
Вроде бы не делал ни каких настроек ПИД в сервоприводе, как и в LinuxCnc. Но сброшу все настройки и попробую настроить заново.

Есть предположение, что проблема кроется в неправильной настройке электронного редуктора у сервопривода. Надо будет настроить этот сервопривод как обычную ось и посмотреть как она будет работать.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение mikehv »

Для шпинделя можно использовать авто настройку. Почитай мануал. Там есть уровни автонастройки. Этого хватит
Сервопривод без настройки коэффициентов не взлетит!)
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

mikehv писал(а): Для шпинделя можно использовать авто настройку. Почитай мануал. Там есть уровни автонастройки. Этого хватит
Сервопривод без настройки коэффициентов не взлетит!)
Попробую, я его не настраивал, возможно проблема в этом.
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

tpolimer2000 писал(а): На скорости 10 об. минуту, он делает большой шаг, останавливается, выжидает и снова делает большой шаг. На скорости 100 об. минуту, получаю хороший резонанс, причем он не связан с механикой. Если запускать шпиндель с помощью внутреннего управления с сервопривода в режиме JOG, резонанса практически нет.
Проблема была решена, не правильно настроил электронную редукцию. В одном обороте было около 20 импульсов :), поэтому на небольших скоростях он делал шаг, останавливался, ждал и делал следующий шаг.

Новые настройки сервопривода шпинделя (Delta B2)
P1-44 - 160
P1-45 - 10
Мотор с энкодером 160 000 импульсов на оборот
Ременная редукция 1 к 2.
В итоге получаем 5000 импульсов на 1 оборот на шпинделя. Подробнее о расчете тут - http://www.deltronics.ru/images/manual/ ... _B2_RU.pdf на странице 21 или тут в одном посте - viewtopic.php?p=303283#p303283
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Поменяли все ходовые винты и гайки к ним на станке. Хотел установить ШВП, но их нужно ждать очень долго, поэтому заказали трапециевидные винты. Точность винтов где-то между C5 и С7, накопленная погрешность шага 0,025мм на 300мм. Сделали к ним бронзовые гайки, по 2 гайки на винт, для регулировки люфта.

Сейчас разбираемся с люфтами, после чего будем измерять точность перемещений. Временно используем компенсацию люфтов в LinuxCnc.

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

BACKLASH = 0.060
Подробнее тут - https://www.cnc-club.ru/wiki/index.php/ ... %D0%BB_INI.
Программная компенсация люфта отрабатывает отлично, но хотелось бы убрать люфт.

На ось Z установили 2 газовых амортизатора, чтобы облегчить нагрузку на сервомотор.
2.jpg (1734 просмотра) <a class='original' href='./download/file.php?id=204352&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (323.53 КБ)</a>
Сделали гидрозажим инструмента, цилиндр был взят от Maho 600p.
1.jpg (1734 просмотра) <a class='original' href='./download/file.php?id=204353&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (234.87 КБ)</a>
Подключил датчик инструмента, но probe-screen еще не тестировал, на очереди краеискатель. Так же в процессе работы защита станка, включая кабинет.
3.jpg (1734 просмотра) <a class='original' href='./download/file.php?id=204354&sid=5214d2f15696d41a2852c7e68a187e7a&mode=view' target=_blank>Загрузить оригинал (258.85 КБ)</a>
Были обнаружены проблемы с поиском нуля серводрайвером (сам поиск работает отлично, но есть проблемы с согласованием в LinuxCnc). Поэтому решил перенести поиск нуля в LinuxCnc.

Планирую использовать датчики Home и индексную метку энкодера, которую можно вывести с серводрайвера. Пока завис с подключением индексной метки к контролеру.

Работа идет, хоть не так быстро как бы хотелось. :)
Аватара пользователя
sima8520
Почётный участник
Почётный участник
Сообщения: 4501
Зарегистрирован: 24 ноя 2016, 23:35
Репутация: 1615
Настоящее имя: Илья
Откуда: Беларусь, Гомель
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение sima8520 »

tpolimer2000 писал(а): Планирую использовать датчики Home и индексную метку энкодера, которую можно вывести с серводрайвера. Пока завис с подключением индексной метки к контролеру.
это интересно
tpolimer2000
Мастер
Сообщения: 347
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 45
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

sima8520 писал(а): это интересно
Приеду домой поясню, там нет ни чего нового. Просто у меня есть ограничения, которые нужно обойти.
Ответить

Вернуться в «Фрезерные станки по металлам»