Страница 9 из 22
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 01:50
alex_sar
вопрос возник. когда обычные MR-J2S-A подключаешь, там есть выход Z метки. А по SSCNET никак нельзя определить прохождение этой метки?
прочитал сообщение на предыдущей странице ) получается просто можно кратное одному обороту число брать и считать прохождениечерез это число индексом?
по ней точно хомится удобно. да, понятно что абсолютные энкодеры поддерживаются, но в процессе работы рано или поздно всё равно что-нибудь случится, что придётся заново хомить станок.
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 05:17
merkwurdigliebe
да, z индекс сэмулировать легко - число nyx.0.servo-XX.counts соответствует угловому положению вала двигателя. ловить переход через 0, например.
но я даже не стал пытаться реализовать HOME_USE_INDEX т.к. не понимаю в нем смысла.
конечно, абс энкодеры могут слететь по какой-то причине и приходится иногда перепривязываться. у меня стоят концевики, я по ним и хоумлюсь стандартными средствами. повторяемость, наверное, несколько соток, но лично мне это ни разу не мешало.
на установщике концевиков нет, хоуминг по жестким упорам с ограниченным моментом на моторах.
а индекс - мне не понятно как работает и что дает. все равно концевики нужны, пально? ок, доехали до концевика, поехали в обратную сторону - через некое случайное расстояние 0..5мм (швп 5мм, один оборот) словили индекс. и что? надо как-то замерить это расстояние и внести ручками в INI? а если мотор снимали или муфта провернулась - заново? объясните...
вот если б были линейки с индексом - тогда да...
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 06:35
Duhas
точность индекса должна быть заметно выше чем точность концевика, по идее )
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 07:02
merkwurdigliebe
безусловно, но я не понимаю как это используют на практике
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 07:24
Duhas
ну как уточнение концевика, да. нушли хоум концевик, и дальше или первый индекс после съезда с него или первый на нем.
вопрос еще сколько у вас концевиков )
у меня на 16К20Т1, например, на каждой оси 4 непосредственно концевика и 5 точек срабатывания. 1 концевик рубит привода - самые крайние точки перемещения, еще парочка "софт" лимиты, т.е. лимиты ЧПУ, и уже ЧПУ ограничивает выход за них, ну и и хоум...
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 07:51
aftaev
Duhas писал(а):у меня на 16К20Т1, например, на каждой оси 4 непосредственно концевика и 5 точек срабатывания. 1 концевик рубит привода - самые крайние точки перемещения, еще парочка "софт" лимиты, т.е. лимиты ЧПУ, и уже ЧПУ ограничивает выход за них, ну и и хоум...
Это на станках где нужно каждый раз хомиться при включении.
merkwurdigliebe, про то зачем Z метка нужна в ЧПУ с
абс.энкодерами. Где хомиться нужно раз в пятилетку

Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 07:54
merkwurdigliebe
у меня по одному с каждой стороны. софт-лимит установлен за 0.1мм до срабатывания концевика. хоумится по одному из них. т.е. например
HOME = 185.0
SCALE = 5.0
MIN_LIMIT = -0.1
MAX_LIMIT = 370.1
HOME_OFFSET = -0.2
HOME_SEARCH_VEL = -50.0
HOME_LATCH_VEL = -2.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
при USE_INDEX=YES мне придется либо сократить рабочее поле на 10мм либо измерять и править ручками HOME_OFFSET. правильно я понимаю?
можно конечно сделать не один индекс на оборот, а несколько. так, чтобы при наезде на концевик мы гарантировано оказывались между парой.
но а если при монтаже мотора случится так, что концевик и индекс окажутся в одном месте? тогда пара соток неточности концевика может запросто превратиться в 5мм. т.е. это надо как-то при монтаже контролировать.. короче, по-моему геморрой ненужный
если моторы не отсоединяются - достаточно после первой призявки сохранить .pos файл. у меня туда пишутся смещения home. если батарейки прозевали - слетает счетчик полных оборотов. хоумимся заново с точностью плюс-минус лапоть, выходим, и правим .pos:
Код: Выделить всё
смещение = floor(новое_смещение / шаг) + (старое_смещение % шаг)
ну или типа того, надо чуть подумать и скриптик написать
но если кого это все не волнует - можно индексы добавить, не вопрос. или comp на 3 строчки написать
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 07:58
Duhas
не, я не агитирую, я просто описываю как оно..
на самом деле и правда линейки с индексом самое то )
ПС не знаю на сколько правильно не оставлять запаса ходов..
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 08:06
merkwurdigliebe
запас ходов нужен между концевиком и хард-стопом. потому как туда станок может прилететь на полной скорости, если координаты съедут. а между софт-лимитом и концевиком (который у меня хоум) запас не нужен, т.к. лцсц знает, что там надо остановиться и перелет может быть только если ускорения/сервы не отстроены и отрабатывают задание с большим перебегом.
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 11:25
alex_sar
merkwurdigliebe писал(а):
при USE_INDEX=YES мне придется либо сократить рабочее поле на 10мм либо измерять и править ручками HOME_OFFSET. правильно я понимаю?
Рабочее поле не должно сократиться, просто HOME_OFFSET поправить. Мерить ничего не надо, просто проехать на захомленном станке до лимитов один раз.
но если кого это все не волнует - можно индексы добавить, не вопрос. или comp на 3 строчки написать
Да, это просто, спасибо за ответ.
А use case у меня такой - захотелось откалибровать оси по микронной линейке и сделать файл компенсации, но если после каждого отключения энкодеров от усилителей всё будет слетать, это неинтересно. Как говорил один мой знакомый - "этот геморрой не стоит свеч"
Теперь понятно как сделать.
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 11:50
merkwurdigliebe
а на каком расстоянии точки компенсации?
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 13:10
alex_sar
поддерживается максимально до 256 точек - в одну сторону едешь, потом в обратную, потом эти значения используются вместо BACKLASH. В принципе немало, на ход оси 400мм получается ~1.5 шаг.
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 13:32
merkwurdigliebe
и что получилось? покажите графики, интересно...
я к чему. если бы точек было немного, то особо непринципиально смещение ноля на сотки-десятки. концевиков/упоров хватит.
много точек имеет смысл делать, имхо, если пытаться компенсировать циклическую ошибку швп/опор (lead wobble). хотя бы штуки 4 на оборот. вот тогда да, надо точно привязываться. в таком случае я бы сделал ченить типа жеского упора на швп в виде вращающегося кулачка, который цепляется за выступ на подъезжающей гайке. тогда и отсоединение мотора не страшно...
а может проще процедуру калибровки автоматизировать если линейки постоянно смонтированы

Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 17:06
alex_sar
Пока не мерил ещё, надо люфты поустранять на двух осях, иначе все эти микроны ловить смешно. Самому интересно, что получится, может всё и выйдет в обычный backlash.
Автоматизировать конечно можно и нужно, я уже запланировал - самое простое - сделать usb hid девайс на bluepill, к нему линейку, и небольшой скриптик сделать чтоб ехал по оси с остановками и записывал отклонения.
Раз проблема с индексами решаема, то перекалибровывать получается надо только будет когда серва отключается от оси, а это всё таки крайний случай, нечастый. Тогда вся эта затея имеет смысл.
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 17:37
merkwurdigliebe
а зачем USB? линейку в карточку, вся автоматизация на g-code
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 18:47
alex_sar
Да, я видел, там входы есть, можно и так. Попробую, расскажу - есть смысл в этой калибровке или нет.
Ещё вопрос такой давно интересует. Вкратце, есть какая-то проторенная дорога по тюнингу приводов? С какой стороны там заходить вообще?
По аналогу понятно как настраивать, а тут куча параметров в приводах.
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 26 май 2020, 19:07
merkwurdigliebe
процедура тюнинга в мануале вполне подробно описана, вроде...
у меня на фрезере шпиндель 3500рпм - особо с подачами не разбежишься. поэтому я не заморачивался. для каждой оси в режиме автотюнинга 0 задираем риспонс тайм пока не засвистит. можно фильтром резонанс придавить. потом смотрим наименьший PG1, переключаем все оси в interpolation mode, прописываем одинаковый PG1 - и все...
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 27 май 2020, 22:34
alex_sar
По поводу подключения энкодера к карточке. У меня в хале показываются пины для 2 энкодеров, а здесь вроде только про один речь:
http://www.yurtaev.com/yssc2p.html#douts
pinout поменялся с последней прошивкой?
и вот про пины IO0...3 - если они ещё актуальны - можно подробнее?
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 28 май 2020, 07:15
merkwurdigliebe
да, там до сих пор немножко бардак и в коде, и в документации. наплодил распиновок, сам путаюсь. сорри
должно быть так: пин CN2 - функция
3 - ENC0 A
5 - ENC0 B
6 - ENC0 Z
19 - ENC1 A
21 - ENC1 B
23 - ENC1 Z
Re: Контроллер YSSC2P для серво Mitsubishi SSCNET-II (MR-J2S
Добавлено: 30 май 2020, 14:11
alex_sar
Спасибо, попробую. Взял чип цифрового изолятора, попробую через него подключать, во избежание )
Ещё одну проблему неожиданную обнаружил. Не работают абсолютные энкодеры. Точнее они работают, после полного выключения позиции не сбрасываются.
Но abs-ok возвращает false почему-то. Вот так вот выглядит halcmd show:
halshow (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
16 bit OUT FALSE nyx.0.servo-00.abs-lost
16 bit OUT FALSE nyx.0.servo-00.abs-ok ==> x-absolute
16 bit OUT FALSE nyx.0.servo-00.absolute
16 bit OUT FALSE nyx.0.servo-00.alarm ==> alarm0
16 u32 OUT 0x000000C0 nyx.0.servo-00.alarm-code
16 bit OUT FALSE nyx.0.servo-00.at-speed
16 s32 OUT -20466050 nyx.0.servo-00.counts
16 s32 OUT -20466049 nyx.0.servo-00.counts-cmd
16 s32 OUT 35743 nyx.0.servo-00.dbg
16 u32 OUT 0x0001B67E nyx.0.servo-00.debug
16 bit OUT TRUE nyx.0.servo-00.di1
16 bit OUT TRUE nyx.0.servo-00.di2
16 bit OUT FALSE nyx.0.servo-00.di3
16 s32 OUT 1 nyx.0.servo-00.droop
16 bit IN FALSE nyx.0.servo-00.enable <== x-enable
16 bit OUT FALSE nyx.0.servo-00.enabled
16 s32 OUT 0 nyx.0.servo-00.error-cnt
16 float IN 45 nyx.0.servo-00.forward-torque
16 bit OUT TRUE nyx.0.servo-00.in-position
16 bit IN FALSE nyx.0.servo-00.limit-torque
16 bit OUT FALSE nyx.0.servo-00.offline
16 bit OUT TRUE nyx.0.servo-00.online
16 float IN 286.2627 nyx.0.servo-00.pos-cmd <== x-cmd
16 float OUT 286.2627 nyx.0.servo-00.pos-fb ==> x-pos-fb
16 bit IN TRUE nyx.0.servo-00.power <== estop
16 bit OUT TRUE nyx.0.servo-00.ready
16 bit IN FALSE nyx.0.servo-00.reset-alarm
16 float IN 45 nyx.0.servo-00.reverse-torque
16 bit IN FALSE nyx.0.servo-00.spindle-fwd
16 bit IN FALSE nyx.0.servo-00.spindle-orient
16 bit OUT FALSE nyx.0.servo-00.spindle-oriented
16 bit OUT FALSE nyx.0.servo-00.spindle-orienting
16 bit IN FALSE nyx.0.servo-00.spindle-rev
16 bit OUT FALSE nyx.0.servo-00.torque-clamped
16 float OUT 0 nyx.0.servo-00.trq-fb
16 float IN 0 nyx.0.servo-00.vel-cmd
16 float OUT 0 nyx.0.servo-00.vel-fb
16 bit IN FALSE nyx.0.servo-00.velocity-mode
16 bit OUT FALSE nyx.0.servo-00.warning
16 bit OUT TRUE nyx.0.servo-00.zero-speed
16 bit OUT FALSE nyx.0.servo-01.abs-lost
16 bit OUT FALSE nyx.0.servo-01.abs-ok ==> y-absolute
16 bit OUT FALSE nyx.0.servo-01.absolute
16 bit OUT FALSE nyx.0.servo-01.alarm ==> alarm1
16 u32 OUT 0x000000C1 nyx.0.servo-01.alarm-code
16 bit OUT FALSE nyx.0.servo-01.at-speed
16 s32 OUT -1865103930 nyx.0.servo-01.counts
16 s32 OUT -1865103929 nyx.0.servo-01.counts-cmd
16 s32 OUT 30801 nyx.0.servo-01.dbg
16 u32 OUT 0x0000C5C6 nyx.0.servo-01.debug
16 bit OUT TRUE nyx.0.servo-01.di1
16 bit OUT FALSE nyx.0.servo-01.di2
16 bit OUT FALSE nyx.0.servo-01.di3
16 s32 OUT 1 nyx.0.servo-01.droop
16 bit IN FALSE nyx.0.servo-01.enable <== y-enable
16 bit OUT FALSE nyx.0.servo-01.enabled
16 s32 OUT 0 nyx.0.servo-01.error-cnt
16 float IN 45 nyx.0.servo-01.forward-torque
16 bit OUT TRUE nyx.0.servo-01.in-position
16 bit IN FALSE nyx.0.servo-01.limit-torque
16 bit OUT FALSE nyx.0.servo-01.offline
16 bit OUT TRUE nyx.0.servo-01.online
16 float IN 92073.97 nyx.0.servo-01.pos-cmd <== y-cmd
16 float OUT 92073.97 nyx.0.servo-01.pos-fb ==> y-pos-fb
16 bit IN TRUE nyx.0.servo-01.power <== estop
16 bit OUT TRUE nyx.0.servo-01.ready
16 bit IN FALSE nyx.0.servo-01.reset-alarm
16 float IN 45 nyx.0.servo-01.reverse-torque
16 bit IN FALSE nyx.0.servo-01.spindle-fwd
16 bit IN FALSE nyx.0.servo-01.spindle-orient
16 bit OUT FALSE nyx.0.servo-01.spindle-oriented
16 bit OUT FALSE nyx.0.servo-01.spindle-orienting
16 bit IN FALSE nyx.0.servo-01.spindle-rev
16 bit OUT FALSE nyx.0.servo-01.torque-clamped
16 float OUT -0.1 nyx.0.servo-01.trq-fb
16 float IN 0 nyx.0.servo-01.vel-cmd
16 float OUT 0 nyx.0.servo-01.vel-fb
16 bit IN FALSE nyx.0.servo-01.velocity-mode
16 bit OUT FALSE nyx.0.servo-01.warning
16 bit OUT TRUE nyx.0.servo-01.zero-speed
16 bit OUT FALSE nyx.0.servo-02.abs-lost
16 bit OUT FALSE nyx.0.servo-02.abs-ok ==> z-absolute
16 bit OUT FALSE nyx.0.servo-02.absolute
16 bit OUT FALSE nyx.0.servo-02.alarm ==> alarm2
16 u32 OUT 0x000000C2 nyx.0.servo-02.alarm-code
16 bit OUT FALSE nyx.0.servo-02.at-speed
16 s32 OUT 345707513 nyx.0.servo-02.counts
16 s32 OUT 345707513 nyx.0.servo-02.counts-cmd
16 s32 OUT 25811 nyx.0.servo-02.dbg
16 u32 OUT 0x00011476 nyx.0.servo-02.debug
16 bit OUT TRUE nyx.0.servo-02.di1
16 bit OUT FALSE nyx.0.servo-02.di2
16 bit OUT FALSE nyx.0.servo-02.di3
16 s32 OUT 0 nyx.0.servo-02.droop
16 bit IN FALSE nyx.0.servo-02.enable <== z-enable
16 bit OUT FALSE nyx.0.servo-02.enabled
16 s32 OUT 0 nyx.0.servo-02.error-cnt
16 float IN 45 nyx.0.servo-02.forward-torque
16 bit OUT TRUE nyx.0.servo-02.in-position
16 bit IN FALSE nyx.0.servo-02.limit-torque
16 bit OUT FALSE nyx.0.servo-02.offline
16 bit OUT TRUE nyx.0.servo-02.online
16 float IN -4834.609 nyx.0.servo-02.pos-cmd <== z-cmd
16 float OUT -4834.609 nyx.0.servo-02.pos-fb ==> z-pos-fb
16 bit IN TRUE nyx.0.servo-02.power <== estop
16 bit OUT TRUE nyx.0.servo-02.ready
16 bit IN FALSE nyx.0.servo-02.reset-alarm
16 float IN 45 nyx.0.servo-02.reverse-torque
16 bit IN FALSE nyx.0.servo-02.spindle-fwd
16 bit IN FALSE nyx.0.servo-02.spindle-orient
16 bit OUT FALSE nyx.0.servo-02.spindle-oriented
16 bit OUT FALSE nyx.0.servo-02.spindle-orienting
16 bit IN FALSE nyx.0.servo-02.spindle-rev
16 bit OUT FALSE nyx.0.servo-02.torque-clamped
16 float OUT 0 nyx.0.servo-02.trq-fb
16 float IN 0 nyx.0.servo-02.vel-cmd
16 float OUT 0 nyx.0.servo-02.vel-fb
16 bit IN FALSE nyx.0.servo-02.velocity-mode
16 bit OUT FALSE nyx.0.servo-02.warning
16 bit OUT TRUE nyx.0.servo-02.zero-speed
j2s.par (начало)
Код: Выделить всё
; MR-J2S-B default settings
P00 0 0 0 0 0 0 ; ===
P01 0x0001 0x0001 0x0001 0x0000 0x0000 0x0000 ; *AMS
P02 0 0 0 0 0 0 ; *REG
P03 0x0080 0x0080 0x0080 0x0080 0x0080 0x0080 ; ===
P04 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 ; === ??? 0x0040
P05 1 1 1 1 1 1 ; === ??? 3
P06 255 255 255 255 255 255 ; *FBP reported encoder resolution
P07 0 0 0 0 0 0 ; *POL rotation direction
P08 0x0001 0x0001 0x0001 0x0001 0x0001 0x0001 ; ATU
...
его откомплилировал как полагается..
в каком направлении копать?