Модернизация фрезерного 6Р13Ф3-01
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Питон то фигня, напишем.... Главное понять будет работать или нет 
Как мне кажется стоит сделать:
1. в hal прописать только компонент encoder, плюс добавить наш компонент на питоне в userspace.
2. В нашем компоненте будем отслеживать изменение encoder.position и выдавать команды.
Что меня смущает:
1. Не будет ли лагать при использовании компонента user space?
2. Как быть с энкодером, по идее всем энкодерам нужны свои шкалы, свои 0 и свои единицы.
ЗЫ если энкодеру выдавать сигналы на пины А и В, только если выполняются какие-то условия, то он может потерять 1-2 шага на старте...
Как мне кажется стоит сделать:
1. в hal прописать только компонент encoder, плюс добавить наш компонент на питоне в userspace.
2. В нашем компоненте будем отслеживать изменение encoder.position и выдавать команды.
Что меня смущает:
1. Не будет ли лагать при использовании компонента user space?
2. Как быть с энкодером, по идее всем энкодерам нужны свои шкалы, свои 0 и свои единицы.
ЗЫ если энкодеру выдавать сигналы на пины А и В, только если выполняются какие-то условия, то он может потерять 1-2 шага на старте...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
В том то и дело что хотелось бы уйти от использования hal причем на уровне base thread для реализации фактически пользовательского интерфейса.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
я точно знаю, что во взрослых ЧПУ это всё на ладдере написано.
p.s. чинил я тут недавно руку измерительную у токарника, так вот там ладдер на 276 страниц распечатался. Всё там через ладдер сделано.
В шкафу только силовые реле, привода, блок питания и теплушки. В ладдер заводятся все сигналы с пульта стойки и обрабатываются, но ихмо 276 станиц ладдера это просто задница.
Если свой компонент написать, и откомпилить, то может интереснее получится. Но я гдет тут читал, что питон и реальное время - несовместимые штуки
а перемещения в ручном режиме хочется нормальными сделать
p.s. чинил я тут недавно руку измерительную у токарника, так вот там ладдер на 276 страниц распечатался. Всё там через ладдер сделано.
В шкафу только силовые реле, привода, блок питания и теплушки. В ладдер заводятся все сигналы с пульта стойки и обрабатываются, но ихмо 276 станиц ладдера это просто задница.
Если свой компонент написать, и откомпилить, то может интереснее получится. Но я гдет тут читал, что питон и реальное время - несовместимые штуки
а перемещения в ручном режиме хочется нормальными сделать
- Алексс
- Почётный участник

- Сообщения: 2210
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 266
- Заслуга: IQ32
- Настоящее имя: Алексей
- Откуда: Прага
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
а есть какая-то доходчивая дока на ладдер ???
чую вещь нужная, но совершенно не понятяная
чую вещь нужная, но совершенно не понятяная
Каждая собака, бегущая на поводке впереди хозяина, думает, что ведет его за собой.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
начал было писать по ладдеру для снуляначинающих-но продвинулся не далёкоАлексс писал(а):а есть какая-то доходчивая дока на ладдер
http://cnc-club.ru/forum/viewtopic.php? ... 379#p29379
там книжки есть-не много инфы-но все же...
- Алексс
- Почётный участник

