[WIKI] FAQ по EMC2 LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

[WIKI] FAQ по EMC2 LinuxCNC

Сообщение 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
Это незавершенный раздел, Вы можете помочь в его оформлении.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а): Это ты через морзянку будешь со станком общаться
Типа того :hehehe:
Но только вот какая засада - не хочет загружаться модифицированный компонент. Сделал все по инструкции: comp --install updown1.comp, получил новый компонент, вкотором изменил всеголишь 2 буковки, но размером он получился в 15 раз больше вместо 6 кБ - 93 кБ! :shock:
При попытке загрузить ЕМС выпадает ошибка - мол, не могу загрузить компонет, а дальше, когда я его уже отключил, ЕМС не грузится вообще с ошибкой rtai_hal.ko -1 File exist и капец, помогает ттолько перезагрузка...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

а comp --install ошибок не выдал?
С чем ты сравниваешь размер?

Вот тут updown на updown1 поменял?
component updown "Counts up or down, with optional limits and wraparound behavior";
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а):Вот тут updown на updown1 поменял?
йопт... НЕ ПОМЕНЯЛ!! :oops: :oops:
А ошибок при компиляции не было, размер сравнивал с уже имеющимся модулем в /usr/realtime-2.6.32-122-rtai/modules/emc2/


PS. Поменял, работает... :) Правда, осталось непонятным, что происходит с размером файла - все равно 93 вместо 6 килобайт.. А исходник .comp вообще имеет меньше килобайта после удаления всех комментариев..
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

может он как-то по-другому обычно компилится... надо посмотреть в make чего он с компонентами длелает.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а):надо посмотреть в make чего он с компонентами длелает.
Nick, не поможешь разобраться с этим вопросом? А то слепил тут экспериментальный компонент, хочу попробовать применить в боевой обстановке, но с этим его размером в 90+ килобайт, чувство глубокого удовлетворения никак не наступает - какой-то недоделанный он получается... :freak:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

хммм.... ничего похожего не нашел.... хотя, я плохо в make файлах разбираюсь, так сказал на всякий случай.
Надо спросить у Psha, он должен знать, в чем дело.

ЗЫ А если попробовать убрать старый скомпиленный компонент и попробовать его заново сделать, тоже размер вырастет?
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а):тоже размер вырастет?
Да, все то же самое, перепробовал все варианты - размер файла неизменно увеличивается..

PS. Nick, посоветуй пожалуйста какой-нибудь толковый справочник по Си для тупого ламера, из категории взлет-посадка, без высшего пилотажа, а то тупо упираюсь в какие-нибудь элементарные вещи и не могу сдвинуться.. :monkey:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

zilk писал(а):PS. Nick, посоветуй пожалуйста какой-нибудь толковый справочник по Си для тупого ламера, из категории взлет-посадка, без высшего пилотажа, а то тупо упираюсь в какие-нибудь элементарные вещи и не могу сдвинуться..
Вот бы мне такую найти, сам Си не люблю. Бросил его посте того как бился над ошибкой 3 дня. Ошибка была в следующем если писать stuct {...}, то после } надо поставить точку с запятой. Это меня убило и я сказал, что я Си не люблю :).

Вот эта книга - библия Си, вроде как написана очень вменяемым языком http://ru.wikipedia.org/wiki/Язык_прогр ... Си_(книга) , уверен, что ее можно найти в сети.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Спсибо!
Написал в личку Psha по поводу размера файла, жду ответа..
Nick, и к тебе вопрос, может не потеме, но уже голоова пухнет от него - как записать на СИ, что нужно ПОСТОЯННО отслеживать состояние параметра и при его изменении соответственно реагировать, а у меня он устанавливается в определенное состояние при выполнении условия, но потом НЕ СБРАСЫВАЕТСЯ, когда условие уходит! Как эту проверку ЗАЦИКЛИТЬ?
Извини, я в программировании ... :monkey: :monkey: :monkey:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

