Страница 13 из 21

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 31 июл 2012, 17:45
Lexxa
может, но я в питоне не бум бум.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 00:38
Nick
Питон то фигня, напишем.... Главное понять будет работать или нет :)
Как мне кажется стоит сделать:
1. в hal прописать только компонент encoder, плюс добавить наш компонент на питоне в userspace.
2. В нашем компоненте будем отслеживать изменение encoder.position и выдавать команды.
Что меня смущает:
1. Не будет ли лагать при использовании компонента user space?
2. Как быть с энкодером, по идее всем энкодерам нужны свои шкалы, свои 0 и свои единицы.

ЗЫ если энкодеру выдавать сигналы на пины А и В, только если выполняются какие-то условия, то он может потерять 1-2 шага на старте...

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 08:10
Lexxa
2 - фигня, сделаем с помощью компонент or and

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 13:40
Nick
В том то и дело что хотелось бы уйти от использования hal причем на уровне base thread для реализации фактически пользовательского интерфейса.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 13:54
Lexxa
я точно знаю, что во взрослых ЧПУ это всё на ладдере написано.

p.s. чинил я тут недавно руку измерительную у токарника, так вот там ладдер на 276 страниц распечатался. Всё там через ладдер сделано.
В шкафу только силовые реле, привода, блок питания и теплушки. В ладдер заводятся все сигналы с пульта стойки и обрабатываются, но ихмо 276 станиц ладдера это просто задница.

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

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 15:21
Алексс
а есть какая-то доходчивая дока на ладдер ???
чую вещь нужная, но совершенно не понятяная :(

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 16:02
nkp
Алексс писал(а):а есть какая-то доходчивая дока на ладдер
начал было писать по ладдеру для снуляначинающих-но продвинулся не далёко ;)
http://cnc-club.ru/forum/viewtopic.php? ... 379#p29379
там книжки есть-не много инфы-но все же...

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 16:07
Алексс
пасиб, дома полистаю.
там видимо все просто, надо только понять :)

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 17:49
Lexxa
вот сделал пультик на pyvcp, для отладки пока на pyvcp
режимы меняет как задумано.
Вопрос. Как заставить энкодер считать в заданном диапазоне? например от 0 до 100, чтоб регулировку подачи сделать?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 18:36
Nick
есть limit1 правда position всеравно уйдет за пределы...
http://www.linuxcnc.org/docs/devel/html ... it1.9.html
Lexxa писал(а):Если свой компонент написать, и откомпилить, то может интереснее получится. Но я гдет тут читал, что питон и реальное время - несовместимые штуки
а перемещения в ручном режиме хочется нормальными сделать
Ну ты же для перемещений будешь задавать смещения, а их можно не в realtime задавать.
Lexxa писал(а): Всё там через ладдер сделано.
А ладдер там как реализуется? На отдельном чипе, или в серво-потоке или в user space?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 21:45
Lexxa
Nick писал(а):А ладдер там как реализуется? На отдельном чипе, или в серво-потоке или в user space?
не знаю, таких подробностей фанук не выкладывает. Но фанук это по большому счету калькулятор, там всё на отдельных чипах.

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

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

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 02 авг 2012, 23:19
Nick
По идее да, но так же ничего не мешает запихать все это в user-space.

Про real-time потоки, загружать их сильно наверное не стоит, ибо можно начать хватать всякие задержки или придется период длиннее делать. Кстати, а энкодер ты будешь месой обрабатывать? Если да, то тогда and2 ко входам применить не получится. До LinuxCNC и всех его компонентов входы не дойдут - им доступны только уже обработанные пины.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 03 авг 2012, 08:20
Lexxa
Nick писал(а):Кстати, а энкодер ты будешь месой обрабатывать? Если да, то тогда and2 ко входам применить не получится. До LinuxCNC и всех его компонентов входы не дойдут - им доступны только уже обработанные пины.
Это я к сожалению выяснил(((( когда писал про несовместимость пинов.

Хмммм, а может совсем и не надо перекидывать энкодер??
просто завести один пин энкодер.позишн и на два входа - халуи.инкреент и халуи.фид.оверрайд.
и не развязывать их совсем, поскольку они отрабатывают в разных режимах. при переключении режимов делать ресет энкодеру, чтобы всегда иметь одно и тоже значение? и включать режимами пин типа halui.feed-override.count-enable

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 03 авг 2012, 09:18
Nick
Тут штука в чем, не плохо бы значения пинов сохранять при переходах в другой режим - значит надо работать не с абсолютными значениями, а с приращениями.
О, придумал!!!

Делаем через 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
                     +-------| |-------------()-------
В автоматическом меняем feed override по приращению, причем этот выход feed override лучше потом прогнать через limit1.

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


         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, по своему усмотрению :)!

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 03 авг 2012, 09:57
Lexxa
Ник. респект! ведь ladder может разруливать float))))) я забыл совсем об этом

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 05 авг 2012, 04:11
Lexxa
я чёт не прошарил как последнее (какими компонентами ладдера) реализовать
last_pos присваевается в Assignament?
и по идее feed_override тоже. Но их же нельзя вроде в одной строчке делать.
------
короче сделал я пока так:
При переходе из режима в режим пришлось ставить задержку, а то энкодер сбрасывался в ноль, а исполнительная релюшка нет (рис 1)
Пришлось прикручивать энкодер.велосити. ненулевое значение включает задержку в 1 мс, чтобы запомнить значение предыдущее значение. Далее вычисляется разность между текущим значением энкодер.позишн и предыдущим.
Если разность больше нуля, увеличить подачу, если меньше - убавить. (рис.2)
Вроде как даже работает, жаль только что скорость регулировки подачи никак не увеличивается(
может как нить еще сделать лучше?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 05 авг 2012, 11:07
Lexxa
и, черт подери, каакой-то косяк с режимами((((((
выбираешь с пульта например режим авто, открываешь программу и не с того не с сего ставится режим мануал, хотя халуи.моде.авто = 1

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 05 авг 2012, 12:19
nkp
Lexxa писал(а): каакой-то косяк с режимами
неоднократно было замечено это- пыталисть прикрутить смену режимов скриптами-не было однозначности в переключении
забросил эту идею-решив что не доделано это в емс

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 05 авг 2012, 12:57
Lexxa
Я обратил внимание, что когда программа заканчивает отработку, всегда переключается в ручной режим, причем неважно как заканчивается программа - сама или с ошибкой.

как бы это обойти....
т.е. например дополнительно передернуть режим авто, типа

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

panel-mode-auto                   halui.mode.is-auto                      100мс             halui.mode.manual
-----|   |----------------------------| / |------------------------------| TOF |-------------------(  )---------------
 
panel-mode-auto                 halui.mode.is-manual                      200мс             halui.mode.auto
-----|   |----------------------------|   |------------------------------| TOF |-------------------(  )---------------

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 05 авг 2012, 13:50
aftaev
Lexxa, перерыл тему целиком но фотос станка не обнаружил