ИЛИ Я ТУПОЙ, ИЛИ ЧТО-ТО НЕ ПОНИМАЮ
Должно было быть все просто.
Купили станок 24к40сф4
Весной начали менять на нем электронику. Двигатели и приводы оставили родные. Двигатели -- болгарские постоянного тока. Приводы - советские аналоговые БТ (управление +- 10В). Одинаковые везде - 3 координаты и шпиндель.
На шпинделе энкодер BE178A5 квадратурный на 250 импульсов (умножаю на 4 получаю 1000)
На осях линейки - на одних хейденхейм, на других родное непонятное совковое (реально непонятное , т.к. найти их описание по маркировке оказалось невозможно). Но линейки работают, считают.
Купил платы mesa 5i20 + 7i27TA
Запустили EMC2 (LinuxCNC)
Мастером все поставили. Фактически почти все получилось сразу с небольшими корректировками .ini файла.
.hal даже не трогали. Добавили даже на меню некоторые "виджеты" (скорость шпинделя).
Перемещения все работают. Шпиндель крутиться. Что то получилось фрезеровать. Написали первую (к слову не самую простую программу).
Ну просто - Песня (после ручного фрезерования криволинейного контура пуансона на 6720В)
А потом замечаем что шпиндель вращается только с двумя скоростями . На 65 или 650 оборотов. Это на пониженной 1 передаче. На пониженной передаче максимальная скорость шпинделя должна быть в районе 800 оборотов (по паспорту). Фактически получается что 650 об - это почти максимальная скорость двигателя шпинделя. Хотя и 650 это вроде как на 20% меньше чем 800, но потом определили что это максимальная скорость на этой передачи для нашего станка.
Сначала думали потом резберемся. Решали другие задачи. А шпиндель так и продолжал вращаться на 650 оборотах.
Вне зависимости от того какое задание скорости ставили!
И проблему решить не смогли . Начал даже разбираться с .hal файлом.
Основной принцип его стал понятен. Как происходит установка параметров, связь различных параметров.
Но что в нем проверить? Какие пины надо смотреть? Может какие то параметры не заданы?
Что мы сделали. Первое - Проверили в первую очередь осциллографом значение подающего напряжения на входе привода управляющего шпинделем (и физически настоящим осцилографом и через HAL -meter).
Оказалось что напряжение (даже при задании скорости командой M3 S50, т.е. всего 50 об.мин.) сразу начинает от (приблизительно) 5 Вольт расти до 10,5 В (а это реально максимум, хотя вообще scale стоит 10, т.е. 10 Вольт, а тут 10,5). Определили что однозначно проблема на выходе с Месы (привод правильно реагирует на управляющее напряжение).
Независимо от того какая скорость задана - либо в программе, либо вручную командой G-кодом - всегда шпиндель начинает вращаться с 200 оборотов и постепенно (за пол минуты) увеличивает свою скорость до примерно 600 оборотов (это +- значение, т.к. оно абсолютно не стабильно, а плавает от 550 до 650 об.мин).
Такое чувство что происходит постепенное самовозбуждение в PWM месы до максимального значения. Вроде должен реагировать на данные с экодера. Но шпиндель просто разгоняется до максимума.
При этом при ручном управлении шпинделем (через панель управления EMC) при запуске шпиндель ВСЕГДА сначала вращается на 65 оборотах (это ровняется примерно 1 Вольту выходного напряжения или 10%), и держит эту скорость. И при этом РЕГУЛИРУЕТСЯ от 0 до 65 оборотов (от 0 до 100 %) в ручном режиме через Overload. Т.е. КАКОЕ-ТО управление все таки получается!
Но если нажать "+" возле кнопки ручного управления, то тогда сразу начинает расти до максимума.
Проверили энокодер. Сигналы подает правильно. Проверили. И ЧПУ считает правильно . Если бы не работал, то и обороты бы не показывал.
Проверял описание .hal и .ini. Все стандартно. Сравнил с другими примерами с форума.
У нас для осей описаны параметры ПИД регулятора (P, I, D, FF, FF1, FF2), для шпинделя - никаких параметров ПИД не указывали.. Но тут на форуме, в частности Nick , часто повторял что для шпинделя абсолютно не важно настраивать ПИД регулатор.
Менял значения
Код: Выделить всё
setp scale.spindle.gain 60
setp lowpass.spindle.gain 0.100000
ENCODER_SCALE = -1000.0
OUTPUT_SCALE = -10.0
Но никакие танцы с бубном не привели к нормальному управлению шпинделем через команды.
Подскажите что надо проверить или поменять в настройках? Реально каша в голове.
Ниже выборки из .hal и .ini касательно шпинделя.
Код: Выделить всё
#*******************
# SPINDLE S
#*******************
# ---PWM Generator signals/setup---
setp hm2_5i20.0.pwmgen.02.output-type 1
setp hm2_5i20.0.pwmgen.02.scale [SPINDLE_9]OUTPUT_SCALE
net spindle-vel-cmd => hm2_5i20.0.pwmgen.02.value
net spindle-enable => hm2_5i20.0.pwmgen.02.enable
# ---Encoder feedback signals/setup---
setp hm2_5i20.0.encoder.02.counter-mode 0
setp hm2_5i20.0.encoder.02.filter 1
setp hm2_5i20.0.encoder.02.index-invert 0
setp hm2_5i20.0.encoder.02.index-mask 0
setp hm2_5i20.0.encoder.02.index-mask-invert 0
setp hm2_5i20.0.encoder.02.scale [SPINDLE_9]ENCODER_SCALE
net spindle-revs <= hm2_5i20.0.encoder.02.position
net spindle-vel-fb <= hm2_5i20.0.encoder.02.velocity
net spindle-index-enable <=> hm2_5i20.0.encoder.02.index-enable
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-vel-cmd <= motion.spindle-speed-out
net spindle-enable <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
net spindle-brake <= motion.spindle-brake
net spindle-revs => motion.spindle-revs
net spindle-at-speed => motion.spindle-at-speed
net spindle-vel-fb => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
# ---Setup spindle at speed signals---
sets spindle-at-speed true
# Use ACTUAL spindle velocity from spindle encoder
# spindle-velocity bounces around so we filter it with lowpass
# spindle-velocity is signed so we use absolute component to remove sign
# ACTUAL velocity is in RPS not RPM so we scale it.
setp scale.spindle.gain 60
setp lowpass.spindle.gain 0.100000
net spindle-vel-fb => lowpass.spindle.in
net spindle-fb-filtered-rps lowpass.spindle.out => abs.spindle.in
net spindle-fb-filtered-abs-rps abs.spindle.out => scale.spindle.in
net spindle-fb-filtered-abs-rpm scale.spindle.out
Выдержка с .ini файла
Код: Выделить всё
********************
# Spindle
#********************
[SPINDLE_9]
ENCODER_SCALE = -1000.0
OUTPUT_SCALE = -10.0
Заранее благодарен даже за намек где искать и что смотреть.