Микрон WF3 DCM. Пересадка мозгов.

Тяжелые фрезерные станки по металлу.
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Итак, полным ходом, хоть и не с желаемой скоростью, идёт пересадка мозгов и нервной системы швейцарцу Mikron WF3 DCM.

Предисловие:
Станок приобретён года четыре назад.
Где-то в начале 2010-х пережил модернизацию от компании Балтсистем. Стойка NC220. Привода Балтсистема.
Остальная механика и часть электрики родная.
В процессе эксплуатации столкнулись с рядом проблем.

Во-первых, стойка NC220 при всей внешней привлекательности и удобстве обращения, внутри -- очень сырая и неудобная.
Более-менее сложные траектории обрабатывать не умеет. Три-Дэ, динамические и прочие другие -- неконгруэнтность профиля, причём в самых неожиданных местах. А иногда и вовсе вываливается в неизвестные ошибки.

Во-вторых, модернизация Балтсистемом вызвала много недобрых слов в их адрес: макаронная фабрика в электрошкафу и отсутствие нормальной документации (вместо оонной, была документация на MAHO 500, который по всей видимости модернизировался параллельно) подарили мне, а ещё больше -- нашему фрезеровщику -- множество незабываемых часов и дней, проведённых со станком в самых разных позах. Проблема усугублялась винтовыми клеммами на дин-рейке, которые, как оказалось, вполне себе имеют особенность со временем ослабевать.
Пару раз получал вывалившиеся пучки проводов (именно пучки -- в некоторых местах в одну клемму по 5-6 скрученных проводов было зажато) и долго чесал репу в поисках что-куда-откуда.

В-третьих, регулирование скоростей шпинделя только ступенчатое через механизированный редуктор и двухскоростной двигатель.

В четвёртых, на одном из родных трансформаторов, судя по всему, закороченная обмотка. Греется как собака, неоднократно выбивал пробки.

Но хватит это терпеть!
Чем постоянно ковыряться и отлавливать то тут, то там возникающие проблемы, решено станок модернизировать. Пока по части мозгов и электрики.
Через некоторое время, возможно, предстоит проверка и корректировка геометрии, работы по механике -- но это уже совсем другая история...

Старая электрика демонтирована.
Демонтирована стойка и корпус для неё, который занимал довольно значительное пространство.
Моторы и привода решено оставить прежние -- балтсистемовские. Но это наложило свои ограничения: привода довольно громоздкие и в шкафу -- не самом маленьком -- занимают много места. Родной двухскоростной мотор шпинделя заменён на такой же, но односкоростной; управление им через частотник Delta.
Все трансформаторы -- вон! Ставим импульсники.

Стойка на базе двухъядерного Целерона, вспомню конфигурацию -- дополню.
Интерфейсные платы -- PinCET от наших рязанских товарищей: новая расширенная Eth-main, SD x1, Enc x1, IO x3.
Три платы ввода-вывода покрывают все потребности на данный момент и оставляют некоторое количество свободных пинов для дальнейшей модернизации.

В целом, схема мозгов значительно упрощается и умещается, хоть и довольно плотно, в двух электрошкафах.

