Страница 20 из 48
[WIKI] FAQ по EMC2 LinuxCNC
Добавлено: 25 окт 2010, 09:53
Nick
(для просмотра содержимого нажмите на ссылку)Q: EMC2 выдает такую ошибку: "Unexpected realtime delay: chek dmesg for details.". Что делать?
A: Это означает, что один из интервалов задержки стал больше Base period. Нужно увеличить base period в настройках EMC2. Запустите Приложения -> EMC2 -> Latеncy Test, попробуйте нагрузить компьютер, откройте несколько окон веб-браузера, запустите фильм, поставьте копироваться большой файл, по-перемещайте окна по экрану. После всего этого смотрим в окно Latency Test и запоминаем параметр
Max Jitter для
Base thread (если вы используете серво двигатели, Вам понадобятся оба параметра). Запускаем Приложения -> EMC2 -> Stepconf и в окне настройки конфигурации указываем
Base period Maximum Jitter.
Q: При выполнении поиска начал осей (homing) EMC2 выдает ошибку "joint limit error"
A: Наверняка Вы используете в качестве датчика начала (home) один из концевых переключателей оси. Для корректного выполнения поиска в этом случае нужно:
- Чтобы Home Location не было равно Home Switch Location. Т.к. после процедуры поиска начала станок остановится в положении Home Location, и оно не должно вызывать срабатывания концевого датчика оси.
- Чтобы в конфигурационном файле в разделе описания оси присутствовала строчка "HOME_IGNORE_LIMITS = YES".
Q: Как запустить станок избегая процедуру поиска начал (homing)? Возникает ошибка: "Не могу исполнить программу если не найдены начала" ("Can't run a program when not homed").
A: EMC2 отказывается выполнять программы до тех пор пока не найдены начала осей потому, что EMC2 должен точно знать в каком положении находится станок, чтобы не дать ему выехать за пределы осей. Настоятельно рекомендую установить концевики и делать поиск нулей при каждом запуске EMC2 (при наличии концевиков это делается нажатием одной клавиши). Если концевиков нет, начала оси можно выставлять вручную.
Если совсем не хочется выставлять начала, то можно в файле конфигурации в раздел [TRAJ] нужно добавить строчку: "NO_FORCE_HOMING = 1" и EMC2 не будет выдавать эту ошибку. Но в этом случае нужно быть особенно внимательным следя за работой станка, т.к. EMC2 не сможет контролировать пределы осей и появится вероятность их превышения, что может привести к поломке станка

!
Q: LinuxCNC не запускается, выдает ошибку RTAI[hal]: ERROR, LOCAL APIC CONFIGURED BUT NOT AVAILABLE/ENABLED.
A: Проблема с установкой EMC2 #48
Это незавершенный раздел, Вы можете помочь в его оформлении.
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 14:19
nkp
для удобства (имхо) работы с питон очень помогает дополнительный модуль в gedit:
после его установки консоль питона вызывается прямо в gedit по Ctrl+F9
это намного быстрей ,чем пользовать обычный терминал
работают привычные сочетания клавиш для копипаста
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 15:12
zilk
Отлично, спасибо! Буду разбираться с питоном для следующей безумной идеи...

Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 16:09
zilk
nkp писал(а):так что нужно "запоминать" последнюю строку

а как бы этот номер строки из motion.program-line передать в скрипт в качестве переменной?
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 16:15
Ворон226
Может так?
В HAL:
net strok motion.program-line имя подпрограммы.strok
а в подпрограмме прописать
h = hal.component("имя подпрограммы")
h.newpin("strok", hal.HAL_FLOAT, hal.HAL_IN)
...
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 16:19
zilk
Ворон226 писал(а):В HAL:
net strok motion.program-line имя подпрограммы.strok
А net что, не только пины и сигналы соединяет?
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 16:20
nkp
Ворон226 писал(а):а как бы этот номер строки из motion.program-line передать в скрипт в качестве переменной?
Код: Выделить всё
import linuxcnc
s = linuxcnc.stat()
s.poll()
ln=s.current_line
ln - это и есть номер активной линии
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 16:25
nkp
то есть в нужный момент вызываем:
эта функция обновляет все данные состояния емс
после этого можно просмотреть-воспользоваться любыми данными
(в том числе текущей строкой)
Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 16:59
zilk
nkp, оказывается, тема уже подымалась...
Python в LinuxCnC #2