zilk писал(а):Написал в личку Psha по поводу размера файла, жду ответа..
Я тоже написал :hehehe:
zilk писал(а):Nick, и к тебе вопрос, может не потеме, но уже голоова пухнет от него - как записать на СИ, что нужно ПОСТОЯННО отслеживать состояние параметра и при его изменении соответственно реагировать, а у меня он устанавливается в определенное состояние при выполнении условия, но потом НЕ СБРАСЫВАЕТСЯ, когда условие уходит! Как эту проверку ЗАЦИКЛИТЬ?
Просто:
while (true) {
вечность
}
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а):Просто:
while (true) {
вечность
}
Это ты хорошо придумал! Что примечательно, когда я это запустил, то мне даже ресет не помог - пришлось выдергивать вилку из розетки.. :hehehe:

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

FUNCTION(_) {
	int i, num;
	num = sel(0) + sel(1)*2 + sel(2)*4 + sel(3)*8;
	while (num != 0)
		{
		i++;
		out(num) = 1;
		}
	return;
}
PS. Короче, нужно постоянно мониторить состояние переменной num и соответственно реагировать на ее изменение... :wik:
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Прикольно... После эксперимента с while запуск EMC не начавшись, заканчивается полным зависанием системы, мыша ползает сантиметр в минуту, система ни на что не реагирует, перезагружаюсь сетевым выключателем... :thinking:
А теперь внимание, вопрос! ЧТО ДЕЛАТЬ? :freak:

PS. Пока не попытаюсь запустить EMC, система работает как обычно..
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

О, нужно добавить sleep. Точнее даже не так. Когда ты загружаешь компонент loadrt и делаешь addf ... thread, то function должен вызываться постоянно раз в тик thread.
Хотя, скинь все тело компонента, и напиши в двух словах чего хочешь.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Здравствуйте, люди! :)
Предлагаю вашему вниманию новый компонент HAL, называется "decoder". Для чего же он нужен?
А нужен он для того, чтобы вы смогли передавать по четырем проводам 16 команд, например, от своего навороченного пульта в LinuxCNC и чтобы его конфигурация в hal не занимала страницу, как было у меня. Легким движением руки вы можете сделать возможной передачу по 5 проводам 32 команд, и т.д. В общем, это нужно для экономии проводов, и что более важно - для сокращения количества занятых пинов в ваших MESA-х и LPT портах. Лично меня немного напрягал предстоящий секс с запихиванием 30+ проводов в оплетку, изоляцию и распаиванием всего этого на разъем, да и входов 7i43 платы вместе с двумя дополнительными LPT хватило впритык, хотя еще не вечер... :freak:
Работает все так: формируете на выходе своего кнопочного интерфейса двоичный код от нажимаемых кнопок (для особых ценителей можно и код Грея устроить), как формировать - это ваша проблема, можно микросхемой типа 74HC148 кодер 8->3, а можно и тупо диодной матрицей - для 4-х разрядов понадобится штук 50 диодов, точно не считал.. :freak: Если кто что-то более умное посоветует - милости просим!

В прикрепленном архиве имеется файл decoder.comp. Разархивируйте его в свой домашний каталог, в консоли выполняете команду:

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

sudo comp --install decoder.comp
В hal загружаете компонент decoder:

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

loadrt decoder count=1
addf decoder.0 servo-thread
setp decoder.0.debounce 0.5          # защита от дребезга, по умолчанию 0,1 сек.
setp decoder.0.enable TRUE         # по умолчанию TRUE

net in0 decoder.0.in0 <= parport    # ваши входы
net in1 decoder.0.in1 <= parport
net in2 decoder.0.in2 <= parport
net in3 decoder.0.in3 <= parport

net out00 decoder.0.out00 =>        # выход, если нет сигнала на входах, имеет состояние TRUE
net out01 decoder.0.out01 =>        # 15 рабочих выходов, подключайте куда пожелаете
"
"
"
net out15 decoder.0.out15 =>       #  ========
Это всё!
Спасибо за внимание! :)

Update!!
Добавил параметр ENABLE, по умолчанию TRUE, если FALSE, то на всех выходах FALSE независимо от состояния входов.
Может кому понадобится, а может и нет, хз... :)
Вложения
decoder.comp.zip
(477 байт) 513 скачиваний
Последний раз редактировалось zilk 18 мар 2012, 03:18, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Ого, а говорил на Си писать не умеет :)! Завтра тебе медальку выпишу, это же надо, компонент сам написал! (Главное не забыть.)
woody
Кандидат
Сообщения: 70
Зарегистрирован: 29 июн 2011, 15:04
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение woody »

Дано: фрезер КФПЭ-250Н2-5
Мелкий, вертикальный, по компоновке/габаритам похож на 675.
Переводим с родной дохлой 2С42 на LinuxCNC 2.5
Все необходимые пины завёл на месу.

Пока не придумал, как завести в EMC следующие пины:
1. В оригинале есть сигналы перегрева шпинделя/гидростанции/сож. По мануалу это "запрет на обработку очередного кадра".

2. Ответ по М-функциям M03, M04. Т.е. когда включен шпиндель вперед/назад, станок сообщает стойке что шпиндель включен. Тут видимо тоже надо запрещать очередной кадр, если шпиндель не включился.

3. Есть отдельный выход "Отмена блокировки", который включается отдельной кнопкой в электрошкафу в случае, если станок убежал за лимиты. По уму её бы завести на галку "Игнорировать пределы" в EMC, только вот пока не понял - как.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

woody писал(а):1. В оригинале есть сигналы перегрева шпинделя/гидростанции/сож. По мануалу это "запрет на обработку очередного кадра".
Estop или halui.program.pause
woody писал(а):2. Ответ по М-функциям M03, M04. Т.е. когда включен шпиндель вперед/назад, станок сообщает стойке что шпиндель включен. Тут видимо тоже надо запрещать очередной кадр, если шпиндель не включился.
Примерно тоже самое, но можно завести на motion.spindle-at-speed, в зависимости от того, что на самом деле означает пин, если просто подождать пока шпиндель не раскрутится, то motion.spindle-at-speed, если же это ошибка, то пункт первый.
woody писал(а):3. Есть отдельный выход "Отмена блокировки", который включается отдельной кнопкой в электрошкафу в случае, если станок убежал за лимиты. По уму её бы завести на галку "Игнорировать пределы" в EMC, только вот пока не понял - как.
хммм.... что-то я не нахожу такого пина... странно...
вообще после нахождения нулей станок не должен выезжать за пределы, linuxCNC за этим будет следить...
woody
Кандидат
Сообщения: 70
Зарегистрирован: 29 июн 2011, 15:04
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение woody »

Nick писал(а):хммм.... что-то я не нахожу такого пина... странно...
вообще после нахождения нулей станок не должен выезжать за пределы, linuxCNC за этим будет следить...
Это понятно.
Вот только если он выехал за пределы по какой-то причине, то надо лезть в шкаф и включать кнопку. После чего тыкать эту галку в EMC.
Чтобы его можно было включить и отогнать обратно.
Не такая частая операция, но если можно завести, по почему бы и нет? :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Т.е. ты хочешь сделать так, чтобы кнопку нужно было тыркать только в EMC2? Тогда это проще :).
woody
Кандидат
Сообщения: 70
Зарегистрирован: 29 июн 2011, 15:04
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение woody »

Nick писал(а):Т.е. ты хочешь сделать так, чтобы кнопку нужно было тыркать только в EMC2? Тогда это проще :).
Может действительно и сделаю так, сэкономлю лишний вход, которых дефицит, как оказалось.
На какой пин вешаться? :)
Ответить

Вернуться в «LinuxCNC»