Рабочее поле: X-Y-Z = 500-500-400
Обрабатываемые материалы: Пластик, алюминиевые сплавы, медные сплавы, сталь, титаний.
Чертежи, фото, видео станка: Будут далее.
Примеры изделий (фото): Пока отсутствуют.
Вопросы: Будут в ходе повествования.
Что плучилось: Старая электрика демонтирована, частично смонтирована новая. Смонтирова стойка. В процессе -- написание конфигурации.
Ориентировочный бюджет: Планировался на уровне 150K. На данный момент превышен, ориентировочно тыщ на 30.
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Немного фотографий до и в процессе демонтажа.
Вложения
Здесь будет жить мозг (26396 просмотров) <a class='original' href='./download/file.php?id=184893&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (4.9 МБ)</a>
Здесь будет жить мозг
Макароны (26396 просмотров) <a class='original' href='./download/file.php?id=184894&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (5.17 МБ)</a>
Макароны
IMG_20200522_135459.jpg (26396 просмотров) <a class='original' href='./download/file.php?id=184895&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (4.11 МБ)</a>
Макароны сушатся (26396 просмотров) <a class='original' href='./download/file.php?id=184896&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (4.58 МБ)</a>
Макароны сушатся
Привода (26396 просмотров) <a class='original' href='./download/file.php?id=184897&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (4.5 МБ)</a>
Привода
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Процесс монтажа.
Вложения
Компьютер (26391 просмотр) <a class='original' href='./download/file.php?id=184898&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (3.31 МБ)</a>
Компьютер
Поверх -- платы, клеммы и реле (26391 просмотр) <a class='original' href='./download/file.php?id=184899&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (4.11 МБ)</a>
Поверх -- платы, клеммы и реле
Разъёмы (26391 просмотр) <a class='original' href='./download/file.php?id=184900&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (3.17 МБ)</a>
Разъёмы
Обрастает проводами (26391 просмотр) <a class='original' href='./download/file.php?id=184901&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (4.93 МБ)</a>
Обрастает проводами
Готово к установке на станок (26391 просмотр) <a class='original' href='./download/file.php?id=184902&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (3.75 МБ)</a>
Готово к установке на станок
Встало плотно (26391 просмотр) <a class='original' href='./download/file.php?id=184903&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (3.92 МБ)</a>
Встало плотно
Привода и электрика (26391 просмотр) <a class='original' href='./download/file.php?id=184904&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (3.12 МБ)</a>
Привода и электрика
Гидро- и маслостанция (26391 просмотр) <a class='original' href='./download/file.php?id=184905&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (3.52 МБ)</a>
Гидро- и маслостанция
Двигатели коробки шпинделя (26391 просмотр) <a class='original' href='./download/file.php?id=184906&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (2.44 МБ)</a>
Двигатели коробки шпинделя
Главный по модернизации (26391 просмотр) <a class='original' href='./download/file.php?id=184907&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (218.71 КБ)</a>
Главный по модернизации
Malyarka74
Мастер
Сообщения: 692
Зарегистрирован: 20 май 2017, 13:39
Репутация: 158
Настоящее имя: Сергей
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение Malyarka74 »

Самое главное, работа с помошником идет))
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

В субботу немного потрудился.
Подключил сервы, долго прокладывал кабели; только начал крутить -- ушёл в ребут.
Почесал репу, перезагрузился. Работает.

Ещё немного покрутил сервы -- снова ребут.
Выматерился, почесал репу, перезагрузился. Работает. Хм...

Только загрузил LCNC, включился компрессор -- и обратно ребут.
Какая-то помеха по сети или что-то подобное. :thinking:
Далее -- цикличный ребут и всё.

Перекинул БП (благо, верхняя плита относительно несложно снимается, можно до матплаты добраться) -- заработало.
Биос слетел. Самовосстановился.
Обнаружилась ещё одна проблема: SSD 535 серии. Похоже, захотела на покой вместе с БП -- как и должна была в один прекрасный момент.
Надо было бэкап делать. :cry:

Сегодня всю сборку снял обратно: предстоит заново накатать систему и настроить усё.
Админ наш, вроде, что-то там наколдовал с диском. Можт, даже hal и ini извлеку.
Вложения
Слетел биос. (26222 просмотра) <a class='original' href='./download/file.php?id=185085&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (2.66 МБ)</a>
Слетел биос.
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Не прошло и полгода.
Кучка дел, не терпящих отлогательств завершена, можно продолжить ковыряния в черепной коробке станка.

Итак, систему презалили.
Только прежних значений по латенси получить не удалось, но пока и так сойдёт: больше 30 к не подымается, вроде.
Были подозрения на блок питания, что он чудит, думал уже менять. Собрал всё на столе -- работает, аки часы!
Материнку на пластиковые стойки повесил, БП прикрутил через изолирующую ПЭТ плёнку. Пока за пару дней не выбрасывало.
Есть ещё версия, что монитор и материнка висели на разных фазах. Кто-нибудь знает, может это при перекосе фаз приводить к наводкам?

SSD оказался живой.
Извлёк с него конфигурацию -- и гвоздём на стеночку. Не хватало, чтобы он ещё подвёл в самый нужный момент.

В обещм, пара дней на подключение и проверку всех проводов и кабелей, МПГ повесил на разъём, чем несказанно упростил коммутацию и выручил цельный метр кабеля -- лишним точно не будет.
Ну и результат на видео:
https://youtu.be/eeOraK1SWYw
https://youtu.be/FK4lHyPdXoI
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

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