Re: FAQ по EMC2 LinuxCNC
Добавлено: 10 фев 2013, 17:40
nkp
zilk писал(а):nkp, оказывается, тема уже подымалась.
да - тему я же и поднимал
но решение вопроса было найдено кривое(имхо)
а тут все встроенными командами
открой axis.py - там те же функции:
например вот кусок (для просмотра содержимого нажмите на ссылку)def estop_clicked(event=None):
s.poll()
if s.task_state == linuxcnc.STATE_ESTOP:
c.state(linuxcnc.STATE_ESTOP_RESET)
else:
c.state(linuxcnc.STATE_ESTOP)
def onoff_clicked(event=None):
s.poll()
if s.task_state == linuxcnc.STATE_ESTOP_RESET:
c.state(linuxcnc.STATE_ON)
else:
c.state(linuxcnc.STATE_OFF)
и не только Axis

Re: FAQ по EMC2 LinuxCNC
Добавлено: 13 фев 2013, 01:55
Ворон226
Проблема в следующем:
Хочу использовать motion.distance-to-go для выключения двигателя насоса за 10 мм до окончания движения по контуру
Понятно, что нужно организовать процедуру сравнения значения motion.distance-to-go с "10" и по совпадению скинуть motion.analog-out-00 в ноль (у меня этот пин используется в управлении насосом). Но вот синтаксис этого "действия" мной ещё не освоен...
Пробовал самостоятельно (в другом вопросе) "поиграться" с пинами motion.spindle-on и motion.spindle-reverse, но "в лоб" не получилось... Похоже пришло время научиться.
Народ! Подскажите - КАК прописать вышеописанную процедуру сравнения?
Re: FAQ по EMC2 LinuxCNC
Добавлено: 13 фев 2013, 07:42
aegis
Ворон226, ну и проблему создаете. у ручками прописать м5 в нужном месте религия не позволяет? даже если длинный отрезок проходите, разбить его на 2 части и между ними и выключить
Re: FAQ по EMC2 LinuxCNC
Добавлено: 13 фев 2013, 11:43
Ворон226
Дык, насколько я понял, тут собрались те люди, которые хотят "попивать пивко, пока ЧПУ точит титьки"?

