Страница 3 из 46

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 30 ноя 2016, 16:09
vovafed
_not :wik: может так больше ничего не нашел

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 30 ноя 2016, 22:08
MGG
Поскольку я колзозник знатный, сурово борюсь с наводками и грамотным заземлением. Заземленно будет фсе! Сила земли, приди к нам!

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 30 ноя 2016, 23:28
MGG
vovafed писал(а):_not может так больше ничего не нашел
Узнал у производителя контроллера, по умолчанию такого функционала нет.. о_О.
Говорит или через ладдер делай (долгая с ним морока?)
Или как у него время будет сделает.

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 01 дек 2016, 12:58
botcman
Какого функционала нет?

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 01 дек 2016, 13:02
MGG
botcman писал(а):Какого функционала нет?
Нельзя сказать входу, что датчик нормально замкнутый (с терминологией у меня проблемы)


upd: вроде вчитался, что мне написали, буду еще пробовать компонент NOT грузить.

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 16:05
MGG
Здравствуйте товарищи, наконец после всяких разных приключений, полноценно вернулся к работе со станком. Итог всех предыдущих мучений, надо было выкинуть реле, причем сразу, и еще в ноябре, не угробил бы столько времени.
Теперь новое мучение, как это все заставить работать, так, как надо.
В данном случае у меня ситуация такая, циферки крутятся (но не все) Ось Y реальная в аксисе является осью Z, не могу заставить работать спаренно двигатели, причем до всех приключений это как то удавалось (ну только синхронно покрутить правда). Постоянно вылетаю с Joint following error, причем или сразу по фактической Y, а по системе Z, иногда запускается на несколько секунд и вылетаю по Х. Может есть у кого мысли по HAL, чтоб понять, где я так протупил. Благодарю!

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

    loadrt trivkins
    loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES


    # My driver
    loadrt to_pci

    loadrt pid names=pid.x,pid.y,pid.z,pid.a

    # ################################################
    # THREADS
    # ################################################

    addf to_pci.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.a.do-pid-calcs      servo-thread

    net x-enable to_pci.1.pins.pin-00-out
    net a-enable to_pci.1.pins.pin-01-out
    net y-enable to_pci.1.pins.pin-02-out
    net z-enable to_pci.1.pins.pin-03-out
    

    # --- HOME-X ---
    #net home-x     <=  to_pci.1.pins.pin-24-in

    # --- HOME-Y ---
    net home-y     <=  to_pci.1.pins.pin-25-in

    # --- HOME-Z ---
    net home-z     <=  to_pci.1.pins.pin-26-in

    ########### egantry ###########################
    loadrt egantry count=1 personality=2
    addf  egantry.0                         servo-thread

    setp  egantry.0.align-vel 50
    setp  egantry.0.align-acc 100
    setp  egantry.0.align-hyst 0.05
    setp  egantry.0.align-hyst 0.05
    #setp  egantry.0.joint.01.correct 1
   

    # position & feedback
    net x-pos-cmd   egantry.0.axis.motor-pos-cmd  => axis.0.motor-pos-cmd
    net x-pos-fb    egantry.0.axis.motor-pos-fb   => axis.0.motor-pos-fb
    net x1-pos-cmd  egantry.0.joint.00.pos-cmd    => pid.x.command
    net x1-pos-fb   egantry.0.joint.00.pos-fb     <= pid.x.feedback
    net x2-pos-cmd  egantry.0.joint.01.pos-cmd    => pid.a.command
    net x2-pos-fb   egantry.0.joint.01.pos-fb     <= pid.a.feedback

    # enables 
    net x-enable   egantry.0.axis.amp-enable   <= axis.0.amp-enable-out 
    net x1-enable  egantry.0.joint.00.enable   => pid.x.enable
    net x2-enable  egantry.0.joint.01.enable   => pid.a.enable

    # index_ENC  
    net x-index-enable    egantry.0.axis.index-enable       <= axis.0.index-enable
    net x1-index-enable   egantry.0.joint.00.index-enable   => pid.x.index-enable
    net x2-index-enable   egantry.0.joint.01.index-enable   => pid.a.index-enable

    # home switches & othrs
    net x-home-sw     egantry.0.axis.home-sw      => axis.0.home-sw-in
    net x1-home-sw    egantry.0.joint.00.home-sw  <= to_pci.1.pins.pin-24-in
    #net x2-home-sw    egantry.0.joint.01.home-sw  <= to_pci.1.pins.pin-30-in

    net x-home-state     axis.0.home-state      => egantry.0.axis.home-state
    net x-homed          axis.0.homed           => egantry.0.axis.homed


    ########## egantry ###########################


    #*******************
    #  AXIS 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-vel-cmd       =>  pid.x.command-deriv
    net x-output        =>  pid.x.output
    

    # ---PWM Generator signals/setup---

    setp  to_pci.1.out_scale0 1

    net x-enable     axis.0.amp-enable-out
    net x-enable =>  to_pci.1.pins.pin-00-out 
    net x-output => to_pci.1.dcontrol0

    # --------fb--------------
    setp    to_pci.1.feedback.enc_scale0 2000

    
    net x1-pos-fb               =>  to_pci.1.feedback.encoder0
    net x-index-enable    axis.0.index-enable  <=> to_pci.1.feedback.index_en0
    

    

    #*******************
    #  AXIS X1
    #*******************
    setp   pid.a.Pgain     [AXIS_0]P
    setp   pid.a.Igain     [AXIS_0]I
    setp   pid.a.Dgain     [AXIS_0]D
    setp   pid.a.bias      [AXIS_0]BIAS
    setp   pid.a.FF0       [AXIS_0]FF0
    setp   pid.a.FF1       [AXIS_0]FF1
    setp   pid.a.FF2       [AXIS_0]FF2
    setp   pid.a.deadband  [AXIS_0]DEADBAND
    setp   pid.a.maxoutput [AXIS_0]MAX_OUTPUT

    #net a-index-enable  <=> pid.a.index-enable
    #net a-enable        =>  pid.a.enable
    #net a-pos-cmd       =>  pid.a.command
    net a-vel-cmd       =>  pid.a.command-deriv
    #net a-pos-fb        =>  pid.a.feedback
    net a-output        =>  pid.a.output

    # ---PWM Generator signals/setup---

    setp  to_pci.1.out_scale1 1

   
    net a-enable => to_pci.1.pins.pin-01-out
    net a-output => to_pci.1.dcontrol1

    # --------fb--------------
    setp    to_pci.1.feedback.enc_scale1 2000
    

    #net a-pos-fb               <=  to_pci.1.feedback.encoder1
    
    net x2-pos-fb               =>  to_pci.1.feedback.encoder1
    net a-index-enable             axis.3.index-enable  <=> to_pci.1.feedback.index_en1
    

    #*******************
    #  AXIS Y
    #*******************
    setp   pid.y.Pgain     [AXIS_0]P
    setp   pid.y.Igain     [AXIS_0]I
    setp   pid.y.Dgain     [AXIS_0]D
    setp   pid.y.bias      [AXIS_0]BIAS
    setp   pid.y.FF0       [AXIS_0]FF0
    setp   pid.y.FF1       [AXIS_0]FF1
    setp   pid.y.FF2       [AXIS_0]FF2
    setp   pid.y.deadband  [AXIS_0]DEADBAND
    setp   pid.y.maxoutput [AXIS_0]MAX_OUTPUT

    net y-index-enable  <=> pid.y.index-enable
    net y-enable        =>  pid.y.enable
    net y-pos-cmd       =>  pid.y.command
    net y-vel-cmd       =>  pid.y.command-deriv
    net y-pos-fb        =>  pid.y.feedback
    net y-output        =>  pid.y.output

    # ---PWM Generator signals/setup---

    setp  to_pci.1.out_scale2 1

    net y-enable     axis.1.amp-enable-out
    net y-enable =>  to_pci.1.pins.pin-02-out 
    net y-output => to_pci.1.dcontrol2

    # --------fb--------------
    setp    to_pci.1.feedback.enc_scale2 2000
    

    net y-pos-fb               <=  to_pci.1.feedback.encoder2
    net y-pos-fb               =>  axis.1.motor-pos-fb
    net y-index-enable             axis.1.index-enable  <=> to_pci.1.feedback.index_en2

    net min-home-y    =>  axis.1.home-sw-in
    #net min-home-y     =>  axis.2.neg-lim-sw-in
    net y-pos-limit     =>  axis.1.pos-lim-sw-in

    #*******************
    #  AXIS Z
    #*******************
    setp   pid.z.Pgain     [AXIS_0]P
    setp   pid.z.Igain     [AXIS_0]I
    setp   pid.z.Dgain     [AXIS_0]D
    setp   pid.z.bias      [AXIS_0]BIAS
    setp   pid.z.FF0       [AXIS_0]FF0
    setp   pid.z.FF1       [AXIS_0]FF1
    setp   pid.z.FF2       [AXIS_0]FF2
    setp   pid.z.deadband  [AXIS_0]DEADBAND
    setp   pid.z.maxoutput [AXIS_0]MAX_OUTPUT

    net z-index-enable  <=> pid.z.index-enable
    net z-enable        =>  pid.z.enable
    net z-pos-cmd       =>  pid.z.command
    net z-vel-cmd       =>  pid.z.command-deriv
    net z-pos-fb        =>  pid.z.feedback
    net z-output        =>  pid.z.output

    # ---PWM Generator signals/setup---

    setp  to_pci.1.out_scale3 1

    net z-enable     axis.2.amp-enable-out
    net z-enable =>  to_pci.1.pins.pin-03-out 
    net z-output => to_pci.1.dcontrol3

    # --------fb--------------
    setp    to_pci.1.feedback.enc_scale3 2000
  
    net z-pos-fb               <=  to_pci.1.feedback.encoder3
    net z-pos-fb               =>  axis.2.motor-pos-fb
    net z-index-enable             axis.2.index-enable  <=> to_pci.1.feedback.index_en3

    net min-home-z    =>  axis.2.home-sw-in
    #net min-home-z     =>  axis.2.neg-lim-sw-in
    net z-pos-limit     =>  axis.2.pos-lim-sw-in


Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 16:10
NKS
MGG писал(а): Постоянно вылетаю с Joint following error
Так у тебя ПИДы осей не настроены... ... от слова совсем.

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 16:57
MGG
Да, про это то я и забыл. Рано я пить завязал :D
Дремучий лес

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 17:05
NKS
MGG писал(а): Рано я пить завязал
Это факт. :) Надо накатить, чтобы руки не дрожали :hehehe:

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 17:57
MGG
Странная фигня, с обратной связью 1 мотор управляется без проблем. Все скопом даже не включаются, некоторые делают резкий оборот, и вываливает джойнт еррор

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

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 19:14
frezeryga
Я все жду на сколько тебя хватит с аналогом? Когда уже бросиш и запустиш по цифре быстро.

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 19:32
Coffeein
Преимущество аналога какое? Точность позиционирования?

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 19:55
Serg
Аналог тут не при чём. При таком подходе и с цифрой не заработает...
В описании egantry чётко сказано, что все одноимённые пины должны быть подключены. Тот, кто считает себя умнее автора обречён на проблемы... :)
Детально не втуплял, а из того, что бросилось в глаза: pid.a.enable никуда не подключен - т.е. pid.a вообще не работает. При любом движении Х привод А остаётся на месте, получается рассогласование и egantry передаёт его в axis, а тот сравнивает его с FERROR...
pid.x и pid.a тоже придётся настраивать, причём оба одновременно...

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 20:19
MGG
UAVpilot писал(а):Аналог тут не при чём. При таком подходе и с цифрой не заработает...
В описании egantry чётко сказано, что все одноимённые пины должны быть подключены. Тот, кто считает себя умнее автора обречён на проблемы... :)
Детально не втуплял, а из того, что бросилось в глаза: pid.a.enable никуда не подключен - т.е. pid.a вообще не работает. При любом движении Х привод А остаётся на месте, получается рассогласование и egantry передаёт его в axis, а тот сравнивает его с FERROR...
pid.x и pid.a тоже придётся настраивать, причём оба одновременно...
Это поправил уже, просто у меня уже столько версий собранных по крупицам в слепую, что попутал с версией. Этот момент уже работает. Крутится, рассогласования пока нет :)

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 20:26
frezeryga
Значит надо бросать линукс он для особой касты. И брать клоп или муснс

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 20:30
MGG
Клоп такая же беда, как и линукс

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 20:37
Serg
frezeryga писал(а):Значит надо бросать линукс он для особой касты.
Linux - дружественная ОС, только она разборчива в выборе друзей. :)
Не любит тех, кто не читая мануалов начинает тыкать в неё чем попало.
frezeryga писал(а):И брать клоп или муснс
А если и там в настройки абы как потыкать и они не заработают правильно, то их тоже бросать? Сколько они там стоят?..
А что тогда брать?.. А если и там?..

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 20:41
AlexNikov
MGG писал(а):Клоп такая же беда, как и линукс
От уж не соглашусь. И уверен что со мной солидарен не один форумчанен. Клоп запускается и настраивается довольно просто. Для его базового использования знание программирования вообще не требуется. Достаточно вдумчиво прочитать тему Саши про ввод в эксплуатацию к-флопа.

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 20:43
MGG
UAVpilot писал(а):Linux - дружественная ОС, только она разборчива в выборе друзей. :)
Не любит тех, кто не читая мануалов начинает тыкать в неё чем попало
я там выше писал, что
MGG писал(а):Все же кажется какой-то косяк в конфиге у меня,
И да, к этму моменту все заработало :)

Кстати, дабы ремни не свистели сильно, нужно натягивать сильнее?

Re: Портальник по мягким металлам по проекту Фрезеряги.

Добавлено: 21 янв 2017, 22:29
aegis
MGG писал(а):Кстати, дабы ремни не свистели сильно, нужно натягивать сильнее?
на ремни есть мануалы производителей, который говорят с каким усилием надо натягивать. ремни омнибелт например почитайте каталоги