Ещё обнаружилась засада: на частотнике от дельты управление скоростью и пины вперёд/назад висят на едином общем.
Как-то мне не нравится это. Думаю снять с токарника Микромастера и махнуть их местами.
У Микромастера как-то повеселей управление сделано. Заодно он умеет в -10В - 0 - +10В, что позволяет не использовать доп. пин на реверс.
Дельта же только в 0 - +10В умеет.

Ещё сейчас только додумался, что чем тащить 3 фазы на основной выключатель станка, который на корпусе, проще поставить внутри контактор, а на выключатель только управление им проложить, всего 2 тоненьких провода вместо 2 толстенных трёхжильных кабелей.
Последний раз редактировалось dimedved 12 сен 2020, 17:10, всего редактировалось 1 раз.
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Ну и на всякий случай .hal и .ini, которые на данный момент есть.
Пока работает только ось X.

HAL:

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

##################################################
#               MICRON WF3 DCM                   #
##################################################


loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt etcomb board_ip=192.168.1.3
loadrt pid names=pid.x,pid.y,pid.z,pid.c,pid.s
loadrt scale count=1
loadrt encoder num_chan=1
loadrt mux4 count=1
loadrt conv_float_s32 count=1
loadusr -W hal_manualtoolchange

addf etcomb.1.update            servo-thread
addf motion-command-handler     servo-thread
addf motion-controller          servo-thread
addf pid.x.do-pid-calcs         servo-thread
addf pid.y.do-pid-calcs         servo-thread
addf pid.z.do-pid-calcs         servo-thread
addf pid.c.do-pid-calcs         servo-thread
addf pid.s.do-pid-calcs         servo-thread
addf scale.0			servo-thread
addf encoder.capture-position   servo-thread
addf encoder.update-counters    servo-thread
addf conv-float-s32.0           servo-thread
addf mux4.0                     servo-thread

##################################################
#------------------  E-STOP  --------------------#
##################################################

net estop-ext iocontrol.0.emc-enable-in   <=  etcomb.1.Lpins.pin-00-in

##################################################
#------------------  LIMITS  --------------------#
##################################################

net home-x       axis.0.home-sw-in      <=  etcomb.1.pins.pin-16-in-n
net limit-x-neg  axis.0.neg-lim-sw-in   <=  etcomb.1.pins.pin-17-in
net limit-x-pos  axis.0.pos-lim-sw-in   <=  etcomb.1.pins.pin-18-in

net home-y       axis.1.home-sw-in      <=  etcomb.1.pins.pin-19-in
net limit-y-neg  axis.1.neg-lim-sw-in   <=  etcomb.1.pins.pin-20-in
net limit-y-pos  axis.1.pos-lim-sw-in   <=  etcomb.1.pins.pin-21-in

net home-z       axis.2.home-sw-in      <=  etcomb.1.pins.pin-22-in
net limit-z-neg  axis.2.neg-lim-sw-in   <=  etcomb.1.pins.pin-23-in
net limit-z-pos  axis.2.pos-lim-sw-in   <=  etcomb.1.pins.pin-24-in

net home-c       axis.5.home-sw-in      <=  etcomb.1.pins.pin-25-in

##################################################
#-------------  MANUAL TOOLCHANGE  --------------#
##################################################

net tool-change iocontrol.0.tool-change             => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed           <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number        => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare  => iocontrol.0.tool-prepared

##################################################
#--------------------   MPG  --------------------#
##################################################

setp etcomb.1.Lpins.pin-00-out 1

setp axis.0.jog-vel-mode 0
setp axis.1.jog-vel-mode 0
setp axis.2.jog-vel-mode 0
setp axis.5.jog-vel-mode 0
setp mux4.0.in0 0.001
setp mux4.0.in1 0.01
setp mux4.0.in2 0.1

net scale010 mux4.0.sel0 <= etcomb.1.pins.pin-12-in
net scale100 mux4.0.sel1 <= etcomb.1.pins.pin-13-in

setp etcomb.1.feedback.enc_scale4 4
net enc_pos conv-float-s32.0.in <= etcomb.1.feedback.encoder4

net mpg-scale <= mux4.0.out
net mpg-scale => axis.0.jog-scale
net mpg-scale => axis.1.jog-scale
net mpg-scale => axis.2.jog-scale
net mpg-scale => axis.5.jog-scale

net mpg-x axis.0.jog-enable <= etcomb.1.pins.pin-08-in
net mpg-y axis.1.jog-enable <= etcomb.1.pins.pin-09-in
net mpg-z axis.2.jog-enable <= etcomb.1.pins.pin-10-in
net mpg-c axis.5.jog-enable <= etcomb.1.pins.pin-11-in

setp axis.0.jog-vel-mode 0
net encoder-counts <= conv-float-s32.0.out
net encoder-counts => axis.0.jog-counts
net encoder-counts => axis.1.jog-counts
net encoder-counts => axis.2.jog-counts
net encoder-counts => axis.5.jog-counts

# смазка
#net machine-is-enabled halui.machine.is-on
#net machine-is-enabled autolube.0.mrun
#setp autolube.0.xpath 1500
#setp autolube.0.zpath 1500
#setp autolube.0.lubetime 10
#net lubevel_x <= axis.0.joint-vel-cmd => autolube.0.xvel
#net lubevel_z <= axis.2.joint-vel-cmd => autolube.0.zvel
#net lube-sig <= autolube.0.out => to_pci.1.pins.pin-06-out
#net lube-sig <= autolube.0.out => etcomb.1.pins.pin-06-out


##################################################
#------------------- COOLANT  -------------------#
##################################################

net coolant iocontrol.0.coolant-flood etcomb.1.pins.pin-09-out

##################################################
#------------------  X AXIS  --------------------#
##################################################

# PID X

setp   pid.x.Pgain     [AXIS_0]P
setp   pid.x.Igain     [AXIS_0]I
setp   pid.x.Dgain     [AXIS_0]D
setp   pid.x.bias      [AXIS_0]BIAS
setp   pid.x.FF0       [AXIS_0]FF0
setp   pid.x.FF1       [AXIS_0]FF1
setp   pid.x.FF2       [AXIS_0]FF2
setp   pid.x.deadband  [AXIS_0]DEADBAND
setp   pid.x.maxoutput [AXIS_0]MAX_OUTPUT

net x-enable        =>  pid.x.enable
net x-pos-cmd       =>  pid.x.command
net x-pos-fb        =>  pid.x.feedback
net x-output        =>  pid.x.output

# CONTROL X

net x-enable  <=  axis.0.amp-enable-out
net x-enable  =>  etcomb.1.enable_drive
net x-enable  =>  etcomb.1.pins.pin-00-out
net x-pos-cmd <=  axis.0.motor-pos-cmd
net x-output  =>  etcomb.1.step_dir.outstep0
setp etcomb.1.step_dir.invert_dir0 0
setp etcomb.1.step_dir.Limp0 100

# FEEDBACK X

net x-pos-fb  =>  axis.0.motor-pos-fb
net x-pos-fb  <=  etcomb.1.step_dir.count0
setp etcomb.1.step_dir.escale0 [AXIS_0]STEP_SCALE

##################################################
#------------------  Y AXIS  --------------------#
##################################################

# PID Y

setp   pid.y.Pgain     [AXIS_1]P
setp   pid.y.Igain     [AXIS_1]I
setp   pid.y.Dgain     [AXIS_1]D
setp   pid.y.bias      [AXIS_1]BIAS
setp   pid.y.FF0       [AXIS_1]FF0
setp   pid.y.FF1       [AXIS_1]FF1
setp   pid.y.FF2       [AXIS_1]FF2
setp   pid.y.deadband  [AXIS_1]DEADBAND
setp   pid.y.maxoutput [AXIS_1]MAX_OUTPUT

net y-enable        =>  pid.y.enable
net y-pos-cmd       =>  pid.y.command
net y-pos-fb        =>  pid.y.feedback
net y-output        =>  pid.y.output

# CONTROL Y

net y-enable  <=  axis.1.amp-enable-out
net y-enable  =>  etcomb.1.pins.pin-01-out
net y-pos-cmd <=  axis.1.motor-pos-cmd
net y-output  =>  etcomb.1.step_dir.outstep1

setp etcomb.1.step_dir.invert_dir1 1
setp etcomb.1.step_dir.Limp1 0