Зачем ручками прописывать полторы сотни контуров? Не проще ли один раз сконфигурировать систему так, чтобы одним "ползунком" на панели подстраивать параметр станка?
Re: FAQ по EMC2 LinuxCNC
Добавлено: 13 фев 2013, 16:40
Nick
Ворон226 писал(а):Понятно, что нужно организовать процедуру сравнения значения motion.distance-to-go с "10" и по совпадению скинуть motion.analog-out-00 в ноль (у меня этот пин используется в управлении насосом). Но вот синтаксис этого "действия" мной ещё не освоен...
Для этого есть компонент near:
http://linuxcnc.org/docs/html/man/man9/near.9.html
На один пин подаем motion.distance-to-go, на второй 0, в difference расстояние на котором выключать шпиндель.
Только мне кажется, что motion.distance-to-go показывает сколько осталось ехать до конца текущего кадра и поэтому использовать его так просто может не получится ... хотя может я и ошибаюсь.
Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 18:41
zilk
Здравствуйте люди!
Подскажите, кто знает, что конкретно включает пин
halui.program.optional-stop.on? При установке пина в 1 - ничего не происходит, отсюда вопрос - зачем он вообще нужен, в каких ситуациях используется?
Описание пина такойже длины, как и его название...
Спасибо!
Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 19:03
nkp
сам пин дублирует управление кнопкой меню
при нажатой - пауза при встрече в ж-коде команды М1
при "отжатой" - игнорирует М1
можно использовать при первом прогоне программы (еще не проверенной) и т.д.
Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 19:25
zilk
nkp, спасибо! значит не пригодится...
Нет свежих мыслей по поводу горячей замены инструмента в ходе выполнения программы?
Если продолжать программу после замены инструмента именно с точки останова, без отката, какая в этом случае может быть вероятность запороть деталь? в чем могут быть недостатки такого варианта?
Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 19:30
nkp
zilk писал(а):по поводу горячей замены инструмента
это в продолжение вот этого???
LinuxCNC реверс Gкода #70
Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 20:24
zilk
nkp писал(а):это в продолжение вот этого???
Да, этого, но я не совсем понял, чем все закончилось... Это все работает без вопросов, или есть какие-то недоделки?

Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 20:39
nkp
zilk писал(а):чем все закончилось
всё только начинается
----------------
проблема в единственном - как привязать инструмент после замены
вот эта доработка позволяет в режиме авто отъехать в любое место для замены затупившегося-поломанного инструмента
но не выходя из этого режима (авто) мы не можем поменять параметр ,в котором хранится длина инструмента(и не только)
если инструмент одних размеров - то вперед...))))
Re: FAQ по EMC2 LinuxCNC
Добавлено: 15 фев 2013, 20:56
Ворон226
Nick писал(а):Ворон226 писал(а):Понятно, что нужно организовать процедуру сравнения значения motion.distance-to-go с "10" и по совпадению скинуть motion.analog-out-00 в ноль (у меня этот пин используется в управлении насосом). Но вот синтаксис этого "действия" мной ещё не освоен...
Для этого есть компонент near:
http://linuxcnc.org/docs/html/man/man9/near.9.html
На один пин подаем motion.distance-to-go, на второй 0, в difference расстояние на котором выключать шпиндель.
Только мне кажется, что motion.distance-to-go показывает сколько осталось ехать до конца текущего кадра и поэтому использовать его так просто может не получится ... хотя может я и ошибаюсь.
Пробую самостоятельно прописать этот процесс. Прошу проверить и ткнуть носом - где я ошибаюсь?
Логика работы такая:
Сравниваю значение
motion.distance-to-go с значением "ползунка"
DIST на панели управления. Но сравниваю только тогда, когда это сравнение разрешено G-кодом через
motion.analog-out-00. Получаю управляющий сигнал
upr, который передаю в подпрограмму расчёта скорости насоса
vel и далее на
stepgen.3.vel
Теперь по шагам что и где делаю:
1. Пропишу "ползунок" в velxml.xml:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8" ?>
- <pyvcp>
- <vbox>
<bd>3</bd>
- <label>
<text>"VELPUMP"</text>
<font>("Helvetica",16)</font>
</label>
- <scale>
<font>("Helvetica",14)</font>
<halpin>"velpump"</halpin>
<resolution>0.1</resolution>
<orient>VERTICAL</orient>
<max_>3</max_>
<min_>0.1</min_>
</scale>
- <button>
<padx>16</padx>
<halpin>"b1"</halpin>
<text>"cw"</text>
<font>('Helvetica',10)</font>
</button>
- <button>
<padx>16</padx>
<halpin>"b2"</halpin>
<text>"ccw"</text>
<font>('Helvetica',10)</font>
</button>
- [b]<label>
<text>"DIST"</text>
<font>("Helvetica",16)</font>
</label>[/b]
- [b]<scale>
<font>("Helvetica",14)</font>
<halpin>"dist"</halpin>
<resolution>0.5</resolution>
<orient>VERTICAL</orient>
<max_>10</max_>
<min_>1</min_>
</scale>[/b]
</vbox>
</pyvcp>
2. Пропишу "ползунок в custom_postgui.hal (последняя строка):
Код: Выделить всё
net pyvcp1 vel.setpyvcp pyvcp.velpump-f
net b1 pyvcp.b1 mux4.0.sel1
net b2 pyvcp.b2 mux4.0.sel0
net pyvcp2 near.0.difference pyvcp.dist-f
3. Затем в hal:
Код: Выделить всё
loadrt near
loadrt mult2
addf near.0 servo-thread
addf mult2.0 servo-thread
setp near.0.in2 0
net nearout near.0.out vel.upr
setp mult2.0.in0 motion.distance-to-go
setp mult2.0.in1 motion.analog-out-00
net multout mult2.out near.0.in1
net velout vel.velout stepgen.3.velocity-cmd
Нет ли явных ошибок?
(пора подумать об испытательном макете-имитаторе на дому

)
На всякий случай прилагаю комплект файлов: