Страница 24 из 48

[WIKI] FAQ по EMC2 LinuxCNC

Добавлено: 25 окт 2010, 09:53
Nick
FAQ переехал в wiki: FAQ по LinuxCNC
Вы можете помочь нам в оформлении статьи. Для внесения изменений надо залогинится в вики (логин и пароль такие же, как на форуме).
Как внести изменения в статью в wiki
(для просмотра содержимого нажмите на ссылку)
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 не сможет контролировать пределы осей и появится вероятность их превышения, что может привести к поломке станка :attention:!

Q: LinuxCNC не запускается, выдает ошибку RTAI[hal]: ERROR, LOCAL APIC CONFIGURED BUT NOT AVAILABLE/ENABLED.
A: Проблема с установкой EMC2 #48
Это незавершенный раздел, Вы можете помочь в его оформлении.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 08:41
Ворон226
А никто не решал вопрос управления "сигнальными фонарями" станка?
Только вот стандартные "светофорики" не нравятся - некрасивые они.
Как реализовать такую идею:
К одному пину LPT-порта подключить светодиодный фонарь.
Если идёт выполнение программы - мигание с частотой 1 сек.
Если Авария или E-STOP - частое мигание - пусть 0,3 сек период
Если Пауза или Стоп - просто горит.

В принципе пины этих сигналов известны.
Можно ими управлять компонентом mux8.
Но как реализовать само мигание?
Пока лезет в голову только вариант - изучить работу с Time, или как-то использовать ШИМ...

Что посоветуете?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 08:57
nkp
вот один из многих вариантов "мигалки" :
Выделение(033).jpg (2176 просмотров) <a class='original' href='./download/file.php?id=12503&mode=view' target=_blank>Загрузить оригинал (153.99 КБ)</a>
тут первый таймер задает время свечения ,второй- время паузы
немного про ладдер

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 09:06
Ворон226
Спасибки - теперь ясно: откуда ноги растут у ваших "картинок" ;)

Но вот не хотелось бы изучать ещё одну прогу со своим языком для "мигалки"... Если уж припрёт - изучу. Куда я денусь? Но может есть другой вариант? Неужели в EMC нету такой возможности? Может использовать компонент FREQGEN?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 09:19
nkp
Ворон226 писал(а):Но вот не хотелось бы изучать ещё одну прогу со своим языком для "мигалки"
поверь пока на слово - с ладдером и хал гибкость емс стремится к бесконечности
многие задачи без него описываются громоздко
Ворон226 писал(а):Неужели в EMC нету такой возможности?
почти все то же можно написать и в хал - но на ладдере это :
1.быстрее
2. удобней
3.наглядней - что немаловажно
------------
а тебе как электронщику и вообще карты в руки - это же натуральне провода и контакты :)
разберешся за полчаса
языком программирования это назвали с натяжкой - считай что это схема электроавтоматики станка
а мигалку хоть на том же питоне напиши в компоненте:
вкл - пауза по time - выкл и вё это в бесконечном цикле
можно отдельный пин на задание паузы хоть в ладдере, хоть в хал ,хоть в питоне

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 09:58
Ворон226
Я себе это представлял так:
Счетчик с тактовой частотой и несколькими выходами: 0, 2, 4
На mux8 на пины sel подаём сигналы halui:
halui.program.is-running - выполняется программа
halui.program.is-idle - никаких программ не выполняется
halui.estop.is-activated - E-STOP

А на входы in подаём "1", "0 генератора" и "4 генератора"

Выход mux8.out на пин выходной LPT-порта, который управляет "фонариком". Проблема только организовать два прерывистых сигнала...

(учить-то нужно... Но столько всего нужно!!! Да и хочется сделать красиво, а не кучу всяких подпрограмм и т.п. Хотя, это может мои заблуждения)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 10:42
Сергей Саныч
pwmgen - больше ничего не надо, кроме как задавать нужные частоты и скважности.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 11:03
nkp
набросал пример на ладдере...
в хал добавляем сам компонент ладдера и связи пинов:
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10
addf classicladder.0.refresh servo-thread
loadusr classicladder custom.clp

net is-running halui.program.is-running classicladder.0.in-01
net is-idle halui.program.is-idle classicladder.0.in-00
net is-activated halui.estop.is-activated classicladder.0.in-02

#net fire classicladder.0.out-00 parport.0.pin-09-out

(вместо 9-го пина порта какой то свободный на лампу выход)
в папку конфига сам файл ладдера:
custom.clp
(5.61 КБ) 1049 скачиваний
получаем:
https://www.youtube.com/watch?v=oXsv1ZscZHU
алгоритм немного подправить надо - потому как пауза тоже считается выполнением программы ;)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 11:51
Ворон226
Во как! Спасибо!
Теперь ведь придётся разбираться ;) А как иначе?

И pwmgen посмотрю...