# FEEDBACK Y

net y-pos-fb  =>  axis.1.motor-pos-fb
net y-pos-fb  <=  etcomb.1.step_dir.count1
setp etcomb.1.step_dir.escale1 [AXIS_1]STEP_SCALE

##################################################
#------------------  Z AXIS  --------------------#
##################################################

# PID Z

setp   pid.z.Pgain     [AXIS_2]P
setp   pid.z.Igain     [AXIS_2]I
setp   pid.z.Dgain     [AXIS_2]D
setp   pid.z.bias      [AXIS_2]BIAS
setp   pid.z.FF0       [AXIS_2]FF0
setp   pid.z.FF1       [AXIS_2]FF1
setp   pid.z.FF2       [AXIS_2]FF2
setp   pid.z.deadband  [AXIS_2]DEADBAND
setp   pid.z.maxoutput [AXIS_2]MAX_OUTPUT

net z-enable        =>  pid.z.enable
net z-pos-cmd       =>  pid.z.command
net z-pos-fb        =>  pid.z.feedback
net z-output        =>  pid.z.output

# CONTROL Z

net z-enable  <=  axis.2.amp-enable-out
net z-enable  =>  etcomb.1.pins.pin-02-out
net z-pos-cmd <=  axis.2.motor-pos-cmd
net z-output  =>  etcomb.1.step_dir.outstep2

setp etcomb.1.step_dir.invert_dir2 0
setp etcomb.1.step_dir.Limp2 0

# FEEDBACK Z

net z-pos-fb  =>  axis.2.motor-pos-fb
net z-pos-fb  <=  etcomb.1.step_dir.count2
setp etcomb.1.step_dir.escale2 [AXIS_2]STEP_SCALE

##################################################
#-------------------  C AXIS  -------------------#
##################################################

# PID C

setp   pid.c.Pgain     [AXIS_3]P
setp   pid.c.Igain     [AXIS_3]I
setp   pid.c.Dgain     [AXIS_3]D
setp   pid.c.bias      [AXIS_3]BIAS
setp   pid.c.FF0       [AXIS_3]FF0
setp   pid.c.FF1       [AXIS_3]FF1
setp   pid.c.FF2       [AXIS_3]FF2
setp   pid.c.deadband  [AXIS_3]DEADBAND
setp   pid.c.maxoutput [AXIS_3]MAX_OUTPUT

net c-enable        =>  pid.c.enable
net c-pos-cmd       =>  pid.c.command
net c-pos-fb        =>  pid.c.feedback
net c-output        =>  pid.c.output

# CONTROL C

net c-enable  <=  axis.5.amp-enable-out
net c-enable  =>  etcomb.1.pins.pin-03-out
net c-pos-cmd <=  axis.5.motor-pos-cmd
net c-output  =>  etcomb.1.step_dir.outstep3

setp etcomb.1.step_dir.invert_dir3 0
setp etcomb.1.step_dir.Limp3 0

# FEEDBACK C

net c-pos-fb  =>  axis.5.motor-pos-fb
net c-pos-fb  <=  etcomb.1.step_dir.count3
setp etcomb.1.step_dir.escale3 [AXIS_3]STEP_SCALE

##################################################
#-----------------  S SPINDLE  ------------------#
##################################################

# ---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-at-speed       =>  motion.spindle-at-speed
#		#net gui_spindle_at_speed motion.spindle-at-speed
#net spindle-revs           =>  motion.spindle-revs
#net spindle-vel-fb         =>  motion.spindle-speed-in
#net spindle-index-enable  <=>  motion.spindle-index-enable


#------- SPINDLE ENABLE --------------
net spindle-fwd motion.spindle-forward => etcomb.1.pins.pin-04-out
net spindle-rev motion.spindle-reverse => etcomb.1.pins.pin-05-out


#------- SPINDLE CONTROL ----------------
setp etcomb.1.PWM.out_scale 1
setp scale.0.gain 0.0027
net spindle-vel-cmd motion.spindle-speed-out scale.0.in
net spindle-vel-out scale.0.out etcomb.1.PWM.dcontrol


