Страница 14 из 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

Добавлено: 02 апр 2012, 15:13
Nick
Все бы хорошо, но общение по COM не получися вписать в realtime, поэтому крайне не советую! Всем, что не связанно с движением, можно управлять по любым портам из любых программ в userspace. Но лучше и правда взять еще LPT.

Как вариант управления периферией можно использовать платы modbus, но я пока с ними не разбирался, вроде должны работать. Как разберусь напишу.

Есть пример DMaser-а, который при постройке станка сначала попробовал использовать modbus, но потом отказался и поставил вместо этого 7 LPT! Вроде не жаловался :).

Re: FAQ по EMC2 LinuxCNC

Добавлено: 02 апр 2012, 21:14
Viper
Nick, спасибо за ответ( а то уже отчаялся :freak: ) Подскажите еще, где описывать пользовательские М коды и на каком языке писать подпрогаммы( в плане синтаксис). Всмысле реализовать обработку переменных, чтобы из строки кода:
О01 x y z t01 f200
где t - номер шпинделя, а f - скорость подъема(сверления)
, получить обработку сверления, по принципу, как я описывал в предыдущем посте?

И еще вопрос: где описывать смещения G54-58?

Ps Простите за назойливость: вопросов много... В настройке сложнее чем мач, да и в линуксе впервый раз. Но оч уж понравилась гибкость настроек :good:
Заранее спасибо.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 02 апр 2012, 21:44
Nick
О коды - FAQ по Gcode, примеры #20
Или оригинал на англ.: http://linuxcnc.org/docs/html/gcode_mai ... ha:O-Codes
Viper писал(а):И еще вопрос: где описывать смещения G54-58?
Или через G10 L2 или через G10 L20 или черз var файл.
http://linuxcnc.org/docs/html/gcode_coo ... ate-System

вообще, если с английским нормально, то рекомендую ман по Gкоду от linuxCNC - там все развернуто и доходчиво
http://linuxcnc.org/docs/html/gcode.html
Viper писал(а):Ps Простите за назойливость: вопросов много... В настройке сложнее чем мач, да и в линуксе впервый раз. Но оч уж понравилась гибкость настроек
Это лучше, чем долго молчать, а потом говорить, что LinuxCNC непонятный :).
А на счет настроек, это просто у тебя опыт в Mach есть, а в LinuxCNC - нет, пройдет время, увидишь, что на самом деле проще :).

ЗЫ давай лучше "на ты", если ты не против :).

Re: FAQ по EMC2 LinuxCNC

Добавлено: 02 апр 2012, 22:15
Viper
Nick, а мона поподробнее про var файл - долго на него смотрел, но инфы так и не нашел :wik:
В моем станке со смещениями будет тока одна проблемма, смещения по зет, нужно сделать быстро изменяемыми из axes(для быстрой смены высоты сверла), возможно ли это? :wtf:

ps Nick, у меня еще куча вопросов, подскажи может мне лучше создать отдельную тему или так дальше в faq и струячить(а то я обычно на форумах обычно больше читаю, чем говорю :wik: )?

ps ps А вот с фотами станка пока болт, фотик у тещи, тещя на отдыхе.... Тока к концу недели, или на тел...

Re: FAQ по EMC2 LinuxCNC

Добавлено: 02 апр 2012, 23:32
Nick
Viper писал(а):Nick, а мона поподробнее про var файл - долго на него смотрел, но инфы так и не нашел
В файле var сохраняются все перменные, которые доступны из Gкода, через #<номер>, в них записываются и многие служебные параметры, например для системы координат G55 записываются в параметры G5241-G5246, для G92 в 5211-5216, про остальные системы точно не знаю, но можно просто проверить. Сделай Gкод, который задает системы координат для каждой каждой координаты чтобы было значение <номер системы>.<номер координаты>, а потом просто ищи в var файле значения типа 55.1, 55.2 и т.д.

А какая задача в целом, может можно ее решить проще? Нужно организовать смену инструмента, или что-то серьезнее?
Viper писал(а):ps Nick, у меня еще куча вопросов, подскажи может мне лучше создать отдельную тему или так дальше в faq и струячить(а то я обычно на форумах обычно больше читаю, чем говорю )?
Приятно видеть, что для нашего форума ты сделал исключение :D!
Как будет удобнее, если вопрос по Gкоду, можно сюда, если не уверен, создавай новую тему. Если что я потом поправлю ;).

Re: FAQ по EMC2 LinuxCNC

Добавлено: 15 апр 2012, 22:44
zilk
Здравствуйте все! :)

Решил тут после праздника слегка размять мозги и написать очередной новый компонент, но так как в программировании на С я по-прежнему :monkey: , то сразу же возник вопрос, который поставил меня в тупик - не пойму, с какого боку подойти к алгоритму, преобразующему позиционный код в двоичный, т.е. имеется несколько, например 4 позиционных входа и 2 двоичных выхода соответственно. И вот нужно как-то исхитриться, чтобы номер активного входа отображался двумя битами выхода.
С обратным преобразованием вроде как уже разобрался, а с этим - никак, не выходит каменный цветок... :cry:
Компонентов с подобной функцией среди стандартных не нашел, поэтому содрать сегмент соответствующего кода не получилось, а придумать самому... :wik:
Вопрос прежде всего, наверное, к Nick-у, но если кто-нибудь еще изъявит желание помочь, буду рад!

Спасибо!

Re: FAQ по EMC2 LinuxCNC

Добавлено: 16 апр 2012, 12:05
Nick
Что-то не понял, ты хочешь 4 входа (4 бита) закодировать через два выхода (2 бита)...
это уже из разряда алхимии :).

Re: FAQ по EMC2 LinuxCNC

Добавлено: 16 апр 2012, 12:49
zilk
Не, никакой алхимии! :)
Допустим, есть входы - 1, 2, 3, 4, при активизации одного из них на двух выходах отображается его номер в двоичном коде, т.е. если активен 1-й - на выходах 0 и 0, если второй - на выходах 0 и 1, и т.д., грубо говоря - нужен шифратор 4 -> 2..
Отакое вот... :)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 16 апр 2012, 13:40
Nick
ну тогда так, вроде все просто :)

if (in0==1){out1=0;out2=0;}
elseif (in1==1){out1=1;out2=0;}
elseif (in2==1){out1=0;out2=1;}
elseif (in3==1){out1=1;out2=1;}
только если все входы равны 0 то будет непонятка... будет на пинах предыдущее значение висеть...

Re: FAQ по EMC2 LinuxCNC

Добавлено: 16 апр 2012, 17:37
zilk
Nick писал(а):ну тогда так, вроде все просто
А если надо будет преобразовать 16 на 4, то это же, наверное, монстр получится... :freak:
А нет ли более элегантного универсального решения, чтобы размер кода не рос в геометрической прогрессии от количества выходных разрядов?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 16 апр 2012, 20:29
Nick
ну тогда так:

in1 << 1;
in2 << 2;
...
in = in0 | in2 | ... | ;
out0 = in & b10001 > 0; // 10001 - в двоичной системе, я не знаю как в си число в двоичной системе записывается, можно просто в десятичную перевести
out1 = in & b100010 > 0;
out2 = in & b1000100 > 0;
out3 = in & b10001000 > 0;


Или тебе с циклом, массивом и функцией надо?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 12 май 2012, 10:59
nkp
zilk писал(а):Здравствуйте, люди! :)
Предлагаю вашему вниманию новый компонент HAL, называется "decoder".
zilk, надо бы здесь разместить:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... Components

Re: FAQ по EMC2 LinuxCNC

Добавлено: 22 июн 2012, 16:00
Serg
Надеюсь темой не ошибся. :thinking:

Вопрос вот в чём: при включении станка и компа с linuxcnc (у меня это единый агрегат) волею конструктивных особенностей получается, что на LPT порту присутствует активный сигнал Enable, коий подаёт питание на силовую часть станка. Если запустить linuxcnc (axis), то оно Enable естественно выключает. А т.к. станок я иногда включаю не для фрезерования, а только покапаться в его компе, то приходится предпринимать кучу телодвижений, чтоб выключить Enable. Возникла у меня законная идея вставить чего-нибудь в загрузку, чтоб оно выключало Enable. Я конечно могу написать программулину просто записывающую в порт конкретный байт, для душевной гармонии хочется, чтоб этот байт вычислялся из данных в .ini-файле. Есть способ сделать это не поднимая всего этого монстра linuxcnc?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 23 июн 2012, 15:21
Nick
UAVpilot писал(а):Я конечно могу написать программулину просто записывающую в порт конкретный байт
Ну какая там программа, там наверное echo 1> /dev/lpt может сработать. Но это все равно не спасет от случайных значений в порте при запуски компа...
Обычно такую проблему решают сигналом chagepump - на определенный пин подается сигнал с определенной частотой, если этого сигнала нет, станок не включается...
Какой у тебя контроллер?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 24 июн 2012, 17:03
Serg
Ну в прямую echo 1> /dev/lpt не сработает. А в моём случае будет даже хуже, ибо Enable живёт на 1 пине - Strobe.
Написать программку типа sendlpt 0x00 не проблема и я ей уже пользуюсь, просто я надеялся, что среди компонентов linuxcnc есть уже что-то подобное, в котором не нужно руками вписывать некий байт, а оно само его вычислит из конфигурации станка.
Собственно я уже изучил компоненты linuxcnc - там такого нет.

Контроллера как такового нет - контакты LPT сразу в драйвера.

P.S. А управление частотником шпинделя по modbus из linuxcnc кого-то интересует? Я тут довёл один проектик до ума, теперь правильно работают команды типа "M3 S10000". Темы тут подходящей е нашёл.

Несколько вопросов по конструкции станка и программе EMC2

Добавлено: 25 июн 2012, 00:19
pyaterok
Здравствуйте, я новичок в станкостроении и ЧПУ, - многое в этом деле не знаю. Сейчас настраиваю станок для управления через EMC2, в связи с этим возникло несколько вопросов. Буду очень благодарен, если кто подскажет как можно их решить:
1) Где следует устанавливать датчик Home по оси Z? По идее, логично его установить внизу оси Z, но как быть в случае, если датчик внизу расположен так, что при отпускании шпинделя до самого нижнего положения, расстояние между ним и столом составляет 20мм, без учета фрезы. Т.е. если я вставлю фрезу с коротким хвостовиком, то ее кончик как раз будет вровень со столом, но если вставить фрезу с длинным хвостовиком, то она сломается при поиске 0 по Z? Нужно искать ноль без инструмента, затем поднимать шпиндель, вставлять инструмент, искать относительный ноль (относительно заготовки) и работать? Или же использовать верхний датчик как ноль, но тогда как настроить программу на этот вариант? Подскажите, пожалуйста, как это работает на Вашем станке?
2) Можно ли составить карту препядствий или что-то в этом роде? Т.е. заготовка крепится к столу при помощи двух параллельных и двух перпендикулярных к ним деревянных реек и нужно, чтобы станок как-то в процессе работы не врезался в них.
3) Как можно организовать обработку длинных заготовок, которые не входят по длине в рабочую зону станка? Я вижу решение так: в CAM программе разделить длинную заготовку на две (три, и т.д.) части по длине и сгенерировать G-код для каждой в отдельности. Далее выполнить каждый код по отдельности в EMC2, при этом после каждого выполнения кода сдвигать заготовку на длину обработанной части. Правильно ли я соображаю? Может быть есть более изящное решение?
Большое спасибо!

Re: FAQ по EMC2 LinuxCNC