Ещё раз спасибо.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 13:23
nkp
поправил алгоритм - теперь реагирует на паузу:
(для просмотра содержимого нажмите на ссылку)
Выделение(037).jpg (2157 просмотров) <a class='original' href='./download/file.php?id=12511&mode=view' target=_blank>Загрузить оригинал (491.46 КБ)</a>
custom.clp
(5.62 КБ) 1051 скачивание
в хал добавить строку:
net is-paused halui.program.is-paused classicladder.0.in-03

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:00
Ворон226
Всё-таки пробую pwmgen в первую очередь...

Написал такую штуковину:
1. В .hal:

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

loadrt  pwmgen output_type=0
loadrt  mux8

addf    pwmgen.0   base-thread
addf    mux8.0   servo-thread

    setp mux8.0.in1  3
    setp mux8.0.in2  0.5
    setp mux8.0.in4  1
  
    setp pwmgen.0.scale         1
    setp pwmgen.0.pwm-freq  0
    setp pwmgen.0.enable      1

net  mux8sel0 halui.estop.is-activated     mux8.0.sel0
net  mux8sel1 halui.program.is-paused   mux8.0.sel1
net  mux8sel2 halui.program.is-running   mux8.0.sel2
net  mux8out  mux8.0.out                        pwmgen.0.valui
net  pwmout   pwmgen.0.pwm                 parport.0.pin-06-out
Линукс ругается на строку: addf pwmgen.0 base-thread
Изменил на addf pwmgen.0 servo-thread - ругается на эту же строку
Зарэмил эту строку - начал ругаться на следующую, которой упоминается pwmgen...

Что может не нравиться Линуксу? Текст ошибки прилагаю...

П.С. Да, забыл прокомментировать... Установки параметров pwmgen сделал такими, чтобы он был в режиме ЧМ (частотной модуляции), чтобы частота на выходе равнялась числу на входе (scale = 1).

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:15
Ворон226
nkp писал(а):поправил алгоритм - теперь реагирует на паузу...
Проверил - работает. Если не разберусь с pwmgen - буду использовать твой вариант. ;)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:20
nkp
может:
loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
==============
в этой задаче генератор может оказаться предпочтительней
но ладдер - это сила вцелом :)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:27
Ворон226
nkp писал(а):... но ладдер - это сила вцелом :)
Один из моих первых учителей на заводе конструировал автоматы на одних реле! Вот он подобные схемы рисовал ;)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:30
Ворон226
nkp писал(а):может:
loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
Теперь ругается на
net mux8out mux8.0.out pwmgen.0.valui

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:33
nkp
value

Re: FAQ по EMC2 LinuxCNC

Добавлено: 04 мар 2013, 23:34
Ворон226
тьфу ты... записался... ;)
Работает ;)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2013, 17:55
Ворон226
И опять pwmgen...

Установил параметры:
setp pwmgen.0.scale 1 (зачем мне умножать?)
setp pwmgen.0.pwm-freq 0 (означает, что буду использовать частотную модуляцию)
setp pwmgen.0.enable 1 (тут всё понятно - пускай работает всегда!)

На вход pwmgen.0.valui подаю с выхода mux8 числа 3, 2, 1 и 0
А на выходе pwmgen.0.pwm не вижу генерации :( Только либо TRUE (когда на входе 3, 2 или 1) или FALSE (когда на входе 0).

Что не так? Может какой пин обидел или какой параметр не прописал?
(числа на вход приходят, енабль тоже)
Может pwmgen не может генерить герцы? Только килогерцы ему подавай?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2013, 19:41
Сергей Саныч
Похоже, я малость погорячился, когда порекомендовал pwmgen - частота у него задается не входным сигналом (пином), а параметром. Но вообще-то в режиме PWM скважность определяется как
The duty cycle is calculated according to dc = (value/scale) + offset
то есть при scale=1 и offset=0, value имеет право принимать значения в пределах от 0 до 1.
Вообще, работа в режиме ЧМ (PDM) в доках описана достаточно невнятно.
Ворон226 писал(а):Может pwmgen не может генерить герцы? Только килогерцы ему подавай?
Да нет, не похоже, вот здесь http://wiki.linuxcnc.org/cgi-bin/wiki.p ... CycleTimer 1 Гц генерируют.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2013, 19:51
Ворон226
Serg-tmn писал(а):Похоже, я малость погорячился, когда порекомендовал pwmgen - частота у него задается не входным сигналом (пином), а параметром...
Вообще, работа в режиме ЧМ (PDM) в доках описана достаточно невнятно.
При ЧМ частота не может задаваться параметром по определению.
А ведь у меня как-то получалось добиваться моргания на выходе - буду проверять дальше... Посмотреть нечем, кроме светодиода на выходе LPT.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2013, 20:06
nkp
Ворон226 писал(а): на выходе pwmgen.0.pwm не вижу генерации Только либо TRUE (когда на входе 3, 2 или 1) или FALSE (когда на входе 0).
это в halscope ?