#------- SPINDLE FEEDBACK -----------------
#setp to_pci.1.feedback.enc_scale3 -[SPINDLE]ENCODER_SCALE
#net spindle-revs <= to_pci.1.feedback.encoder3
#net spindle-vel-fb <= to_pci.1.feedback.enc_vel3
#net spindle-index-enable <=> to_pci.1.feedback.index_en3
INI:

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

# Generated by PNCconf at Mon Jun 29 10:31:40 2020
# Все изменения в этом файле будут перезаписаны
# overwritten when you run PNCconf again

[EMC]
MACHINE = Micron_WF3_DCM
DEBUG = 0

[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.400000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 2
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 6.000000
MAX_LINEAR_VELOCITY = 25.000000
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 360.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = mousepad
GEOMETRY = xyz

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000

[HOSTMOT2]
# **** This is for info only ****
# DRIVER0=hm2_pci
# BOARD0=5i25

[HAL]
HALUI = halui
HALFILE = Micron_WF3_DCM.hal
HALFILE = custom.hal
HALFILE = lube.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal

[HALUI]

[TRAJ]
AXES = 6
COORDINATES = X Y Z C
MAX_ANGULAR_VELOCITY = 3600.00
DEFAULT_ANGULAR_VELOCITY = 720.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.50
MAX_VELOCITY = 25.00

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

[LUBE]
PATH_X     = 500
PATH_Y     = 3000
PATH_Z     = 3000
LUBE_TIMER = 300
PUMP_TIMER = 6 
PRESSURE_TIMER = 5

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 1
MIN_FERROR = 100.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
P = 5.0
I = 1
D = 0.10
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP   = 1000
DIRHOLD    = 1000
STEPLEN    = 1000
STEPSPACE  = 1000
STEP_SCALE = 2000
MIN_LIMIT  = -200
MAX_LIMIT  = 200.0

HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -6
HOME_LATCH_VEL  = 1
HOME_FINAL_VEL  = 0.5
HOME_USE_INDEX  = NO
HOME_SEQUENCE   = 3


#********************
# Axis Y
#********************
[AXIS_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
P = 100.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP   = 1000
DIRHOLD    = 1000
STEPLEN    = 1000
STEPSPACE  = 1000
STEP_SCALE = 1000.0
MIN_LIMIT  = -200
MAX_LIMIT  = 200.0
HOME_OFFSET = 0.0

#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.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 = 31.25
STEPGEN_MAXACCEL = 937.50
P = 100.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP    = 1000
DIRHOLD     = 1000
STEPLEN     = 1000
STEPSPACE   = 1000
STEP_SCALE  = 1000.0
MIN_LIMIT   = -100.0
MAX_LIMIT   = 100
HOME_OFFSET = 0.0

#********************
# Axis C
#********************
[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 3600.0
MAX_ACCELERATION = 1200.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 = 450.00
STEPGEN_MAXACCEL = 1500.00
P = 10.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP   = 1000
DIRHOLD    = 1000
STEPLEN    = 1000
STEPSPACE  = 1000
STEP_SCALE = 1000.0
MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0
HOME_OFFSET = 0.0

#********************
# Spindle 
#********************
[SPINDLE_9]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 2000
LUBE.HAL:

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

loadrt  abs               count=3
loadrt  integ             count=4
loadrt  wcomp             count=4
loadrt  oneshot           count=1
loadrt  timedelay         count=2
loadrt  and2              count=2
loadrt  conv_bit_s32      count=1
loadrt  conv_s32_float    count=1
loadrt  message           names=lopressure,looil messages="Давление в системе смазки не достигнуто за заданное время,Низкий уровень масла"
loadrt  logic             count=1 personality=520

addf    abs.0             servo-thread
addf    abs.1             servo-thread
addf    abs.2             servo-thread

addf    integ.0           servo-thread
addf    integ.1           servo-thread
addf    integ.2           servo-thread
addf    integ.3           servo-thread
 
addf    wcomp.0           servo-thread
addf    wcomp.1           servo-thread
addf    wcomp.2           servo-thread
addf    wcomp.3           servo-thread

addf    oneshot.0         servo-thread
addf    conv-bit-s32.0    servo-thread
addf    conv-s32-float.0  servo-thread
addf    timedelay.0       servo-thread
addf    timedelay.1       servo-thread
addf    logic.0           servo-thread
addf    and2.0            servo-thread
addf    and2.1            servo-thread
addf    lopressure        servo-thread

setp    timedelay.0.off-delay  [LUBE]PUMP_TIMER
setp    timedelay.0.on-delay   0.0
setp    timedelay.1.off-delay  0.5
setp    timedelay.1.on-delay   [LUBE]PRESSURE_TIMER
setp    oneshot.0.width        1.0
setp    wcomp.0.max            [LUBE]PATH_X
setp    wcomp.1.max            [LUBE]PATH_Y
setp    wcomp.2.max            [LUBE]PATH_Z
setp    wcomp.3.max            [LUBE]LUBE_TIMER

net  is_on         <=  halui.machine.is-on         =>  oneshot.0.in   conv-bit-s32.0.in
net  onesh_out     <=  oneshot.0.out               =>  logic.0.in-04

#####  X  #####
net  x_vel_in      <=  axis.0.joint-vel-cmd        =>  abs.0.in
net  x_vel_out     <=  abs.0.out                   =>  integ.0.in
net  x_int_out     <=  integ.0.out                 =>  wcomp.0.in
net  x_comp_out    <=  wcomp.0.over                =>  logic.0.in-00

#####  Y  #####
net  y_vel_in      <=  axis.1.joint-vel-cmd        =>  abs.1.in
net  y_vel_out     <=  abs.1.out                   =>  integ.1.in
net  y_int_out     <=  integ.1.out                 =>  wcomp.1.in
net  y_comp_out    <=  wcomp.1.over                =>  logic.0.in-01

#####  Z  #####
net  z_vel_in      <=  axis.2.joint-vel-cmd        =>  abs.2.in
net  z_vel_out     <=  abs.2.out                   =>  integ.2.in
net  z_int_out     <=  integ.2.out                 =>  wcomp.2.in
net  z_comp_out    <=  wcomp.2.over                =>  logic.0.in-02

#####  LUBE TIMER  #####
net  bit_out       <=  conv-bit-s32.0.out          =>  conv-s32-float.0.in
net  t_int_in      <=  conv-s32-float.0.out        =>  integ.3.in
net  t_int_out     <=  integ.3.out                 =>  wcomp.3.in
net  t_comp_out    <=  wcomp.3.over                =>  logic.0.in-03

#####  LUBE SHOT  #####
net  shot          <=  logic.0.or                  =>  timedelay.0.in integ.0.reset integ.1.reset integ.2.reset integ.3.reset
net  port          <=  timedelay.0.out             =>  etcomb.1.pins.pin-08-out timedelay.1.in 

#####  LUBE_SENSOR  #####
net  lube_sen      <=  etcomb.1.pins.pin-26-in-n   =>  and2.0.in0
net  sen_timer     <=  timedelay.1.out             =>  and2.0.in1
net  mess          <=  and2.0.out                  =>  lopressure.trigger halui.machine.off

#####  OIL_LEVEL_SENSOR  #####
Процедуру для Любы брал здесь же на форуме, только добавил контроль давления и принудительное включение по таймеру.
Чтобы разобраться, пришлось схематично всё сначала изобразить:
Вложения
HAL Lube.JPG (25191 просмотр) <a class='original' href='./download/file.php?id=185977&sid=e64463388e890221824114f10026d9f0&mode=view' target=_blank>Загрузить оригинал (145.34 КБ)</a>
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Что-то давно не писал, не до того было как-то.
А тут приболел, решил поделиться достижениями, пока время свободное есть.

В общем, первая фаза работ -- возможность работы на станке в принципе -- завершена.
XYZ работают, хоть и хромают немного.

Долго не мог понять, чего это драйвер по Z вываливается в ошибку. Оказалось всё очень просто и даже примитивно: драйвер с мотором-то подключили, а тормозистор -- забыли. А тягаемая масса здесь приличная.

Есть ещё кой-какие затыки с ПИДами. Не могу пока победить люфты: на осях стоят редукторы шестерёнчатые и люфты достигают 0.1.
Собственно, лучше этого значения по X и Y добиться не смог. По Z люфт частично выбирается силой притяжения и с ней несколько легче получается.
В принципе, на X можно и на ремешок заменить и даже напрямую мотор врубить; но что делать с Y не пойму: редуктор стоит глубоко в корпусе подлезть туда задача непростая.

По материнке получилось забавно.
Как только изолировал от корпуса материнку и БП, заменил латунные стойки на пластиковые, глюки исчезли. Почти исчезли.
Как я писал выше, монитор и БП мамки сидели на разных фазах и в один прекрасный момент, когда вывалился из монитора сигнальный кабель, погорел выход DVI на материнке.
VGA живой, пока на нём сидим, на временном мониторе. Тянуть на основной сенсорный монитор далековато, думаю VGA с кучей помех будет.

Ещё была такая проблема.
В цеху стоял на вводе диф автомат, который при работе с частотниками постоянно выбивало.
Как на токарном, так и на этом фрезере.
Пока не убрали его, мучались постоянно.
Натыкался в мануале на Микромастер, что если хочешь диф автомат, то таковой должен быть на каждый частотник свой и не должно быть общих.
Кто-нибудь знает физику процессов? Почему так?
Последний раз редактировалось dimedved 07 дек 2020, 22:12, всего редактировалось 1 раз.
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Следующая фаза работ по планам, вторая -- подключение оси Цэ, поворотного стола.
Тут тоже без проблем не обошлось.
При подключении энкодера перепутал полярность питания и пожёг конвертор сигнала.
На энкодере выход токовый синус.
Подскажите, где можно таковой раздобыть?
Так-то без энкодера всё работает, но это немного не то.

Ну и на третью фазу, на десерт, оставил управление моторами коробки шпинделя.
Пока даже не представляю, как к этому подступиться.
Там три ДПТ стоят и на шестернях магнитик и датчики холла на положении -- по три на каждый.
Всего 9 позиций, одна из которых -- холостой ход.
В принципе, есть регулировка на частотнике (которой раньше не было и регулировка была ступенчатая) и этого пока хватает.
Но возможность переключения хотя бы одного мотора была бы не лишней.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение Serg »

dimedved писал(а): Есть ещё кой-какие затыки с ПИДами. Не могу пока победить люфты: на осях стоят редукторы шестерёнчатые и люфты достигают 0.1.
Собственно, лучше этого значения по X и Y добиться не смог.
Люфты нужно убирать только механически.
Программная компенсация люфтов работает только на индексных осях (с тормозом).
dimedved писал(а): Натыкался в мануале на Микромастер, что если хочешь диф автомат, то таковой должен быть на каждый частотник свой и не должно быть общих.
Кто-нибудь знает физику процессов? Почему так?
Иначе он будет срабатывать от суммарной утечки всего оборудования цеха (через ёмкости фильтров и проводов).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

Такой вопрос у меня тлеет.
Надо на поворотной оси "цэ" организовать работу тормоза.
Вроде для этого есть вариант с "LOCKING_INDEXER", который открывает в axis соответствующие пины.
Но при этом ось разучивается в G1 и она не может работать совместно с другими осями и это грустно.

Можт, есть ещё какие-нибудт подобные опции для осей?
Как это грамотно сделать?

Пока во что мысль упёрлась, получается некрасиво: управлять тормозом по М-коду и при желании работать с осью предварительно тормоз снимать и ставить обратно, когда ось стоит. Здесь надо делать защиту от дурака, чтобы ненароком на тормозе не ломануться на всех парах.

На НЦ220 тормоз автоматически снимался перед любым движением оси и автоматически возвращался, когда она останавливалась.
Плюс можно было снимать и ставить тормоз по М-коду.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение Serg »

dimedved писал(а): Но при этом ось разучивается в G1 и она не может работать совместно с другими осями и это грустно.
Индексные оси по определению не могут работать одновременно с другими.
dimedved писал(а): Как это грамотно сделать?
Использовать удержание позиции приводом вместо тормоза.
Но если есть механический люфт, то придётся использовать мех. тормоз и индексный режим работы оси.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
dimedved
Кандидат
Сообщения: 76
Зарегистрирован: 28 ноя 2012, 22:22
Репутация: 20
Контактная информация:

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение dimedved »

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

Re: Микрон WF3 DCM. Пересадка мозгов.

Сообщение mikehv »

Люфт должен регулироваться. Я на подобном работаю без тормоза. Правда в основном это 4-х осевая обработка в центре стола. Для обычной 3-х осевой есть отдельный наклонно поворотный стол
Ответить

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