Страница 24 из 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
Добавлено: 04 мар 2013, 08:41
Ворон226
А никто не решал вопрос управления "сигнальными фонарями" станка?
Только вот стандартные "светофорики" не нравятся - некрасивые они.
Как реализовать такую идею:
К одному пину LPT-порта подключить светодиодный фонарь.
Если идёт выполнение программы - мигание с частотой 1 сек.
Если Авария или E-STOP - частое мигание - пусть 0,3 сек период
Если Пауза или Стоп - просто горит.
В принципе пины этих сигналов известны.
Можно ими управлять компонентом mux8.
Но как реализовать само мигание?
Пока лезет в голову только вариант - изучить работу с Time, или как-то использовать ШИМ...
Что посоветуете?
Re: FAQ по EMC2 LinuxCNC
Добавлено: 04 мар 2013, 08:57
nkp
вот один из многих вариантов "мигалки" :
тут первый таймер задает время свечения ,второй- время паузы
немного про
ладдер
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-го пина порта какой то свободный на лампу выход)
в папку конфига сам файл ладдера:
получаем:
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
поправил алгоритм - теперь реагирует на паузу:
в хал добавить строку:
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 ?