- Сообщения: 2210
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 266
- Заслуга: IQ32
- Настоящее имя: Алексей
- Откуда: Прага
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
пасиб, дома полистаю.
там видимо все просто, надо только понять
там видимо все просто, надо только понять
Каждая собака, бегущая на поводке впереди хозяина, думает, что ведет его за собой.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
вот сделал пультик на pyvcp, для отладки пока на pyvcp
режимы меняет как задумано.
Вопрос. Как заставить энкодер считать в заданном диапазоне? например от 0 до 100, чтоб регулировку подачи сделать?
режимы меняет как задумано.
Вопрос. Как заставить энкодер считать в заданном диапазоне? например от 0 до 100, чтоб регулировку подачи сделать?
- Вложения
-
- 6r13f3-1.xml
- (2.01 КБ) 1138 скачиваний
-
- test.hal
- (5.21 КБ) 1171 скачивание
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
есть limit1 правда position всеравно уйдет за пределы...
http://www.linuxcnc.org/docs/devel/html ... it1.9.html
http://www.linuxcnc.org/docs/devel/html ... it1.9.html
Ну ты же для перемещений будешь задавать смещения, а их можно не в realtime задавать.Lexxa писал(а):Если свой компонент написать, и откомпилить, то может интереснее получится. Но я гдет тут читал, что питон и реальное время - несовместимые штуки
а перемещения в ручном режиме хочется нормальными сделать
А ладдер там как реализуется? На отдельном чипе, или в серво-потоке или в user space?Lexxa писал(а): Всё там через ладдер сделано.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
не знаю, таких подробностей фанук не выкладывает. Но фанук это по большому счету калькулятор, там всё на отдельных чипах.Nick писал(а):А ладдер там как реализуется? На отдельном чипе, или в серво-потоке или в user space?
Про реалтайм согласен пожалуй, а на значение позишн я бы класть хотел, поскольку наверное на логике можно сделать будет ресет энкодер позишну.
Ник, почему ты заморачиваешься по нагрузке хала функциями?? За отработку траектории переживаешь? Может добавить тогда всё, касающееся пульта, обновлять не с серво, а тем более не с бэйс, потоком, а добавить третий, еще медленне.
По идее ничего не мешает это сделать, верно?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
По идее да, но так же ничего не мешает запихать все это в user-space.
Про real-time потоки, загружать их сильно наверное не стоит, ибо можно начать хватать всякие задержки или придется период длиннее делать. Кстати, а энкодер ты будешь месой обрабатывать? Если да, то тогда and2 ко входам применить не получится. До LinuxCNC и всех его компонентов входы не дойдут - им доступны только уже обработанные пины.
Про real-time потоки, загружать их сильно наверное не стоит, ибо можно начать хватать всякие задержки или придется период длиннее делать. Кстати, а энкодер ты будешь месой обрабатывать? Если да, то тогда and2 ко входам применить не получится. До LinuxCNC и всех его компонентов входы не дойдут - им доступны только уже обработанные пины.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Это я к сожалению выяснил(((( когда писал про несовместимость пинов.Nick писал(а):Кстати, а энкодер ты будешь месой обрабатывать? Если да, то тогда and2 ко входам применить не получится. До LinuxCNC и всех его компонентов входы не дойдут - им доступны только уже обработанные пины.
Хмммм, а может совсем и не надо перекидывать энкодер??
просто завести один пин энкодер.позишн и на два входа - халуи.инкреент и халуи.фид.оверрайд.
и не развязывать их совсем, поскольку они отрабатывают в разных режимах. при переключении режимов делать ресет энкодеру, чтобы всегда иметь одно и тоже значение? и включать режимами пин типа halui.feed-override.count-enable
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Тут штука в чем, не плохо бы значения пинов сохранять при переходах в другой режим - значит надо работать не с абсолютными значениями, а с приращениями.
О, придумал!!!
Делаем через ClassicLadder - пусть у нас есть 1 энкодер, каждый переход на другой режим - сброс энкодера в 0. Т.е.
В ручном режиме - джоггим оси по counts:
В автоматическом меняем feed override по приращению, причем этот выход feed override лучше потом прогнать через limit1.
(нижние две строчки это одна строчка, просто не помещается)
И самое клевое в этом всем, что classic ladder можно загнать или в rt в какой-нибудь поток, или в user space, по своему усмотрению
!
О, придумал!!!
Делаем через ClassicLadder - пусть у нас есть 1 энкодер, каждый переход на другой режим - сброс энкодера в 0. Т.е.
Код: Выделить всё
halui.mode.is-auto encoder.reset
---|/\|----------+-------------()---
|
halui.mode.is-mdi |
---|/\|------------------+
|
halui.mode.is-manual |
---|/\|------------------+
|
|
---|/\|------------------+
В ручном режиме - джоггим оси по counts:
Код: Выделить всё
halui.mode.is-manual axis.N.jog-enable
----| |-------------+----------------()--------------
|
| encoder.counts axis.N.jog-counts
+-------| |-------------()-------
Код: Выделить всё
halui.mode.is-auto
------+-----| |-----------+-----------
| |
| halui.mode.is-mdi |
+-----| |-----------+
+--------------------------------------------------------------+ +------------------------------+
-| feed_override = feed_override + encoder.position - last_pos |--| last_pos = encoder.position |----
+--------------------------------------------------------------+ +------------------------------+И самое клевое в этом всем, что classic ladder можно загнать или в rt в какой-нибудь поток, или в user space, по своему усмотрению
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Ник. респект! ведь ladder может разруливать float))))) я забыл совсем об этом
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
я чёт не прошарил как последнее (какими компонентами ладдера) реализовать
last_pos присваевается в Assignament?
и по идее feed_override тоже. Но их же нельзя вроде в одной строчке делать.
------
короче сделал я пока так:
При переходе из режима в режим пришлось ставить задержку, а то энкодер сбрасывался в ноль, а исполнительная релюшка нет (рис 1)
Пришлось прикручивать энкодер.велосити. ненулевое значение включает задержку в 1 мс, чтобы запомнить значение предыдущее значение. Далее вычисляется разность между текущим значением энкодер.позишн и предыдущим.
Если разность больше нуля, увеличить подачу, если меньше - убавить. (рис.2)
Вроде как даже работает, жаль только что скорость регулировки подачи никак не увеличивается(
может как нить еще сделать лучше?
last_pos присваевается в Assignament?
и по идее feed_override тоже. Но их же нельзя вроде в одной строчке делать.
------
короче сделал я пока так:
При переходе из режима в режим пришлось ставить задержку, а то энкодер сбрасывался в ноль, а исполнительная релюшка нет (рис 1)
Пришлось прикручивать энкодер.велосити. ненулевое значение включает задержку в 1 мс, чтобы запомнить значение предыдущее значение. Далее вычисляется разность между текущим значением энкодер.позишн и предыдущим.
Если разность больше нуля, увеличить подачу, если меньше - убавить. (рис.2)
Вроде как даже работает, жаль только что скорость регулировки подачи никак не увеличивается(
может как нить еще сделать лучше?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
и, черт подери, каакой-то косяк с режимами((((((
выбираешь с пульта например режим авто, открываешь программу и не с того не с сего ставится режим мануал, хотя халуи.моде.авто = 1
выбираешь с пульта например режим авто, открываешь программу и не с того не с сего ставится режим мануал, хотя халуи.моде.авто = 1
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
неоднократно было замечено это- пыталисть прикрутить смену режимов скриптами-не было однозначности в переключенииLexxa писал(а): каакой-то косяк с режимами
забросил эту идею-решив что не доделано это в емс
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Я обратил внимание, что когда программа заканчивает отработку, всегда переключается в ручной режим, причем неважно как заканчивается программа - сама или с ошибкой.
как бы это обойти....
т.е. например дополнительно передернуть режим авто, типа
как бы это обойти....
т.е. например дополнительно передернуть режим авто, типа
Код: Выделить всё
panel-mode-auto halui.mode.is-auto 100мс halui.mode.manual
-----| |----------------------------| / |------------------------------| TOF |-------------------( )---------------
panel-mode-auto halui.mode.is-manual 200мс halui.mode.auto
-----| |----------------------------| |------------------------------| TOF |-------------------( )----------------
aftaev
- Зачётный участник

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Lexxa, перерыл тему целиком но фотос станка не обнаружил
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