Добавлено: 25 июн 2012, 01:34
Nick
UAVpilot писал(а):Написать программку типа sendlpt 0x00 не проблема и я ей уже пользуюсь, просто я надеялся, что среди компонентов linuxcnc есть уже что-то подобное, в котором не нужно руками вписывать некий байт, а оно само его вычислит из конфигурации станка.
Кстати, а если в hal где=то вначале написать setp parport.xxx.... 0 ?
UAVpilot писал(а):P.S. А управление частотником шпинделя по modbus из linuxcnc кого-то интересует? Я тут довёл один проектик до ума, теперь правильно работают команды типа "M3 S10000". Темы тут подходящей е нашёл.
Конечно интересует! nkp описал настройку modbus от purelogic. Можешь создать отдельную тему, потом все вместе соберем, когда я вики настрою.
pyaterok писал(а):Где следует устанавливать датчик Home по оси Z?
Датчик можно ставить в любом месте, потом просто прописывается home switch location - положение датчика в координатах оси. В твоем случае наверное стоит расположить датчик сверху.

Кстати, если датчик совмещен с концевиком оси, то лучше сделать положение датчика home вне рабочей области оси.
Т.е., например датчик сверху, Home switch location = 101, Z travel -40 ... 100 и обязательно настроить положение где станок остановится после homing, т.е. Home location 100.

Таким образом мы никогда не наедем на датчик.
pyaterok писал(а):2) Можно ли составить карту препядствий или что-то в этом роде? Т.е. заготовка крепится к столу при помощи двух параллельных и двух перпендикулярных к ним деревянных реек и нужно, чтобы станок как-то в процессе работы не врезался в них.
Сомневаюсь, разве что в CAM при создании Gкода, так же есть программы которые могут проверить Gкод на предмет врезания в детали станка.
pyaterok писал(а):3) Как можно организовать обработку длинных заготовок, которые не входят по длине в рабочую зону станка? Я вижу решение так: в CAM программе разделить длинную заготовку на две (три, и т.д.) части по длине и сгенерировать G-код для каждой в отдельности. Далее выполнить каждый код по отдельности в EMC2, при этом после каждого выполнения кода сдвигать заготовку на длину обработанной части. Правильно ли я соображаю? Может быть есть более изящное решение?
Зависит от CAM можно так, можно тоже разделить обработку на части, но координаты оставить в координатах детали и делать G92 или G54-59
и еще можно или крепление или упоры заложить в программу обработки, чтобы можно было проще и точнее спозиционировать деталь после перемещения.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 25 июн 2012, 02:22
Serg
Nick писал(а):
UAVpilot писал(а):Написать программку типа sendlpt 0x00 не проблема и я ей уже пользуюсь, просто я надеялся, что среди компонентов linuxcnc есть уже что-то подобное, в котором не нужно руками вписывать некий байт, а оно само его вычислит из конфигурации станка.
Кстати, а если в hal где=то вначале написать setp parport.xxx.... 0 ?
А смысл? Идея была в том, чтобы самому не выдумывать это xxx, а чтоб софтинка вычисляла из конфига.
Собственно родился промежуточный вариант - проге указывают конфиг станка, а она находит описание enable и выключает этот пин.
Nick писал(а):
UAVpilot писал(а):P.S. А управление частотником шпинделя по modbus из linuxcnc кого-то интересует? Я тут довёл один проектик до ума, теперь правильно работают команды типа "M3 S10000". Темы тут подходящей е нашёл.
Конечно интересует! nkp описал настройку modbus от purelogic. Можешь создать отдельную тему, потом все вместе соберем, когда я вики настрою.
Ок, на неделе причешу и опишу, хочу панель для axis переделать, а то громоздкая она.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 25 июн 2012, 12:51
Nick
UAVpilot писал(а):Собственно родился промежуточный вариант - проге указывают конфиг станка, а она находит описание enable и выключает этот пин.
хммм, вроде тоже не сложно, если ничего в конфиге не переделано, а именно название сигналов enable.
grep ".*enable.*parport.*-(\d\d)" xxx.hal
И потом их этой строчки вырезать номер.

Хотя зачем все это, почему бы просто на все пины 0 не кинуть?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 25 июн 2012, 14:19
Serg
Ну да именно это и собрался сделать.
Nick писал(а):Хотя зачем все это, почему бы просто на все пины 0 не кинуть?
У меня 0 - активное состояние enable. :wik: