LinuxCNC — это набор настраиваемых приложений для управления станками с числовым программным управлением (ЧПУ), 3D-принтерами, роботами, лазерными резаками, плазменными резаками и другими автоматизированными устройствами.
1. Как работает LinuxCNC
LinuxCNC способен обеспечить согласованное управление по 9 осям движения. По своей сути программа состоит из нескольких ключевых компонентов, которые объединены вместе и образуют единую целостную систему:
- графический интерфейс пользователя (GUI), который образует основной интерфейс между оператором, программным обеспечением и самим станком с ЧПУ;
- уровень аппаратной абстракции (HAL), который обеспечивает метод связывания всех различных внутренних виртуальных сигналов, генерируемых и принимаемых LinuxCNC, с внешним миром;
- контроллеры высокого уровня, которые координируют создание и выполнение управления движением станка с ЧПУ, а именно контроллер движения (EMCMOT), контроллер дискретного ввода / вывода (EMCIO) и исполнитель задач (EMCTASK).
На иллюстрации ниже представлена простая блок-схема, показывающая, как может выглядеть типичный 3-осевой фрезерный станок с ЧПУ с шаговыми двигателями:
Компьютер под управлением LinuxCNC отправляет последовательность импульсов через параллельный порт на шаговые приводы, к каждому из которых подключен один шаговый двигатель. Каждый привод получает два независимых сигнала; один сигнал, чтобы дать команду приводу перемещать связанный с ним шаговый двигатель по часовой стрелке или против часовой стрелки, и второй сигнал, который определяет скорость, с которой этот шаговый двигатель вращается.
Проиллюстрированная система шагового двигателя под управлением параллельного порта, система LinuxCNC также может использовать преимущества широкого спектра специализированных аппаратных интерфейсов управления движением для увеличения скорости и возможностей ввода-вывода.
В большинстве случаев пользователи создают конфигурацию, специфичную для настройки своего станка с ЧПУ, используя либо Stepper Configuration Wizard (для систем ЧПУ, работающих с параллельным портом компьютеров), либо Mesa Hardware Wizard (для более продвинутых систем, использующих Mesa Anything I / O PCI карта). Запуск любого из мастеров создаст несколько папок на жестком диске компьютеров, содержащих ряд файлов конфигурации, специфичных для этого станка с ЧПУ, и значок, расположенный на рабочем столе, чтобы облегчить запуск LinuxCNC.
Например, если мастер настройки шагового двигателя использовался для создания настройки для 3-осевого фрезерного станка с ЧПУ, показанного выше и названного My_CNC, папки, созданные мастером, обычно будут содержать следующие файлы:
- Папка: My_CNC
- My_CNC.ini
- Файл INI содержит всю основную информацию об оборудовании, касающуюся работы фрезерного станка с ЧПУ, такую как количество шагов, которые каждый шаговый двигатель должен повернуть, чтобы совершить один полный оборот, максимальная скорость, с которой может работать каждый шаговый двигатель, пределы перемещения каждой оси или конфигурации и поведения концевых выключателей на каждой оси.
- My_CNC.hal
- Этот файл HAL содержит информацию, которая сообщает LinuxCNC, как связать внутренние виртуальные сигналы с физическими соединениями за пределами компьютера. Например, указание вывода 4 на параллельном порту для отправки сигнала направления шага оси Z или указание LinuxCNC прекратить движение двигателя оси X при срабатывании концевого выключателя на выводе 13 параллельного порта.
- custom.HAL
- Настройки конфигурации фрезера, выходящие за рамки мастера, могут быть выполнены путем включения дополнительных ссылок на другие виртуальные точки в LinuxCNC в этот файл HAL. При запуске сеанса LinuxCNC этот файл читается и обрабатывается до загрузки графического интерфейса. Пример может включать в себя инициирование связи Modbus с двигателем шпинделя, чтобы он был подтвержден как работоспособный до отображения графического интерфейса пользователя.
- custom_postgui.hal
- Файл custom_postgui HAL допускает дальнейшую настройку LinuxCNC, но отличается от custom.HAL тем, что он обрабатывается после отображения графического интерфейса пользователя. Например, после установления связи Modbus с двигателем шпинделя в custom.hal LinuxCNC может использовать файл custom_postgui, чтобы связать считывание скорости шпинделя с моторного привода с гистограммой, отображаемой в графическом интерфейсе пользователя.
- postgui_backup.hal
- Он предоставляется в качестве резервной копии файла custom_postgui.hal, чтобы пользователь мог быстро восстановить ранее работавшую конфигурацию postgui HAL. Это особенно полезно, если пользователь хочет снова запустить Мастер настройки под тем же именем My_CNC, чтобы изменить некоторые параметры станка. Сохранение конфигурации в мастере перезапишет существующий файл custom_postgui, а файл postgui_backup останется нетронутым.
- tool.tbl
- Файл таблицы инструментов содержит параметризованный список любых режущих инструментов, используемых на фрезерном станке. Эти параметры могут включать диаметр и длину фрезы и используются для предоставления каталога данных, которые сообщают LinuxCNC, как компенсировать его движение для инструментов разного размера в рамках операции фрезерования.
- My_CNC.ini
- Папка: nc_files
- Папка nc_files предоставляется как место по умолчанию для хранения программ G-кода, используемых для управления станком с ЧПУ. Он также включает ряд подпапок с примерами G-кода.
2. Графические пользовательские интерфейсы LinuxCNC
Графический пользовательский интерфейс — это часть LinuxCNC, с которой взаимодействует оператор станка. LinuxCNC поставляется с несколькими типами пользовательских интерфейсов, которые можно выбрать, отредактировав определенные поля, содержащиеся в файле INI:
Axis — стандартный графический интерфейс клавиатуры. Это также графический интерфейс по умолчанию, запускаемый, когда мастер настройки используется для создания средства запуска значков на рабочем столе:
Touchy — графический интерфейс с сенсорным экраном:
Gscreen — настраиваемый пользователем графический интерфейс сенсорного экрана:
GMOCCAPY — графический интерфейс сенсорного экрана на основе Gscreen. GMOCCAPY также разработан, чтобы одинаково хорошо работать в приложениях, где клавиатура и мышь являются предпочтительными методами управления графическим интерфейсом:
NGCGUI — графический интерфейс LinuxCNC, обеспечивающий программирование G-кода в стиле мастера. NGCGUI может быть запущен как отдельная программа или встроен в другой графический интерфейс в виде ряда вкладок. На следующем снимке экрана показан NGCGUI, встроенный в Axis:
3. Виртуальные панели управления
Как упоминалось выше, многие графические интерфейсы LinuxCNC могут быть настроены пользователем. Это может быть сделано для добавления индикаторов, датчиков, переключателей или ползунков к основному внешнему виду одного из графических интерфейсов пользователя для повышения гибкости или функциональности. В LinuxCNC предлагается два стиля виртуальной панели управления:
PyVCP, виртуальная панель управления на основе Python, которую можно добавить в графический интерфейс Axis. PyVCP использует только виртуальные сигналы, содержащиеся на уровне аппаратной абстракции, такие как индикатор скорости шпинделя или выходной сигнал аварийной остановки, и имеет простой вид. Это делает его отличным выбором, если пользователь хочет добавить виртуальную панель управления с минимальными усилиями.
GladeVCP, виртуальная панель управления на основе Glade, которую можно добавить в графический интерфейс Axis или Touchy. GladeVCP имеет преимущество перед PyVCP в том, что он не ограничивается отображением или управлением виртуальными сигналами HAL, но может включать другие внешние интерфейсы вне LinuxCNC, такие как оконные или сетевые события. GladeVCP также более гибок в том, как его можно настроить для отображения в графическом интерфейсе:
4. Языки
LinuxCNC использует файлы перевода для перевода пользовательских интерфейсов LinuxCNC на многие языки, включая французский, немецкий, итальянский, финский, русский, румынский, португальский и китайский. Предполагая, что перевод был создан, LinuxCNC будет автоматически использовать любой родной язык, на котором вы вошли в систему при запуске операционной системы Linux. Если ваш язык не был переведен, обратитесь за помощью к разработчику в IRC, в список рассылки или на форум пользователей.
5. Режимы работы
Когда LinuxCNC запущен, для ввода команд используются три различных основных режима. Это ручной, автоматический и ручной ввод данных (MDI). Переход из одного режима в другой имеет большое значение в поведении элемента управления LinuxCNC. Есть определенные вещи, которые можно сделать в одном режиме, но нельзя сделать в другом. Оператор может вернуть ось в исходное положение в ручном режиме, но не в автоматическом или ручном режимах. Оператор может заставить машину выполнить весь файл, полный G-кодов, в автоматическом режиме, но не в ручном или MDI.
В ручном режиме каждая команда вводится отдельно. Говоря человеческим языком, ручная команда могла бы включать СОЖ или подвинуть X со скоростью 25 дюймов в минуту. Это примерно эквивалентно щелчку переключателя или повороту маховика для оси. Эти команды обычно обрабатываются в одном из графических интерфейсов нажатием кнопки мыши или удержанием клавиши на клавиатуре. В автоматическом режиме аналогичная кнопка или нажатие клавиши может использоваться для загрузки или запуска целой программы G-кода, которая хранится в файле. В режиме MDI оператор может ввести блок кода и приказать машине выполнить его, нажав клавишу «return» или «enter» на клавиатуре.
Некоторые команды управления движением доступны одновременно и вызывают одинаковые изменения движения во всех режимах. К ним относятся прерывание, аварийный останов и корректировка скорости подачи. Подобные команды не требуют пояснений.
Пользовательский интерфейс AXIS скрывает некоторые различия между автоматическим и другими режимами, делая автоматические команды доступными в большинстве случаев. Это также стирает различие между ручным и MDI, потому что некоторые ручные команды, такие как Touch Off, фактически реализуются путем отправки команд MDI. Это достигается путем автоматического перехода в режим, необходимый для действия, запрошенного пользователем.
Содержание
- 1 НАЧАЛО. ОПИСАНИЕ EMC2 или EMC2 Integrators Manual
- 2 Глава 1. Важные определения
- 3 Глава 2. Аппаратное обеспечение (Hardware)
- 4 Глава 3. Конфигурационные файлы
- 5 Глава 4. Файл INI
- 6 Глава 5. EMC2 и HAL
- 7 Глава 6. КОМАНДЫ
- 8 Ура Линуксу или ошибки, ошибки и ошибки…
- 9 BIT или не BIT? Вот в чём вопрос!
- 10 Нужно ли изобретать велосипед или Компоненты реального времени. Часть 1.
- 11 Компоненты реального времени. Часть 2.
- 12 Своя панель. Первые шаги.
- 13 Как «прикрутить» свою панель к «стандартной»?
- 14 Как «связать» кнопки своей панели с CNC?
- 15 Как не запутаться в сложной схеме CNC?
НАЧАЛО. ОПИСАНИЕ EMC2 или EMC2 Integrators Manual
Вместо предисловия.
И почему электронщики не понимают программистов? А ведь учились в соседних группах…
Обычно «чайники» начинают изучать LinuxCNC по мануалу: http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=150
Начнём разборку тоже с этого описания.
Глава 1. Важные определения
Никаких проблем. Всё понятно. Идём дальше…
Глава 2. Аппаратное обеспечение (Hardware)
2.1 Latency Test
И опять всё понятно. Тест несложный. Данные записаны…
Глава 3. Конфигурационные файлы
И тут всё в порядке…
Дальше стал конфигурить систему, используя Stepconf. Столкнулся с проблемой, что Stepconf не дал мне возможности сконфигурировать систему такой, которая мне нужна. Испробовав несколько вариантов понял — нужно будет прописывать конфигурацию «ручками».
Вот и подошел я к INI-файлу…
Глава 4. Файл INI
Вопросы начали появляться, но житейское правило: Не трогай того, что не понимаешь — помогло прописать бОльшую часть ini-файла. Больше того, прописал четвертую ось (она у меня должна качать гель: шаговик-насос). Даже подвигал насос. Но КАК его запустить программой? Да еще в нужное время, с нужной скоростью!
Тут без понимания HAL-файла не обойтись.
Глава 5. EMC2 и HAL
И вот первая строка:
Motion загружается при помощи команды motmod. Родственные программы должны быть запущены до motion…
Перечитал пару раз. Непонятно. Пропустил и полез дальше. Ещё более непонятно. Открыл HAL у себя и стал читать, взирая на реальный текст реального HAL-а… Стал понимать структуру самого файла. Но что там написано???
После двух недель стало ясно следующее:
1. Система EMC2 или LinuxCNC — это огромный набор маленьких программок, которые определенным образом сконфигурированы в систему. Потому, чтобы начать самому прописывать свою систему своего станка — необходимо понять логику этой конфигурации. А она оказалась довольно простой. Только написана на ином языке, на языке программистов.
Итак, эти маленькие программки называют КОМПОНЕНТАМИ. У каждого компонента есть своё ИМЯ.
2. У каждого компонента есть контакты (клеммы, разъемы) входов и выходов. Их называют ПИНы. У каждого компонента пинов может быть различное количество. У каждого пина есть своё имя. Пины бывают входные и выходные. А записывать это имя пина договорились так:
(имя компонента).(имя пина)
Например:
motion.analog-out-00
, где motion- имя компонента, analog-out-00 — имя пина, этот пин выходной и его номер 00.
ВАЖНО! Не стоит верить имени пина в части входной он или выходной. Есть случаи, когда в названии пина есть «in» или «out@? а на самом деле всё обстоит совсем не так. Так где же узнать входной это пин или выходной?
Вариант 1. Почитать мануал (описание) EMC2. Там это выглядит как-то так:
iocontrol.0.coolant-flood (bit, out)
— как мы уже разобрались, эта запись означает, что это выходной пин coolant-flood компонента iocontrol.0
Вариант 2. (мной пока слабо используемый) Смотреть на свойства пина можно и в емс — любой пин открываем в Halshow и смотрим.
Также компонент может иметь один или несколько параметров (это такие коэффициенты, которые используются при работе компонента). Тут нет проблем — такое есть в любой схеме (номиналы резисторов, например).
Компоненты могут «соединяться» между собой посредством связей (проводки между входами и выходами). Тут есть тоже свои правила: 1. Чтобы не путаться, договорились каждую связь обзывать своим именем.
В этом случае, запись «коммутации» двух компонентов будет выглядеть так:
(команда) (имя связи) (источник "сигнала") (приёмник "сигнала") net vel <= motion.current-vel => stepgen.3.vel
, что означает создаём (команда net) связь (vel) между пином current-vel компонента motion и пином vel компонента stepgen.3 (тут 3 — это номер компонента с таким именем — ведь один компонент может использоваться одновременно несколько раз, но под разными порядковыми номерами). Стрелочки <= и => писать необязательно. С ними на начальном этапе овладения системой проще — понятно ОТКУДА и куда передается «сигнал».
Возможно эту запись сделать так:
net vel <= motion.current-vel net vel => stepgen.3.vel
— как вам будет удобнее и понятнее. Кстати, эти две строчки могут быть записаны в разных местах HAL-файла.
Есть и второе правило при записи связи:
2. К одному выходному пину можно подсоединить несколько входных пинов. Но один входной пин можно подсоединить только к одному выходному пину.
Глава 6. КОМАНДЫ
Вот приходите вы домой (вошли в систему), подошли к телевизору, нажимаете на пульте 5 канал (обращаетесь к компоненту) и… А экран-то тёмный! Оказывается телевизор-то не включили!!!
Так же происходит и с компонентами Линукса. В HAL-е нужно первым делом «включить» нужные компоненты — «загрузить компонент HAL реального времени»!
Так мы подошли к понятию КОМАНДЫ.
1. loadrt — загружает компонент HAL реального времени. Например,
loadrt stepgen step_type=0,0,0,0
, что означает: загружаем (loadrt) компонет stepgen с некоторыми установками (step_type=0,0,0,0), о которых поговорим позже.
2. addf — добавляет компонент реального времени в поток. А по-русски, эта команда определяет, где будет находиться компонент: в высокоскоростном потоке (base-thread) или в низкоскоростном потоке (servo-thread). А если ещё точнее, то определяет, где будет находится ФУНКЦИЯ компонента, так как один компонент может исполнять несколько функций, которые могут быть высокоскоростными и низкоскоростными. Это видно на примере:
addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf parport.0.write base-thread addf parport.0.reset base-thread addf stepgen.capture-position servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread
ВАЖНО! Эти команды должны быть обязательно! Именно они определяют: какими компонентами мы собираемся пользоваться и какие требования к этим компонентам мы предъявляем по скорости.
ВАЖНО 2! Перед тем, как прописывать функции компонента в потоки — посмотрите описание компонента! Возможно у него есть НЕСКОЛЬКО ФУНКЦИЙ и у этих функций могут быть имена ОТЛИЧНЫЕ ОТ ИМЕНИ КОМПОНЕНТА. Эти функции нужно прописывать отдельно.
3. С этой командой мы уже встречались — net — создает связь между сигналом и одним или несколькими пинами. Очень удобно, что если этой связи ещё не было (а ведь мы помним, что в Линуксе каждая связь имеет своё имя), то эта связь автоматически создаётся.
Например, нам нужно подать высчитанный программой сигнал Step на два контакта LPT-порта (мы пожелали управлять через отдельные драйвера двумя шаговиками по координате X). Для этого мы должны написать:
net xstep <= stepgen.0.step net xstep => parport.0.pin-02-out net xstep => parport.0.pin-03-out
или
net xstep <= stepgen.0.step => parport.0.pin-02-out => parport.0.pin-03-out
или
net xstep <= stepgen.0.step => parport.0.pin-02-out parport.0.pin-03-out
или
net xstep stepgen.0.step parport.0.pin-02-out parport.0.pin-03-out
или
net xstep parport.0.pin-02-out parport.0.pin-03-out stepgen.0.step
Т.е. главное в этой команде:
на первом месте — команда (net), затем название связи (xstep), а уже потом источник сигнала (выходной пин компонента — stepgen.0.step) и приёмник (приёмники) сигнала (входной или входные пины компонентов parport.0.pin-02-out и parport.0.pin-03-out).
Стрелочки => и <= Линуксом не воспринимаются и нужны только на удобства написания. Советую писать на начальных шагах, пока не привыкнете к названиям пинов и компонентам.
4. Команда setp — устанавливает значение пина или параметра.
Если открыть ваш HAL-файл, то вы легко найдёте место, где прописываются параметры ваших шаговиков по координатам.
Например, по X:
setp stepgen.0.position-scale [AXIS_0]SCALE setp stepgen.0.steplen 1 setp stepgen.0.stepspace 0 setp stepgen.0.dirhold 55000 setp stepgen.0.dirsetup 55000 setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
Тут даже переводить нечего — всё прозрачно! И мы видим, что команда setp может присваивать значения пинам и параметрам компонентов из INI-файла!!! Вот она связь между hal и ini…
Но, иногда, можно прописать значения не из ini, а непосредственно. А выглядеть это будет, например, так:
setp stepgen.0.position-scale 44.145839 setp stepgen.0.steplen 1 setp stepgen.0.stepspace 0 setp stepgen.0.dirhold 55000 setp stepgen.0.dirsetup 55000 setp stepgen.0.maxaccel 150
Оба варианта работают.
ВАЖНО!
На первых порах часто путался: где ставить setp, а где net? Так и подмывало написать:
setp parport.0.pin-02-out stepgen.0.step
(ну типа, присвоить значение пина STEP выводу LPT-порта)
ЭТО НЕВЕРНО!!! (но не опасно, как вы увидите ниже )
Мы ознакомились с основными командами. Другие будем изучать по мере встреч с ними…
Ура Линуксу или ошибки, ошибки и ошибки…
Что бы мы делали, если бы LinuxCNC не проверял ошибки ДО начала работы? А ведь проверяет!
Изменили мы ini- и hal-файлы, запустили EMC2 и… Получили сообщение об ошибке. Что с ним делать? И ведь понаписано много! Разберёмся последовательно:
Print file information:
Понятно — тут всё важное о самой системе.
Debug file information:
А вот тут уже поинтереснее… Например вот эта строка у меня не понравилась EMC2:
333.hal:105: Pin 'axis.3.amp-enable-out' does not exist
Расшифровка: в файле 333.hal в строке 105 прописан пин axis.3.amp-enable-out, которого просто нет. Забыл я подчистить остатки от четвертой оси, которую изничтожил на корню. Удалил и всё заработало!
Также система отслеживает ошибки с применением типа переменных и параметров (BIT или FLOAT), ошибки при применении связей между пинами компонентов и многое другое. И самое важное — указывает конкретное место, где эту ошибку нашла!
«И это меня радует!» («Килаграмм»)
BIT или не BIT? Вот в чём вопрос!
Захотели, например, мы включать и выключать внешний двигатель, управляемый stepgen.2, командой из g-кода.
Выбрали motion.analog-out-00 (команда M68 E0 Q1 и M68 E0 Q0) , а управлять решили через stepgen.2.enable
Прописываем связь этих пинов в hal:
net upr motion.analog-out-00 stepgen.2.enable
(это означает: создаём связь upr для соединения выходного пина analog-out-00 компонента motion со входным пином enable компонента stepgen.2)
и … НЕ РАБОТАЕТ!!!
А причина проста — несоответствие типа выходного и входного пинов:
motion.analog-out-00 (float, out)
и
(bit) stepgen.<chan>.enable
Выход из ситуации может быть таким — использовать motion.digital-out-00 (команды M64 P0 и M65 P0) — формат сигнала BIT
И самое главное — НЕ ЗАБЫВАЙТЕ ПРОВЕРЯТЬ ФОРМАТЫ пинов и параметров, а также переменных. Это несложно, но позволит избежать многих ошибок…
Нужно ли изобретать велосипед или Компоненты реального времени. Часть 1.
Мы уже вполне осознанно начали лазить по файлам настройки и конфигурации CNC — самое время начать усовершенствовать работу нашего станка, придумать всякие удобства, «вкусности» и т.п.
Например, не запускать станок, пока точно не будет ясно, что оператор нажал две кнопки безопасности, разнесенные подальше друг от друга
Пропишем эти две кнопки:
net start1 <= parport.0.pin-10-in net start2 <= parport.0.pin-11-in
а дальше нужно включать станок только если эти «кнопочки» (start1 и start2) нажаты (= 0). Сделаем это через пины
stepgen.0.enable stepgen.1.enable stepgen.2.enable
всех трех координат. Т.е. пока отрабатывается программа — держи руки на кнопках!
Т.е. условием включения станка должно быть:
start1 = 0 start2 = 0 stepgen.0.enable , stepgen.1.enable и stepgen.2.enable имеют уровень сигнала равный 1 или True
Мы, как электронщики, прекрасно знаем, что это легко реализовать через двух-входовый элемент ИЛИ-НЕ и двух-входовый И
(start1 или start2), затем инвертируем и на первый вход элемента И, а на второй вход того же И — axis.0.amp-enable-out
Тогда на выходе, при start1 = 0 и start2 = 0, получим тот же уровень, что и axis.0.amp-enable-out и передаём его на stepgen.0.enable
И так по всем трем осям…
А, если хотя бы один start (хотя бы одна кнопка) равен 1 (отжата), то stepgen.0.enable равен 0 (False) и движение по осям прекращается.
Что нам может предложить CNC из стандартного набора компонентов?
Смотрим мануал:
6.5 Логические компоненты 6.5.3 or2 Компонент "or2" это двух вводовый вентиль "или" ("or"). 6.5.2 not Компонент "not" ("не") это битовый инвертор. 6.5.1 and2 Компонент "and2" это вентиль "и" ("and") с двумя вводами.
Пропишем всё в логике CNC (только одну координату для краткости):
net start1 => or2.0.in0 net start2 => or2.0.in1 net orout <= or2.0.out => not.0.in1 net notout <= not.0.out => and2.0.in0 net andin1 <= axis.0.amp-enable-out => and2.0.in1 net andout <= and2.0.out => stepgen.0.enable
Вроде всё… НЕТ! Опять забыли для начала «включить» компоненты и определить их в нужном потоке… Мы используем один компонент or2, один компонент not и один компонент and2 (для одной оси) или три компонента and2 (для трёх осей). Получается всё вместе:
loadrt or2 loadrt not loadrt and2 count=3 addf or2.0 servo-thread addf not.0 servo-thread addf and2.0 servo-thread addf and2.1 servo-thread addf and2.2 servo-thread net start1 <= parport.0.pin-10-in net start2 <= parport.0.pin-11-in net start1 => or2.0.in0 net start2 => or2.0.in1 net orout <= or2.0.out => not.0.in1 net notout <= not.0.out => and2.0.in0 => and2.1.in0 => and2.2.in0 net andin0 <= axis.0.amp-enable-out => and2.0.in1 net andout0 <= and2.0.out => stepgen.0.enable net andin1 <= axis.1.amp-enable-out => and2.1.in1 net andout1 <= and2.1.out => stepgen.1.enable net andin2 <= axis.2.amp-enable-out => and2.2.in1 net andout2 <= and2.2.out => stepgen.2.enable
Здесь loadrt and2 count=3 говорит о том, что мы будем использовать компонент 2-И трижды.
Это пример использования готовых компонентов для реализации «цифровой схемы». Но это далеко не все возможности компонентов реального времени.
Компоненты реального времени. Часть 2.
Аналогично «цифровым» прототипам в LinuxCNC есть и «аналоговые» компоненты:
integ — интегратор
invert — инвертор
limit[N] — ограничитель сигнала между min и max
lowpass — низкочастотный фильтр
mux2, mux4, mux8 — коммутаторы сигналов на 2, 4, 8 коммутируемых входов
и другие…
Своя панель. Первые шаги.
В процессе отладки своего станка часто возникает потребность визуального контроля процесса или оперативного изменения параметров работы станка. Как это реализовать, если на стандартной панели таких элементов нет? Конечно, сделать эти элементы самостоятельно!
Начнём с простого примера. Нужно контролировать состояние сигналов stepgen.0.enable, stepgen.1.enable и stepgen.2.enable.
Светодиоды! Вот что нам понадобится. Но не настоящие из кремния и пластика, а «нарисованные».
1. Создаём файл с именем ledall.xml
Делаем его в обычном текстовом редакторе.
Пишем:
<pyvcp> <led halpin="led0" /> <led halpin="led1" /> <led halpin="led2" /> </pyvcp>
halpin — это процедура задания имени «светодиода» в .hal
Сохраняем файл как ledall.xml в папку с файлом нашего .ini файла!
2. Прописываем в .ini в разделе [DISPLAY]:
PYVCP=ledall.xml
а в разделе [HAL]:
POSTGUI_HALFILE = ledall.hal
3. Создаём файл ledall.hal и прописываем в нём:
net xenable => pyvcp.led0 net yenable => pyvcp.led1 net zenable => pyvcp.led2
Как вы уже поняли, мы использовали СИГНАЛЫ xenable, yenable и zenable из нашего файла .hal:
net xenable <= axis.0.amp-enable-out => stepgen.0.enable net yenable <= axis.1.amp-enable-out => stepgen.1.enable net zenable <= axis.2.amp-enable-out => stepgen.2.enable
, т.е. эти сигналы обязательно должны быть уже созданы в файле .hal
Теперь мы можем видеть состояние наших двигателей во время работы станка.
По умолчанию КРАСНЫЙ — это FALSE или 0, а ЗЕЛЕНЫЙ — это TRUE или 1.
Как «прикрутить» свою панель к «стандартной»?
Сразу оговорюсь, что «стандартной» панелью назвал панель AXIS — это самая распространенная панель у новичков.
Для начала: Файл, в котором будем прописывать связи пинов панели с пинами CNC называется posgui.hal и лежит он в папке конфигурации (в папке с настройками — там, где лежат файлы .ini и .hal)
Свою панель вырисовываем в Glade (это такая программа для создания визуальной панели) и сохраняем в папке конфигурации под именем mygui.ui При прорисовывании в Glade брать «кнопки» и «индикаторы», по возможности, из меню HAL_PYTHON
В .ini прописываем:
[DISPLAY] GLADEVCP = mygui.ui
Теперь при запуске CNC mygui.ui мы увидим стандартную панель с прикрученной к ней справа нашей панелью. Если открыть в CNC Станок-Установки HAL — PINS — gladevcp, то можно посмотреть весь список пинов нашей панели.
Когда дополнительных кнопок и индикаторов много — лучше для себя сделать табличку соответствий: пин панели — пин компонента — действие (так будет всё понятно и запутаться будет труднее).
Как «связать» кнопки своей панели с CNC?
Для связи нашей панели с CNC используем пины различных компонентов.
ВНИМАНИЕ! Особо обратите внимание на компонент halui — в нём есть множество полезных пинов!
1. Прописываем в .ini , что мы будем использовать компонент halui:
[HAL] HALUI = halui
2. В описании EMC2 внимательно читаем о пинах компонента halui Например, Мы хотим на своей панели поставить индикатор «E-STOP». Берем в Glade в разделе «HAL_PYTHON» индикатор LED (он, например, прописал свой пин как hal_led1 Ищем соответствующий пин в halui:
10.2.3 E-Stop (АВОСТ) halui.estop.is-activated (bit, out)- отображает состояние E-stop.
Прописываем в postgui.hal (связываем эти два пина):
net led-estop <= halui.estop.is-activated => gladevcp.hal_led1
Теперь у нас индикатор на панели показывает состояние E-STOP.
Как не запутаться в сложной схеме CNC?
Как только мы начинаем понимать основы LCNC, то начинаем творить!
И натыкаемся на вопрос: как не запутаться в множестве связей? А ведь каждая связь должна иметь своё имя!
Я поступаю так: Даю каждой связи имя по имени выхода компонента (ведь выходы компонентов в LCNC объединять нельзя!). Например:
net mux2out3 mux2.3.out and2.4.in0
net and4out and2.4.out not.2.in
Содержание
- 1 Введение
- 1.1 Настройка адреса вводавывода LPT-PCI
- 1.2 Настройка работы шаговых двигателей
- 1.3 Настройка датчиков домашнего положения
- 1.4 Настройка работы шпинделя
- 1.5 Настройка сети и подключение сетевой папки
- 1.6 Настройка удаленного доступа
- 1.7 Настройка высоты датчика автоматического определения высоты инструмента
- 1.8 Настройка внешней кнопки E-Stop
- 1.9 Рекомендации по выбору беспроводного адаптера
- 2 Справочник параметров *.ini файла
- 2.1 Группа [DISPLAY]
- 2.1.1 DISPLAY
- 2.1.2 EDITOR
- 2.1.3 POSITION_OFFSET
- 2.1.4 POSITION_FEEDBACK
- 2.1.5 ARCDIVISION
- 2.1.6 GRIDS
- 2.1.7 MAX_FEED_OVERRIDE
- 2.1.8 MIN_SPINDLE_OVERRIDE
- 2.1.9 MAX_SPINDLE_OVERRIDE
- 2.1.10 DEFAULT_LINEAR_VELOCITY
- 2.1.11 MAX_LINEAR_VELOCITY
- 2.2 Группа [EMCMOT]
- 2.2.1 EMCMOT
- 2.2.2 COMM_TIMEOUT
- 2.2.3 BASE_PERIOD
- 2.2.4 SERVO_PERIOD
- 2.3 Группа [TRAJ]
- 2.4 Группа [AXIS_*]
- 2.4.1 TYPE
- 2.4.2 HOME
- 2.4.3 MAX_VELOCITY
- 2.4.4 MAX_ACCELERATION
- 2.4.5 STEPGEN_MAXACCEL
- 2.4.6 SCALE
- 2.4.7 FERROR
- 2.4.8 MIN_FERROR
- 2.4.9 MIN_LIMIT
- 2.4.10 MAX_LIMIT
- 2.4.11 HOME_OFFSET
- 2.4.12 HOME_SEARCH_VEL
- 2.4.13 HOME_LATCH_VEL
- 2.4.14 HOME_IGNORE_LIMITS
- 2.4.15 HOME_SEQUENCE
- 2.1 Группа [DISPLAY]
- 3 Справочник параметров *.hal файла
- 4 Работа с утилитами HAL
- 4.1 HALSHOW
- 5 Приложения
- 5.1 Ссылки на дополнительную документацию
- 5.2 Конфигурационные файлы LinuxCNC для оборудования компании CNC-Technology
- 5.3 Возможные ошибки и методы их устранения
- 5.4 Показатели Latency-Test на различных ПК
Введение
В настоящий момент всё оборудование под управлением Craftex поставляется на контроллерах EP7i92, смотрите руководство по администрированию в каталоге
Ссылка
В LinuxCNC настройка параметров под конкретное оборудование, происходит отлично от большинства популярных систем управления ЧПУ (Mach3 или NC-Studio). Большинство необходимых параметров задаются внесением изменений в текстовые конфигурационные файлы *.hal и *.ini.
Примечание: В составе LinuxCNC есть приложение с графическим интерфейсом пользователя для настройки конфигурации станка (Stepconf), однако, как показывает практика некоторые изменения приходится вносить в конфигурационные файлы вручную. В большинстве случаев в этом нет необходимости. Именно поэтому в данном руководстве вся настройка и внесение изменений происходят через *.hal и *.ini файлы.
Что же такое *.hal и *.ini файлы? Немного теории.
hal — Hardware Abstraction Layer (Слой аппаратных абстракций) — конфигурационный файл Linux, отвечающий за связь аппаратной и программной части станка.
К примеру в данном файле содержится информация: адрес устройства ввода-вывода (PCI-LPT или другой контроллер), назначение портов вводавывода функциям системы и др.
ini — файл конфигурации, содержащий настройки системы.
К примеру в данном файле содержится информация: скорости, ускорения, количество импульсов на мм, скорость поиска домашнего положения, пределы перемещений и др.
Для удобства освоения материала настоящее руководство разделено на 2 части: справочники по *.hal и *.ini файлам, а также отдельные главы по настройке тех или иных функций (перемещения, шпинделя, датчиков и прочее). Ниже перечислены все необходимые параметры для настройки вашего станка под управлением LPT (в руководстве используется контроллер LPT-DPTR 1.03)
В данном руководстве подразумевается, что вы установили скаченный образ Craftex т.к. некоторые аспекты по настройке уже сделаны. Также в данном руководстве не подразумевается использование утилит по автоматическому созданию или изменению файлов конфигурации.
В начале определим местоположение наших файлов конфигурации. По умолчанию файлы конфигурации расположены по адресу home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal и home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal. Обратите внимание, в директории config лежат все созданные конфигурации. Конфигурация может отличаться в зависимости от названия станка к примеру, Cutter_GR, мой-станок.hal и другое.
Настройка адреса вводавывода LPT-PCI
Настройка системы LinuxCNC для работы с LPT-портом начинается с указания адреса ввода-вывода LPT в вашем ПК.
В случае использования материнской платы не имеющего на борту встроенного LPT порта, рекомендуется воспользоваться платой PCI-LPT c чипом CH351Q (ссылка на сайт CNC-Technology).
Для того, чтобы увидеть установленные в системный блок PCI устройства нужно открыть эмулятор терминала и набрать команду:
lspci –vv
В командной строке отобразятся все устройства, доступные операционной системе для работы. Среди них необходимо найти Parallel controller. Необходимый нам Region 0, адрес данного устройства, к примеру c000.
Данный адрес необходимо указать в *.hal файле конфигурации:
linuxcnc/configs/Cutter_ST/ST.hal
В открытом файле Cutter_ST.hal изменить строку loadrt hal_parport cfg=”0x378 out” на loadrt hal_parport cfg=”0xс000 out”, где 0xс000 адрес п0орта pci-платы, который мы определили ранее. Теперь мы можем запустить linuxcnc ярлыком на рабочем столе и убедиться что станок перемещается.
Настройка работы шаговых двигателей
Основные параметры настройки шаговых двигателей это деление шага (кол-во импульсов на мм), направление движения, скорости и ускорения. Дополнительные параметры, которые могут потребоваться: изменение временных составляющих импульсов на драйвер. Рассмотрим основные параметры и алгоритм настройки.
Установка пинов в *.hal
Необходимо открыть *.hal файл и убедиться в том, что порты и пины указаны в соответствии с распиновкой LPT. Подробнее смотрите в справочнике по *.hal файлу.
Настройка направлений, скоростей и ускорений для каждой из осей.
Детальней рассмотрим назначение пинов для xtep и xdir.
net xstep => parport.0.pin-02-out
net xdir => parport.0.pin-03-out
Данные записи означают, что сигнал Step по оси X будет подаваться на пин 2 LPT-порта, а сигнал Dir по оси X будет подаваться на пин 3 LPT-порта. По аналогии проверяем другие сигналы для LPT.
Кроме этого, для правильной работы шаговых двигателей необходимо выставить параметр SCALE в *.ini файле. SCALE — количество импульсов на мм, параметр прямо-пропорциональный количеству импульсов на оборот шагового двигателя и обратно-пропорциональный шагу винта. Другими словами, если на драйвере выставлено деление шага 1/4, шаговому двигателю требуется 800 импульсов на оборот (т.е. стандартное деление шага 200 умножили на делитель 4), а винт ШВП, установленный на станке, имеет шаг 5 мм, то параметр SCALE = 800 / 5 = 160.
Параметр SCALE указана в *.ini файле, в соответствии с каждой группой для своей оси. К примеру для того, чтобы изменить данный параметр для оси X нужно найти его в группе [JOINT_0]. Аналогично [JOINT_1] для оси Y и [JOINT_2] для оси Z.
Если направление перемещения не совпадает с фактическим, то необходимо удалить строчку setp parport…. для необходимого пина. К примеру, если направление перемещения не совпадает по оси X то в *.hal файле необходимо найти строчку setp parport.0.pin-03-out-invert 1 и её удалить (достаточно сделать её комментарием поставив знак # перед строчкой: #setp parport.0.pin-03-out-invert 1).
Настройка датчиков домашнего положения
Для настройки датчиков необходимо убедиться, что аппаратная и программная часть связаны. Для этого откроем наш *.hal файл и проверим правильность настройки.
net home-x <= parport.0.pin-10-in
net home-y <= parport.0.pin-11-in
net home-z <= parport.0.pin-12-in
net home-a <= parport.0.pin-13-in
Подобным образом происходит связь аппаратной и программной части в области датчиков домашнего положения. Рассмотрев детальнее мы поймешь что pin 10 соответствует входу LimX на плате LPT-DPTR 1.03 и другие входные сигналы соответственно.
После того, как мы установили датчики домашнего положения необходимо проверить их срабатывание через hal-scope или HAL-метр (более подробно см. в главе Hal-scope настоящего руководства).
Необходимо убедиться, что в свободном состоянии т.е. в состоянии когда датчик не сработал состояние в LinuxCNC соответствует FALSE.
Для того, чтобы привести значение всех датчиков к FALSE необходимо изменить значение датчика на in-not.
После того, как все датчики в свободном состоянии соответствуют показанию FALSE, можно приступать к дальнейшей настройке.
Убедитесь, что строки, отвечающие за датчики в *.ini файле верные. Так, к примеру для оси X настройки датчиков хранятся в группе параметров [JOINT_0]:
HOME_OFFSET = 0.00
HOME_SEARCH_VEL = 15.00
HOME_LATCH_VEL = -1.50
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
Такие же параметры соответствуют осям в группах [JOINT_1] для оси X, [JOINT_1] для оси Z.
Теперь можно вернуть все оси в домашнее положение.
В случае, если одна из осей начинает перемещаться в направлении обратном положению датчика, необходимо изменить направление поиска домашнего положения. Для этого необходимо изменить знак скорости поиска домашнего положения, к примеру:
HOME_SEARCH_VEL = -15.00
HOME_LATCH_VEL = 1.50
Обратите внимание, что также изменяется знак параметра HOME_LATCH_VEL.
Далее необходимо определить минимальные и максимальные пределы (размеры рабочего поля). Для этого обратимся к *.ini файлу. В *.ini файле, для каждой оси присутствует группа параметров AXIS и JOINT. К примеру, для оси X группа [AXIS_X] и [JOINT_0]. В этих группах необходимо изменить параметры MIN_LIMIT и MAX_LIMIT, для минимального и максимального перемещения соответственно. Обратите внимание, что данные параметры повторяются как в группе AXIS, так и в группе JOINT.
Настройка работы шпинделя
Настройка шпинделя как правило состоит из двух частей: настройка автоматического вкл./выкл. шпинделя и настройка генерации ШИМ для управления скоростью вращения шпинделя.
Рассмотрим первую составляющую. Включение — выключение шпинделя простая задача, потому в *.hal файле всего две строки, указывающие на эту функцию. Необходимо убедиться, что в *.hal файле существует связь сигнала spindle-cw
с пином, отвечающим за включение.
net spindle-cw => parport.0.pin-16-out
setp parport.0.pin-16-out-invert 1
Далее необходимо убедиться, что точно также подключен сигнал spindle-pwm
отвечающий за выход ШИМ.
net spindle-pwm => parport.0.pin-14-out
setp parport.0.pin-14-out-invert 1
Далее, обратим внимание на настройку формирования импульсов ШИМ, который отвечает за регулировку оборотов шпинделя.
setp pwmgen.0.pwm-freq 988.0
setp pwmgen.0.scale 24000
setp pwmgen.0.offset 0.02
setp pwmgen.0.dither-pwm true
Среди них, параметр setp pwmgen.0.pwm-freq 988.0
является несущей частотой ШИМ сигнала, параметр setp pwmgen.0.scale 24000
является максимальной скоростью шпинделя, параметр setp pwmgen.0.offset 0.02
, определяет смещение фактической частоты от заданной (применяется для более точной калибровки) и параметр setp pwmgen.0.dither-pwm true
указывает на «метод округления».
Настройка сети и подключение сетевой папки
Настройку общего доступа к папке будем производить на компьютере под управлением ОС Windows. А подключаться к ней будем уже с компьютера с ОС Debian (LinuxCNC-Craftex).
Создаём папку в Windows где-нибудь, кликаем правой кнопкой мыши, выбираем «Свойства» — «Доступ» и жмём «Расширенная настройка»:
Далее проставляем галочку «Открыть общий доступ к этой папке» и нажимаем «Применить»:
Всё, мы расшарили папку в Windows и к ней можно подключаться.
Как же все таки подключиться из Debian к нашей сетевой папке?
Откроем файловый менеджер (Thunar).
И выберем «Обзор сети».
Осталось найти сетевую папку в сети и ввести пароль и логин пользователя Windows.
Как же подключиться без ввода пароля к Windows папке из Debian?
Нужно в Windows открыть «Центр управления сетями и общим доступом», выбрать «Изменить дополнительные параметры общего доступа»:
В пункте «Все сети» в самом низу будет пункт «Общий доступ с парольной защитой»:
Надо отключить общий доступ с парольной защитой и «Сохранить изменения».
Настройка удаленного доступа
Удаленный доступ к Debian можно осуществить несколькими способами. Например через терминальный или графический доступ.
Терминальный или SSH(Secure Shell) доступ полезен, когда достаточно функционала командной строки для осуществления деятельности, такой доступ очень экономичен в плане интернет трафика. SSH сервер уже встроен в минимальную сборку с Craftex. Для доступа из ОС Windows потребуется лишь установленная программа Putty.
Если вам привычнее работать с файлам в графическом обозревателе можно воспользоваться WinSCP, который работает по тому же SSH протоколу.
Надо сказать, что данный способ требует белого ip адреса для компьютера с Debian. Если у вас есть роутер, тогда потребуется пробросить стандартный для ssh порт № 22.
Графический доступ можно осуществлять через тот же SSH и программы Putty+Xming или протокол VNC, но как показывает практика, даже в одной локальной сети задержки графики настолько большие, что комфортно работать невозможно. Поэтому придется пользоваться сторонним ПО. Всем известный Team Viewer уже встроен в образ с Craftex. Запустите его и получите доступ из Windows после ввода вашего ID и пароля.
Настройка высоты датчика автоматического определения высоты инструмента
Перед тем, как настраивать работу датчика необходимо убедиться в том, что в *.hal файле указаны верные назначения для входного сигнала.
net probe-in => motion.probe-input
net probe-in <= parport.0.pin-13-in-not
А также, необходимо убедиться в правильности нормального состояния датчика. Для этого необходимо воспользоваться утилитой HAL-метр. В разомкнутом состоянии датчик должен быть в состоянии FALSE.
В текущем релизе ПО для изменение высоты датчика вам потребуется отредактировать системный файл Craftex. В дальнейшем этот параметр будет находиться в глобальном config файле Craftex.config.
1.Для начала потребуется запустить файловый менеджер с рабочего стола и перейти по пути /home/notroot/linuxcnc-dev/bin/сraftex (notroot — ваш пользователь)
2.Далее, вам нужно отыскать в текущем каталоге файлы gmoccapy3, gmoccapy4 и открыть их поочередно через программу Mousepad (текстовый редактор)
3.В текстовом редакторе нажмем сочетание клавиш Ctrl + F для вызова поиска по файлу и введем в поиск строку: #SIZE OF SENSOR
4.Как только будет найдена требуемая строка нам потребуется всего лишь поменять значение после буквы Z в мм.
5.Сохраним файл сочетанием клавиш Ctrl + S.
6.Теперь можно запускать Craftex.
Настройка внешней кнопки E-Stop
Для удобства работы чаще всего организовывается внешняя кнопка E-stop (фактически сигналом E-Stop может, более того, должна являться не только кнопка E-stop, но и другие источники сигнала аварии. Такими источниками: драйвера шаговых двигателей имеющих выход Alarm или Fault; преобразователь частоты). Отдельное внимание стоит обратить на то, что в случае использования внешней кнопки E-stop первая функциональная клавиша (соответствующая F1) в Craftex становится привязана к сигналу E-stop, что также является очень удобным.
Для того, чтобы клавиша была функциональна необходимо внести соответствующие изменения в *.hal файл.
Привести к данному следующие строки файла:
net estop-ext => parport.0.pin-15-in
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
Примечание: если при включении система заблокирована, то вероятно дело в том, что входной сигнал имеет неправильное нормальное состояние (NO, NC). В таком случае нужно инвертировать входной сигнал, для этого:
net estop-ext => parport.0.pin-15-in-not
Рекомендации по выбору беспроводного адаптера
Для того, чтобы удобнее организовать работу оператора между рабочим ПК и ПК станка можно организовать локальную сеть. Таким образом отпадет возможность использовать Flash-диски.
Есть несколько способов организовать локальную сеть: проводную и беспроводную. Мы рекомендуем использовать беспроводной адаптер TP-Link TL-WN727N в ввиду надежности, стоимости и легкости установки драйверов в Linux.
Драйвера для адаптера TL-WN727N можно скачать по ссылке:
Последовательность установки драйверов:
1. В скачанном архиве находятся руководство по установке и архив с драйвером. Распаковываем архив с драйвером и получаем папку rtl8188EUS_linux_v5.2.2.4_25483.20171222. Распаковывать в любое удобное место.
2. Открываем эмулятор терминала и переходим в папку с драйвером. К примеру, cd home/notroot/rtl8188EUS_linux_v5.2.2.4_25483.20171222.
3. Вводим в терминала make clean
4. Вводим в терминале make
1
5. Вводим sudo cp 8188eu.ko lib/modules/[kernel version]/drivers/net/wirieless
2
6. Вводим sudo depmode -a
7. Вводим sudo modprobe 8188eu.ko
1. После компиляции командой make в терминале мы увидим сообщения о том, какой файл скомпилирован «8188eu.ko»
2. Версию ядра [kernel version]мы можем увидеть, если пройдем по пути lib/modules/
Справочник параметров *.ini файла
- .ini — файл конфигурации, в котором хранятся основные настройки конфигурации LinuxCNC под конкретное оборудование. Данный файл располагается в директории: home/user/linuxcnc/configs/ST.ini, где:
user — имя пользователя на вашем ПК
ST*.ini — название вашей конфигурации
Давайте разберем, из чего состоит *.ini файл.
Группа [DISPLAY]
DISPLAY
Имя интерфейса для использования при загрузки текущей конфигурации LinuxCNC.
Доступные интерфейсы: axis, touchy, gmoccapy, gscreen, keystick, mini, tklinuxcnc, xemc.
DISPLAY = gmoccapy
Выбран интерфейс GMOCCAPY.
EDITOR
Имя графического редактора, с помощью которого можно открыть файл управляющей программы для редактирования.
Доступные редакторы: gedit, mousepad.
EDITOR = gedit
Выбран графический редактор gedit.
POSITION_OFFSET
Система координат, которая отображается по умолчанию.
Доступные системы координат: RELATIVE — относительная, MACHINE — абсолютная.
POSTION_OFFSET = RELATIVE
По умолчанию выбрана относительная система координат.
POSITION_FEEDBACK
Отображение координат в интерфейсе.
Возможно отображать текущую позицию двумя способами: ACTUAL — действительное положение т.е. положение полученное по обратной связи от двигателей, COMMANDER — заданное (идеальное) значение координат.
POSITION_FEEDBACK = ACTUAL
По умолчанию выбрано актуальное отображение.
ARCDIVISION
Тип отображения дуг (дробление дуги на прямые участки). Чем большее значение дробления указано, тем более точное (приближенное к идеальной дуге) отображение будет в окне предпросмотра, но чем тем требуется больше ресурсов ПК.
ARCDIVISION = 64
Значение по умолчанию 64.
GRIDS
Тип деления сетки. Единица измерения дюймы (in), мм (mm).
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
Доступные по умолчанию сетки.
MAX_FEED_OVERRIDE
Максимальное изменение скорости подачи, относительно скорости выставленной в управляющей программе или окне MDI.
MAX_FEED_OVERRIDE = 1.2
Значение 1.2 означает, что пользователь может превысить значение установленной скорости лишь на 20%
MIN_SPINDLE_OVERRIDE
Минимальное значение скорости вращения шпинделя, относительно выставленной в управляющей программе или окне MDI.
MIN_SPINDLE_OVERRIDE = 0.5
Значение 0.5 означает, что пользователь может понизить установленную скорость вращения шпинделя не более чем на 50%
MAX_SPINDLE_OVERRIDE
Максимальное значение скорости вращения шпинделя, относительно выставленной в управляющей программе или окне MDI.
MAX_SPINDLE_OVERRIDE = 1.2
Значение 1.2 означает, что пользователь может повысить установленную скорость вращения шпинделя не более чем на 20%
DEFAULT_LINEAR_VELOCITY
Скорость перемещений, установленная при первом запуске LinuxCNC.
DEFAULT_LINEAR_VELOCITY = 20.0
Скорость по умолчанию 20 мм/сек.
MAX_LINEAR_VELOCITY
Максимальная скорость свободных перемещений, которую можно изменять из интерфейса.
MAX_LINEAR_VELOCITY = 100.0
Максимальная скорость перемещений не более 100.0 ммсек.
Группа [EMCMOT]
EMCMOT
COMM_TIMEOUT
BASE_PERIOD
Параметр BASE_PERIOD
является одним из основных параметров, влияющих на максимальную скорость перемещения станка. Параметр BASE_PERIOD
определяется исходя из показателей Latency-Test.
SERVO_PERIOD
Группа [TRAJ]
Группа [AXIS_*]
TYPE
В LinuxCNC могут быть два типа оси: линейная и угловая.
TYPE = LINEAR
Линейная ось
TYPE = ANGULAT
Угловая (поворотная ось)
HOME
MAX_VELOCITY
Максимальная скорость перемещений данной оси (ммсек).
MAX_VELOCITY = 100.0
Максимальная скорость перемещения 100.0 мм/сек.
MAX_ACCELERATION
Максимальное ускорение данной оси (ммсек^2).
Пример: Максимальное ускорение 600 ммсек^2 MAX_ACCELERATION = 600.0
STEPGEN_MAXACCEL
Данные значение должно быть на 1-10% больше по сравнению с параметром MAX_ACCELERATION. Если вы используете параметр BACKLASH (компенсацию люфта), то данный параметр необходимо увеличить в 1,5 — 2 раза по сравнению с параметром MAX_ACCELERATION.
SCALE
Параметр SCALE отвечает за количество импульсов на единицу перемещения. Другими словами, данный параметр отвечает за соответствие реального перемещения станка программному. Для того, чтобы посчитать количество импульсов на мм, необходимо воспользоваться формулой.
FERROR
Максимальное допустимое отклонение от перемещений станка (в мм). Если рассогласование между реальным и заданным положением превысит значение FERROR, то контроллер отключится. Максимально допустимое отклонение FERROR может достигаться при скорости [TRAJ] MAX_VELOCITY и при снижении скорости ошибка будет стремиться к MIN_FERROR.
MIN_FERROR
Минимальное допустимое отклонение от заданного перемещения (в мм). Если рассогласование между реальным и заданным положением превысит значение MIN_FERROR, то контроллер отключится. Минимально допустимое отклонение MIN_FERROR при низкой скорости. При росте скорости, пропорционально будет увеличиваться ошибка рассогласования и может достигать FERROR при скорости MAX_VELOCITY.
MIN_LIMIT
Минимальные машинные координаты для перемещения (мм).
MAX_LIMIT
Максимальные координаты станка для перемещения (мм).
HOME_OFFSET
Смещение рабочего поля станка относительно датчика домашнего положения для данной оси.
HOME_SEARCH_VEL
Скорость возврата в домашнее положение по датчикам (ммсек).
Примечание: Для того, чтобы изменить направление поиска домашнего положения, необходимо поменять знак.
Пример: HOME_SEARCH_VEL = -150.00000
Примечание: При указании параметра HOME_SEARCH_VEL = 0.0, ось не будет возвращаться в домашнее положение (если в конструкции станка, не предусмотрен датчик домашнего положения).
HOME_LATCH_VEL
Скорость уточнения (точной калибровки) датчиков домашнего положения (ммсек).
HOME_IGNORE_LIMITS
HOME_SEQUENCE
Справочник параметров *.hal файла
Для работы системы необходим правильно настроенный *.hal файл. Пройдемся по реальному конфигурационному файлу и изучим требуемые параметры.
loadrt [KINS]KINEMATICS loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS loadrt hal_parport cfg="0xe000 out" setp parport.0.reset-time 5000 loadrt stepgen step_type=0,0,0 loadrt pwmgen output_type=1
В блоке выше нас интересует строка loadrt hal_parport cfg=»0xe000 out», в ней указан адрес LPT порта в системе, для того, чтобы узнать какой адрес требуется сюда вписать обратимся к разделу «Настройка адреса вводавывода LPT-PCI».
addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf pwmgen.make-pulses base-thread addf parport.0.write base-thread addf parport.0.reset base-thread addf stepgen.capture-position servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf stepgen.update-freq servo-thread addf pwmgen.update servo-thread net spindle-cmd-rpm => pwmgen.0.value net spindle-on <= spindle.0.on => pwmgen.0.enable net spindle-pwm <= pwmgen.0.pwm setp pwmgen.0.pwm-freq 988.0 setp pwmgen.0.scale 24000 setp pwmgen.0.offset 0.02 setp pwmgen.0.dither-pwm true net spindle-cmd-rpm <= spindle.0.speed-out net spindle-cmd-rpm-abs <= spindle.0.speed-out-abs net spindle-cmd-rps <= spindle.0.speed-out-rps net spindle-cmd-rps-abs <= spindle.0.speed-out-rps-abs net spindle-at-speed => spindle.0.at-speed net spindle-cw <= spindle.0.forward net spindle-ccw <= spindle.0.reverse
В данном блоке обратим внимание на строки setp pwmgen.0.pwm-freq 988.0, setp pwmgen.0.scale 24000, setp pwmgen.0.offset 0.02.
Изменение этих параметров позволяет нам настроить соответствие реального значения оборотов шпинделя и значения оборотов в процентах, которое задается в CRAFTEX пользователем.
В строке setp pwmgen.0.scale 24000 задается максимальное количество оборотов шпинделя за 1 минуту.
В строке setp pwmgen.0.pwm-freq 988.0 задается частота генерации импульсов, которые отправляются в частотный преобразователь.
В строке pwmgen.0.offset 0.02 задается смещение рабочего цикла. Увеличение данного значения дает увеличение оборотов шпинделя при одном и том же значении % в CRAFTEX. Уменьшение — соответственно наоборот дает уменьшение оборотов.
net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 net xdir => parport.0.pin-03-out setp parport.0.pin-03-out-invert 1
net ystep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net ydir => parport.0.pin-05-out setp parport.0.pin-05-out-reset 1
net zstep => parport.0.pin-06-out setp parport.0.pin-06-out-reset 1 net zdir => parport.0.pin-07-out setp parport.0.pin-07-out-reset 1
В блоках выше настраиваются параметры осей X,Y,Z. Разберем на примере первого блока (ось X).
net xstep => parport.0.pin-02-out — В данной строке мы задаем номер пина LPT, к которому подключен сигнал STEP от драйвера. Тоесть 02 — номер пина LPT.
setp parport.0.pin-02-out-reset 1 — Задает режим работы пина (он может быть прямым или инвертированным). Для сигнала STEP инверсия не требуется, поэтому в этой строке ничего кроме номера пина LPT менять не надо.
net xdir => parport.0.pin-03-out — В данной строке мы задаем номер пина LPT, к которому подключен сигнал DIR от драйвера. Тоесть 03 — номер пина LPT.
setp parport.0.pin-03-out-reset 1 — Задает режим работы пина (он может быть прямым или инвертированным). Для сигнала DIR может потребоваться инверсия — это изменит направление движения двигателя. Для инверсии потребуется заменить reset на invert. Что касается номера пина LPT, тут всё остается как и в пояснении выше (если меняем номер пина сигнала DIR, то тут тоже потребуется поменять).
Остальные блоки (для других осей) настраиваются полностью аналогично. Переходим далее.
net spindle-cw => parport.0.pin-16-out setp parport.0.pin-16-out-invert 1
В первой строке задается пин LPT для запуска шпинделя в прямом напрвлении.
В второй строке задается инверсия для этого сигнала.
Если требуется запускать шпиндель в обратном направлении используем spindle-ccw
net spindle-pwm => parport.0.pin-14-out setp parport.0.pin-14-out-invert 1
В первой строке этого блока задается пин LPT для ШИМ управления шпинделя.
Во второй строке задается режим работы ШИМ/ЧИМ. Для наших задач этот пин должен быть инвертирован.
net home-x <= parport.0.pin-10-in net home-y <= parport.0.pin-11-in net home-z <= parport.0.pin-13-in net estop-ext <= parport.0.pin-15-in net probe-in => motion.probe-input net probe-in <= parport.0.pin-12-in-not
В данном блоке настраиваются входные пины LPT для датчиков по осям, пин кнопки аварийной остановки и пин датчика высоты инструмента. Стоит заметить, что инверсия входных пинов производится с помощью кострукции -not (Примером является последняя строка в блоке)
setp stepgen.0.position-scale [JOINT_0]SCALE setp stepgen.0.steplen 1 setp stepgen.0.stepspace 0 setp stepgen.0.dirhold 10000 setp stepgen.0.dirsetup 10000 setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb net xstep <= stepgen.0.step net xdir <= stepgen.0.dir net xenable joint.0.amp-enable-out => stepgen.0.enable net home-x => joint.0.home-sw-in net min-home-x => joint.0.neg-lim-sw-in
setp stepgen.1.position-scale [JOINT_1]SCALE setp stepgen.1.steplen 1 setp stepgen.1.stepspace 0 setp stepgen.1.dirhold 10000 setp stepgen.1.dirsetup 10000 setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb net ystep <= stepgen.1.step net ydir <= stepgen.1.dir net yenable joint.1.amp-enable-out => stepgen.1.enable net home-y => joint.1.home-sw-in net min-home-y => joint.1.neg-lim-sw-in
setp stepgen.2.position-scale [JOINT_2]SCALE setp stepgen.2.steplen 1 setp stepgen.2.stepspace 0 setp stepgen.2.dirhold 10000 setp stepgen.2.dirsetup 10000 setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL net zpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd net zpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb net zstep <= stepgen.2.step net zdir <= stepgen.2.dir net zenable joint.2.amp-enable-out => stepgen.2.enable net home-z => joint.2.home-sw-in net min-home-z => joint.2.neg-lim-sw-in
Как мы можем видеть, в блоках выше настраиваются параметры шаговых двигателей по осям. Нас интересуют только идентичные для блоков выше параметры steplen,stepspace, dirhold, dirsetup. Они задаются в соответствии с используемыми драйверами, по-умолчанию заданы эти параметры.
net estop-out <= iocontrol.0.user-enable-out net estop-ext => iocontrol.0.emc-enable-in
В данном блоке настраивается блокировка работы кнопкой аварийной остановки, тоесть если кнопка нажата, то мы не можем управлять станком. Если нам требуется временно отключить эту кнопку (для тестирования), то для этого потребуется заменить вторую строку на net estop-out => iocontrol.0.emc-enable-in.
loadusr -W hal_manualtoolchange net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Блок выше отвечает за использование автоматической или ручной смены инструмента, по умолчанию используется ручная, поэтому изменения не потребуются.
Работа с утилитами HAL
HALSHOW
Данная утилита позволяет работать со всеми переменными, пинами, сигналами системы.
Для наших задач удобно просматривать состояния пинов.
Для запуска требуется перейти в раздел MENU в CRAFTEX и кликнуть кнопку HALSHOW на нижней панели.
Далее мы должны увидеть окно HALSHOW.
В левой колонке мы можем найти интересующий нас пин. Откроем ветку дерева Pins->parport->0.
Для просмотра состояний пинов щелкнем по вкладке «Следить» и выберем из нашей ветки нужные пины для просмотра двойным кликом по ним.
Теперь, когда мы видим состояния нужных нам пинов, можно проверить работу утилиты физически замыкая датчики.
Приложения
Ссылки на дополнительную документацию
Вы можете найти полное описание системы EMC2 перейдя по ссылке http://linuxcnc.org/docs/html/
Список компонентов HAL http://linuxcnc.org/docs/2.7/html/hal/components.html
Описание realtime компонентов HAL http://linuxcnc.org/docs/html/hal/rtcomps.html
Конфигурационные файлы LinuxCNC для оборудования компании CNC-Technology
Данные конфигурационные файлы созданы для работы с оборудованием CNC-Technology под управлением платы опто-развязки LPT-DPTR 1.03.
Модель станка | Конфигурационные файлы |
Cutter CH | Download |
Cutter GQ | Download |
Cutter GR | Download |
Cutter GT | Download |
Cutter GTL | Download |
Cutter H | Download |
Cutter HD | Download |
Cutter HM | Download |
Cutter KTM | Download |
Cutter ST | Download |
Cutter STL | Download |
Cutter VSK | Download |
Возможные ошибки и методы их устранения
Ошибка | Возможная причина | Метод устранения |
Joint * following error | Компьютер не отвечает техническим требованиям; Установленная скорость перемещений слишком велика для допустимого параметра BASE_PERIOD в *.hal файле;
|
Провести LATENCY-TEST и установить параметр BASE_PERIOD на 10% выше значение MaxJitter (обратите внимание на метод проведения LATENCY-TEST). |
Показатели Latency-Test на различных ПК
Max Interval (1.0 ms) | Max Jitter (1.0 ms) | Max Interval (25 ns) | Max Jitter (25 ns) | Материнская плата | Центральный процессор | Объем RAM | Видеокарта | HDD |
1032498 | 36782 | 54009 | 29009 | Asus A68HM-K | AMD A6-7400K | 4Gb | AMD A6-7400K Radeon R5 | HDD Western Digital WD800JD-22MSA1 |
Главная и самая интересная часть linuxcnc — Hardware Abstraction Layer. Это такая специальная прослойка которая позволяет обычному пользователю получать доступ к оборудованию(ядру) Linux. Раньше был ещё один HAL , который потом заменил проект udev , так вот это разные вещи, HAL Linuxcnc нужен только для linuxcnc.
Итак каждый компонент в HAL представлен черным ящиком с некоторым количеством ножек, каждая ножка обладает такими свойствами, как вход/выход а также тип передаваемого по ней сигнала. Ещё есть псевдо ножки, это константы, параметров компонента.
Все это похоже на блоксхемы и в итоге можно представить как вот такую вот схему(чем-то напоминает LabView, но увы удобного редактора нет).
Пример конвертера GEDA2HAL
Ещё стоит заметить что в HAL всегда работают два типа компонентов ,работают они в разных потоках loadrt загружает компоненты работающие в real time потоке, loadusr загружает компоненты работающие не real time т.е. с периодом >=200 мс … это например интерфейс или джойстик подключенный по USB.
Также с помощью специального синтаксиса макросов и языка С, можно создавать свои компоненты, с помощью утилиты comp.
Также можно вручную вводить команды с помощью halcmd , с поддержкой автодополнения, ведь файлы с расширением .hal всего лишь сценарии написанные на этом языке.
#1
OFFLINE
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 29 Январь 2014 — 08:10
-
1
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#2
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 29 Январь 2014 — 08:10
Введение
Лицензия
У Вас есть право на распространение и/или изменение этого документа в рамках GNU Free Documentation Licence версия 1.1
или любой другой более поздней версии опубликованной Free Software Foundation без неизменяемых разделов,
без передней обложки и одной фразой на задней обложке
«Это руководство по LinuxCNC продукт нескольких авторов пишущих для сайта mir-cnc.ru.
Если вы найдете его полезным в своей работе, мы приглашаем Вас внести свой вклад в его доработку и расширение.»
Ознакомится с лицензией можно на сайте GNU на странице «GNU Free Documentation License (GFDL)».
Если вы не найдете там лицензию, вы можете заказать копию в Free Software Foundation, Inc. по адресу:
59 Temple Place, Suite 330 Boston, MA, 02111-1307.
При написании мануальника я использовал сведения взятые с сайта cnc-club.ru,
а также получал помощь от форумчан с этого сайта,за что выражаю им свою не искреннею благодарность :).
( Назад к оглавлению )
Сообщение отредактировал torvn77: 26 Апрель 2014 — 19:19
-
1
- Наверх
#3
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 29 Январь 2014 — 08:10
Общие сведения о станке
Компьютер с которого осуществляется управление станком
)Двуядерный процессор AMD частотой 3 Ггц.
)Память DDR2 800 Мгц,4 ГБ.
Так много потомучто более мелких модулей у меня нету.а покупать специально жаба душит.
а так для работы должно хватить 500 Мб + файл подкачки на диске.
Плата согласовния компьютера и станка PLC4x-G2 производства Пурелогик имеет:
)Один ШИМ (или всётаки ДИМ?) декодер с оптической отвязкой от платы
)Два реле включаемых пинами порта LPT
)Одно реле включаемое с пина LPT или детектором сигнала (Charge Pump,PWM шпинделя) по выбору.
К сожалению,что в первой,что во второй проданной мне плате клеммы
для подключения силовой нагрузки не образуют электрического контакта с платой.
Поэтому управляемую нагрузку мне пришлось припаивать к плате непосредственно.
)Плата активируется как постоянным сигналом ENABLED,так и модулированным частотой,называемый ChargePump.
Выбор между сигналами осуществляется с помощью микропереключателя.
БУ станка состоит из блоков питания,аналоговых драйверов Leadshine и инвертора HOLIP-A,
который управляется одним реле и аналоговым сигналом от ШИМ декодера.
Размер по Х 700 мм,по У 800 мм,по Z 100 мм.
Датчик home-limit осей Х и У находится в начале координат,т.е. с права для оси У,и спереди для оси Х.
или Х=У=(-1)
У оси Z датчик находится в верхнем положении,в соответсвии с промышленным стандартом его координата равна +1,
а сама ось направлена вниз и принимает отрицательные значения.
( Назад к оглавлению )
Сообщение отредактировал torvn77: 26 Апрель 2014 — 19:26
-
1
- Наверх
#4
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 29 Январь 2014 — 08:10
Минимальные и достаточные требования к компьютеру
)Наличие в составе компьютера внешнего или внутреннего (т.е. на материнской плате) контролёра LPT.
Настройку LinuxCNC для работы с аппаратными контролёрами этот мастер не поддерживает и для этого
надо использовать мастер Pncconf.
)x86 совместимый процессор уровня Pentium II/III с частотой 400 МГц и выше.
Для минимального запуска оболочки пользователя установленной на диск Ubuntu надо
128~256 Мб памяти ОЗУ и файл или раздел подкачки (далее swap) размером ~400 МБ.
для комфортной работы в системе от 512 МБ.
После 1 Гб swap можно отключить совсем.
)какой бы компьютер ни был,а из-за того,что большое количество дисковых операций может вызвать срыв реалтайма
диск надо пусть и не большой,но быстрый,по возможности SSD.
Объём менее кретичен,для установки системы хватает 16 GB.
( Назад к оглавлению )
Сообщение отредактировал torvn77: 08 Февраль 2014 — 19:12
-
1
- Наверх
#5
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 29 Январь 2014 — 23:35
Начало работы мастера
Меню запуска программ во втором Gnom’e находится в верхнем левом углу экрана.
Откройте его хлопнув левой кнопкой мышки по находящемуся с лева от слова Application составному колечку.
Потом проводя мышкой над соответсвующими словами войдите в показанное на картинке субменю и
запустите мастер Stepconf опять таки хлопнув по нему левой кнопкой.
(В общем в смысле мышекликанья тут всё также,как и в винде)
В первом окошке никаких настроек не делается,просто даются объяснения чегото там на англиском.
Хлопаем по кнопке Forward (т.е. Вперёд) и переходим к следующему окну,
в котором предлагают решить будем мы создавать конфиг заново,
или воспользуемся информацией о старом.
Если же вы используете устаревщии монитор и кнопка Forward оказалась за пределами экрана,
то нажав и удерживая клавишу Alt возмите левой кнопкой мыши окошко и переместите его так,
чтобы эта кнопка стала вам видна.
Сначала посмотрим в нижнею часть диалогового окна и видим там две галочки,
При установке одного на рабочем столе создаётся ярлык для папки с файлами создаваемой мастером кофигурации,
при установке другого создаётся *.desktop файл Gnom’a.
В общем если создать несколько конфигурации с разными именами,
то кликая по этим файлам можно выбирать,то с какими конфигами LinuxCNC будет запущен.
Также если запустить текстовый редактор и открыть им этот файл,то в соответсвующей строке можно увидеть
команду запуска с путём к главному конфигурационному файлу в качестве параметра.
При желании эту строку можно отредактировать,изменить путь к конфигам или добавить дополнительные опции запуска.
В верхней части окна находится переключатель выбора между созданием (Create) и редактированием (Modifi) уже созданного конфига.
Вот собствено можно увидеть эту часть окошка с переключателем в положении выбора редактирования уже сделанных конфигов.
Если вы вы выбираете создание конфига,то ни каких дополнительных вопросов не задаётся и вы
переходите к следующему окну мастера.
Если же вы выбираете изменение конфигурации,то выводится диалоговое окно выбора файла *.stepconf с сохранёнными настройками с которыми был сделан предыдущий конфиг.
Сам по себе этот файл является документом в формате xml,
используется только мастером Stepconf и никак в работе LinuxCNC собственно не участвует.
Хранить и открывать мастером его можно в любом месте,в любом случае мастер будет
создавать папку с конфигурационными файлами и новый файл *.stepconf
заново в стандартной папке для хранения конфигов.
( ~/linuxcnc/configs ,где ~ стандартное обозначение пути к домашней директории пользователя )
( Назад к оглавлению )
Сообщение отредактировал torvn77: 31 Январь 2014 — 03:38
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#6
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 30 Январь 2014 — 01:31
Параметры станка, контроллера и быстродействия
Machine Name название создаваемого конфига.
Для него можно использовать заглавные и строчные буквы,цифры и знаки «-» и «_».
LinuxCNC не поддерживает для разных задач разные профили,вместо этого для каждого конфига создаётся с этим именем отдельная папка,
в которой конфиг и хранится вместе с сопутсвующими ему файлами.
Выбор конкретного конфига осуществляется запуском LinuxCNC через соответсвующии ярлык
или если вы забыли в » Начало работы мастера » его создать,
непосредственным вызовом из консоли,способом указывания в параметрах вызова пути к главному *.ini файлу.
Например для пользователя с именем «cnc» и названием конфига «Purelogic_PLC4x-G2»
вызов LinuxCNC c соответствующим профилем будет выглядеть так:
linuxcnc /home/cnc/linuxcnc/configs/Purelogic_PLC4x-G2/Purelogic_PLC4x-G2.ini
Configuration directory не редактируемый параметр,который показывает путь к папке с создаваемыми конфигами.
Axis configuration выпадающии список с разными типами конструкции конфигурируемого станка
- XYZ — Трёх осевой фрезер
- XYZA — Трёх осевой фрезер с токарной осью
- XZ — Токарный станок
Например на этом рисунке выбрана конфигурация для трёх осевого фрезера с поворотной осью.
Настройки для фрезерно-токарных типа XZA в этом списке нет.
Такой фрезер можно попробовать сконфигурировать как XYZA и либо создать соответсвующии постпроцессор,
либо установить Home Search velocity из окна _Axis Configuration для неиспользуемой оси в ноль,
что отключит поиск дома на этой оси и позволит станку нормально инициализироватся при запуске.
Machine units единицы измерения,с которыми будет работать LinuxCNC
- Inches (G20)
- Millimeters(G21)
Driver type это выподающии список,который содержит предустановленные параметры формы сигналов Step и Dir для разных драйверов.
Если же вашего драйвера в списке нету,то вы можите посмотреть эти значения в инструкции к драйверу.
Если же инструкции к драйверу тоже нет,то подбирайте их самостоятельно,
опираясь на приведённое ниже описание смысла этих сигналов.
в любом случае,учитывайте,что в зависимости от соотношения этих сигналов
звук при перемещении станка может быть различным.
Подбирайте не только те значения,при которых станок ездит,но и «приятно» звучит.
Так же рекомендуется эти значения делать минимум в двое больше паспортных или полученных экспериментальным путём.
При не выполнении этого требования часть шагов может быть пропущена из-за того,
что они приходят в контролёр когда он шаги не воспринимает или ослабления или искажения сигнала в процессе передачи.
При этом изменение координаты может быть целенаправленным.
(По мере работы станка ось Z постепенно смещается вверх)
- Step time Длительность сигнала step
- Step space Минимальный промежуток времени между двумя сигналами step
- Direction hold Время после изменения сигнала Dir после которого можно начинать посылать импульсы Step.
- Direction setup Время после последнего импульса Step после которого можно менять сигнал Dir
First Parport Base Address Первый адрес из диапазона выделенного LPT порту.
Адрес указанный в этой опции по умолчанию является стандартным адресом LPT порта и поэтому без необходимости менять его не следует.
Но порой отдельные контролёры,особенно сделанные в виде плат расширения могут брать себе
и другие значения адреса,а то и вобще не работать ни с LinuxCNC,ни с MACH’ем.
В этом случае более подробные инструкции ищите в главе
«Настройка LinuxCNC для работы с несколькими LPT портами»
Onscreen prompt for tool change — уведомление о смене инструмента.
Если эта опция включена, то EMC2 будет останавливаться и выдавать сообщение о смене инструмента,
каждый раз, когда в управляющей программе будет встречаться код M6.
Если же вы планируете использовать автоматическую смену инструмента,то галку следовало бы снять.
Но на практике лучше этого не делать,так как автоматическая смена инструмента потребует ручной правки хала,
и вам будет проще отредактировать такую «заготовку»,заменив компонент hal_manualtoolchange на свой,
чем прописывать это в хале с нуля.
Base Period Maximum Jitter Максимальный разброс базового периода реалтайма.
Для настройки этого параметра существует отработанная методика с использованием утилиты latency-test,
но на мой взгляд она приводит к неоправданно большим или маленьким значениям этой величины.
Её можно использовать только для предварительной оценки этого параметра.
Для этого запускаем её в мастере кнопкой «Test Base Period Jitter«,запускаем редактор Gedit,
открываем им довольно крупный фаил,после чего записываем в параметр значение «Max Jitter» из строки «Base thread«.
Также эту утилиту можно запустить из соответсвующего раздела меню Application Gnom’a или
терминала набрав в нём latency-test .
Правильная настроика этого параметра будет после полного завершения всех других настроек станка.
Моя методика настройки такая:
)Запустить настроенный LinuxCNC,
)Снять блокировку станка клавишей F1 и включить его клавишей F2.
)После чего начать быстро по очереди нажимать клавиши со стрелками вниз-вверх (ось У) или право-лево(ось Х).
)Если при этом произощёл сбой реалтайма,то запускаем мастер и увеличиваем
значение разброса базового периода,если нет,то уменьшаем.
)После того как будет найдено минимальное значение этой переменной,запускаем часто меняющею направление УП,запускаем текстовый редактор Gedit и открываем им текстовый фаил объёмом с среднее значение довольно крупных УП.
)После чего увеличиваем разброс базового периода до значения при котором LinuxCNC будет работать стабильно.
Но это не будет не совсем правильное значение разброса так как Gedit и сам файл откешируются при первом запуске и открытии в ОЗУ компьютера.
Что может привести к сбоям реалтайма если происходит длительное обращение к жёсткому диску,
например для чтения больших файлов.
Поэтому перегружаемся и выполняем тест заного с так называемым холодным стартом программы.
Чтобы не мучится с запуском и проходом мастера для смены одной переменной можно
редактировать эту переменную прямо в файле конфигурации.
Файл находится в папке указанной в параметре Configuration directory из » Параметры станка, контроллера и быстродействия»
имеет расширение *.ini и называется также как и конфиг в переменной Machine Name.
Сидит параметр в секции [EMCMOT] и имя его BASE_PERIOD =
Так же не забываем после изменения этого параметра пройти по окнам мастера дальше на страницу настройки осей и
поменять максимальные скорости движения по осям.
( Назад к оглавлению )
Сообщение отредактировал torvn77: 28 Апрель 2014 — 15:48
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#7
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 30 Январь 2014 — 14:52
Добавление пользовательских расширений интерфейса
- Include Halui — Добавить пользовательскую панель Halui.
- Include PyVCP GUI panel — Добавить панель pyVCP.
См. статью по настройке и применению pyVCP в EMC2 - Include ClassicLadder PLC — Добавить программируемый контроллер на лестничной логике (Programmable Ladder Logic Controller).
( Назад к оглавлению )
Сообщение отредактировал torvn77: 01 Февраль 2014 — 16:48
-
1
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#8
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 31 Январь 2014 — 03:22
Распиновка LPT порта
Пины с 18 по 25 нулевые.
Выходные пины (Out) 1-9,14,16,17
- Unused Не использовать пин.
- Axis Step сигнал Step для драйвера шагового мотора оси Axis,управляется F и командами движения такими как ,G0,G1 и разным модальными кодами
- Axis Direction сигнал Dir для драйвера шагового мотора оси Axis,управляется F и командами движения ,G0,G1 и разными модальными кодами
- Spindle ON включение шпинделя,своего М-кода нет,устанавливается при подаче
команды выбора направленя вращения M3 или M4 - Spindle CW вращать спиндель по часовой стрелке M3
- Spindle CCW вращать спиндель против часовой стрелке M4
- Spindle PWM выход ШИМ/ДИМ сигнала управления частотой вращения шпинделя,управляется S
- Spindle Brake остановка шпинделя M5
- Coolant Mist включение стружкоотсоса M7,выключается через общею для M7 и M8 команду отключения охлаждения M9.
- Coolant Flood включение подачи СОЖ M8,выключается через общею для M7 и M8 команду отключения охлаждения M9.
- ESTOP Out Подключение логического элемента проводное НЕ-ИЛИ,в нормально состоянии отомкнут от нуля.
При аварии замыкается аварийным блоком на ноль и вызывает общею остановку всех технологических процессов.
Практически повторяет сигнал Enabled,по этому его можно назначать на соответсвующии пин платы. - Charge Pump это сигнал Enabled промодулированный не известной мне частотой (1~1.5 Кгц?).
сделан для того,чтобы хаотическое изменение состояния выходных пинов LPT порта не вызывало измения
состояния управляемого станка,так как оно может в дальнейшем привести станок к порче.
Как правило для включения для замены сигнала Enabled на этот сигнал на комутационной плате
надо установить соответсвующею премычку. - Digital out 0~3 Сигнал,состоянием которого можно управлять с помощью специальных команд M62~M65.
- Amplifier Enable ???
Входные пины (In) 10-13,15
- Unused Не использовать пин.
- ESTOP In Считывание состояния сигнала ESTOP,в норме он должен быть высоким,
если обращается в ноль,то происходит аварииная остановка станка. - Probe In Подключение датчика длинны инструмента.(Gcod’ы G38.2 ~ G38.5)
- Digital In 0~3 Сигналы,состояние которых УП может считать с помощью команды M66
- Home Axis Подключение датчика дома,етот датчик определяет на оси место,
относительно которого будет выставлен её нуль.
Положение нуля задаётся координатой датчика в окошке «Настройка линейных осей»,
праметр Home Switch Location . - Minimum Limit Axis Подключение датчика достижения нижней границы оси Axis,
При этом положение датчика home (Home Switch Location) и рабочей область оси (Table Travel) настраиваются так,
чтобы датчик Minimum Limit находился вне рабочего пространства.
Эти параметры находятся в окошке «Настройка линейных осей».
И так как обычно координаты станка находятся в верхнем левом квадранте то соответсвующее поле
будет в левой части параметра Table Travel указываемого в настройках соответсвующей оси. - Maximum Limit Axis Подключение датчика достижения верхней границы оси Axis,
При этом положение датчика home (Home Switch Location) и рабочей область оси (Table Travel) настраиваются так,
чтобы датчик Maximum Limit находился вне рабочего пространства.
Эти параметры находятся в окошке «Настройка линейных осей».
И так как обычно координаты станка находятся в верхнем левом квадранте то соответсвующее поле
будет в правой части параметра Table Travel указываемого в настройках соответсвующей оси. - Both Limit Axis Совместное подключение датчиков достижения верхней и нижней границ оси Axis.
- Maximum Limit + Home Axis Совместное подключение датчиков достижения верхней границы и дома оси Axis.
- Minimum Limit + Home Axis Совместное подключение датчиков достижения нижней границы и дома оси Axis.
- Both Limit +Home Axis Совместное подключение датчиков достижения верхней,нижней границы и дома оси Axis.
- All Limits совместное подключение от всех осей всех датчиков границ.
- All Home совместное подключение от всех осей всех датчиков дома.
- All Limits + Home совместное подключение от всех осей всех датчиков дома и границ.
- Spindle Index ???
- Spindle Phase A ???
- Spindle Phase B ???
( Назад к оглавлению )
Сообщение отредактировал torvn77: 07 Февраль 2014 — 04:08
-
1
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#9
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 31 Январь 2014 — 03:57
Настройка линейных осей
Далее настраиваем все оси станка:
Motor Steps Per Revolution — количество шагов двигателя на один оборот.
обычно 200,но может быть и другое значение.
Driver Microstepping — настройка микрошага контроллера.
Для микрошага 1:8 устанавливайте «8».
Подробнее об определении микрошага контроллёра можно прочитать здесь:
Подключение и настройка драйвера шагового двигателя
Pulley teeth (Motor:Leadscrew) — передаточное число ременной передачи или редуктора
в формате (обороты на входе) : (обороты на выходе).
Если у вас ни то,ни другое не установлено,то ставте отношение 1:1.
Leadscrew Pitch — шаг ходового винта.
Если вы знаете название винта,то в нём должно быть что-то типа 16х5.
Где 16 диаметр винта/ШВП,а 5 это растояние на которое сместится гайка при одном обороте.
Можно поменять направление движения вдоль оси установив отрицательное значение шага винта.
Maximum Velocity — Максимальная скорость перемещения.
Maximum Acceleration — Максимальное ускорение по данной оси.
Home Location — «Домашняя» позиция оси,это значение примет координата после выполнения поиска машинного нуля.
Значение этого параметра может принимать любое значение в пределах указанного в Table Travel рабочего участка оси.
Я например предпочитаю устанавливать его не в ноль,а в такое положение в котором мне будет удобно крепить заготовку.
Table Travel — Рабочий участок оси от min до max.
При этом концевые датчики (limit) должны быть вне этого диапазона,в противном случае
при занятии крайних положении будет происходить аварийная остановка.
А вот датчики home могут быть как в этом диапазоне,так и вне его (но конечно в пределах лимитов)
Home Switch Location — Положение датчика home,определяющего нуль машинных координат.
(В УП как правило указываются относительные координаты.)
При использовании концевика (limit) в качестве качестве этого датчика
ему следует назначить координаты вне рабочего участка (Table Travel),
иначе при наезде на датчик,который во время работы будет в качестве концевого,
будет аварийная остановка.
При этом типовой настроикой этого параметра будет значение,
меньшее или большее на один милиметр концов рабочего промежутка(Table Travel).
Home Search Velocity — скорость поиска начала оси.
Этот параметр имеет положительное значение,если датчик home находится в конце оси,
и отрицательное,если в начале.
Если концевой датчик расположен рядом с концом оси это значение должно быть выбрано с учетом того,
что станок должен будет успеть остановиться до того как он ударится о конец оси.
Если концевик замыкается только когда ответная часть рядом с ним,
то скорость должна быть выбрана таким образом, чтобы станок успел остановиться до того,как концевик разомкнётся.
Home Latch Direction выподающии список из двух способов определения домашних координат:
- «Same» При срабатывании датчика home продолжать ехать до тех пор,пока этот датчик не разомкнётся.
- «Opposite» При срабатывании датчика home остановится и ехать обратно до момента рамыкания датчика.
Способ «Same» следует выбирать если датчик находится в пределах рабочего промежутка,
а способ «Opposite» если он находится с краю или за его пределами.
Ниже находятся вычесленные на основе введённых данных параметры оси:
- Time to accelerate to max speed — время ускорения до максимальной скорости (время остановки)
- Distance to accelerate to max speed — дистанция ускорения до максимальной скорости (дистанция остановки)
- Pulse rate at max speed — частота сигналов на максимальной скорости
- Axis SCALE — количество шагов в одной единице измерения шагов/мм (шагов/дюйм)
Следует учесть.что скорость движения по оси ограничивается не только параметром «Maximum Velocity«,
но и параметром «Base Period Maximum Jitter» из «Параметры станка, контроллера и быстродействия».
После введения всех параметров ось можно протестировать. Для этого нажимаем Test this axis.
Так же это окошко полезно если вы хотите выставить максимальную скорость при заданном параметре «Base Period Maximum Jitter«.
Ось У настраивается аналогично:
У оси Z датчик home-limit находится на верху,по этому скорость поиска дома положительная.
А сама его координата «Home Switch Location» равна верхнему значению «Table Travel» + 1 =101
Хотя как стало мне известно позднее,промышленным стандартом является расположение нуля по Z на верху оси,
а сама ось изменяется вниз к отрицательному значению.
Так что если всё настраивать по стандарту,то рабочий промежуток (Table Travel) изменяется между отрицательным значением и нулём.
а скорость поиска дома также как и на других осях имеет отрицательное значение.
В общем в постпроцессорах и различных CAD/CAM системах стандартное значение дома по Z равно нулю,
и соответственно надо настраивать LinuxCNC так,чтобы при получении команды в машинных координатах уйти в ноль,
она бы поднимала шпиндель,а не опускала его ломая инструмент и находящиеся в низу части станка.
( Назад к оглавлению )
Сообщение отредактировал torvn77: 26 Апрель 2014 — 00:12
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#10
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 31 Январь 2014 — 04:39
Конфигурация поворотной оси
( Назад к оглавлению )
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#11
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 31 Январь 2014 — 12:58
Настройка инвертора ( шпинделя )
Если шпиндель регулируется при помощи ШИМ:
Устанавливаем Carrier frequency (Несущая частота) согласно инструкции к Вашему контроллеру шпинделя.
Устанавливаем — значения скоростей в оборотах в минуту «Speed 1» и «Speed 2» при заданных
значениях ШИМ «PWM 1» и «PWM 2«.
Этими параметрами определяется линейная зависимость скорости шпинделя от значения PWM.
Значения «Speed » изменяются от нуля до максимальной частоты оборотов шпинделя.
Значение «PWM» изменяется от нуля до единицы.
Эту информацию можно найти в инструкции к Вашему контроллеру, либо попробовать определить самостоятельно.
Если написанное вам не понятно,то можете дополнительно прочитать об этом здесь Линк
( Назад к оглавлению )
Сообщение отредактировал torvn77: 02 Февраль 2014 — 05:23
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#12
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 31 Январь 2014 — 13:41
Завершение работы мастера и результат
( Назад к оглавлению )
Сообщение отредактировал torvn77: 31 Январь 2014 — 23:16
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#13
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 31 Январь 2014 — 23:22
Настройка LinuxCNC для работы с несколькими LPT портами
LPT1 — 0x378
LPT2 — 0x278
LPT3 — 0x3bc
(Назад к «Параметры станка, контроллера и быстродействия»)
(Назад к «Оглавлению»)
Сообщение отредактировал torvn77: 14 Февраль 2014 — 20:10
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#14
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 01 Февраль 2014 — 15:39
Заметки и общие выводы
Назад к оглавлению
Сообщение отредактировал torvn77: 01 Февраль 2014 — 16:10
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#15
OFFLINE
Kruzo
Kruzo
-
- Пользователи+
-
- 6 сообщений
Абитуриент
- Из:Lugansk
Отправлено 06 Февраль 2014 — 18:21
Настройка линейных осей
~~~
( Назад к оглавлению )
А как быть если у станка на оси Y два мотора? В Mache они выствлены в паре.
Сообщение отредактировал torvn77: 06 Февраль 2014 — 18:33
Сокращёна избыточно большая цитита
-
0
- Наверх
#16
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 06 Февраль 2014 — 18:38
В мастере это не настроить,для внесения больших изменении нужно сделать ручную правку в конфигурационом файле хала.
Что именно делать я пока не знаю,но можем попробовать разобратся,через час создам тему и продолжим разговор там.
Тему создал, линк Объединение двух осей в одну с помощью кинематики gantry_kins
Сообщение отредактировал torvn77: 07 Февраль 2014 — 05:11
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#17
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 25 Апрель 2014 — 12:56
pik в личке писал:
Контроллер работает с LowActive Dir и step. (т.е. в матче стоят галочки). А в LunixCNC есть галочки инвертировать, там по умолчанию также стоит низкий уровень, т.е. для высокого также ставить галочки ?
Ну дак инвертирование и есть инвертирование,то есть изменение на противоположное.
Так что конечно да.
П.С.Проверил stepconf,галочки инвертирования пинов там по умолчанию сняты,так что активный уровень там по умолчанию высокии,а не низкии.
Сообщение отредактировал torvn77: 26 Апрель 2014 — 00:13
-
1
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#18
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 26 Апрель 2014 — 16:45
pik в личке писал:
Траектории загружаются. На экране справа видна заготовка и её размеры. Только почему то не активна кнопка «Начать исполнение текущего файла ®». Подскажите пожалуйста в чём может быть причина.
)Сначала самой правой кнопкой или клавишей F1 надо снять сигнал блокировки станка
)Затем F2 включить станок
)Затем нажав кнопку Home all инициализировать координаты станка,сами понимаете,если они не совпадут с реальными,
то исполнение УП закончится аварией.
Я в этом тоже по началу путался.
Такое сложное включение происходит от того,чтоLinuXCNC рассчитано в том числе и на управление сложным оборудованием,
а там так же,как и в телевизоре или компьютере,состояние выключено не всегда означает обесточено,
поэтому отключение станка дублируется сигналом аварийной остановки.
Назад к оглавлению
Сообщение отредактировал torvn77: 26 Апрель 2014 — 16:55
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
#19
OFFLINE
novarobotix
novarobotix
- Пол:Мужчина
- Интересы:главное чтобы палочки от мороженного не кончались
- Из:магадан
Отправлено 27 Июль 2014 — 10:33
в каком файле хранятся параметры Step Time Step Spase для настройки шагового мотора?
в ini и hal файлах не нашёл
если шаговые моторы на осях разные тогда как?
-
0
мне не нужна война.мне нужен МИР. желательно весь…
- Наверх
#20
OFFLINE
torvn77
torvn77
- Пол:Мужчина
- Из:Санкт-Петербурга
Отправлено 27 Июль 2014 — 17:27
Запускаем LinuxCNC с сделаным в stepconf конфигом и проводим сеанс работы с консолью(терминалом):
ubuntu@ubuntu:~$ halcmd show param stepgen
Parameters:
Owner Type Dir Value Name
8 u32 RW 0x0000C30F stepgen.0.dirhold
8 u32 RW 0x0000C30F stepgen.0.dirsetup
8 float RO 0 stepgen.0.frequency
8 float RW 60 stepgen.0.maxaccel
8 float RW 0 stepgen.0.maxvel
8 float RW 800 stepgen.0.position-scale
8 s32 RO 0 stepgen.0.rawcounts
8 u32 RW 0x0000C30F stepgen.0.steplen
8 u32 RW 0x0000C30F stepgen.0.stepspace
ubuntu@ubuntu:~$ halcmd show param parport
Parameters:
Owner Type Dir Value Name
9 u32 RW 0x00000000 parport.0.debug1
9 u32 RW 0x00000000 parport.0.debug2
9 bit RW FALSE parport.0.pin-01-out-invert
9 bit RW FALSE parport.0.pin-01-out-reset
9 bit RW FALSE parport.0.pin-02-out-invert
9 bit RW FALSE parport.0.pin-02-out-reset
9 bit RW FALSE parport.0.pin-03-out-invert
9 bit RW FALSE parport.0.pin-03-out-reset
9 bit RW FALSE parport.0.pin-04-out-invert
9 bit RW FALSE parport.0.pin-04-out-reset
9 bit RW FALSE parport.0.pin-05-out-invert
9 bit RW FALSE parport.0.pin-05-out-reset
9 bit RW FALSE parport.0.pin-06-out-invert
9 bit RW FALSE parport.0.pin-06-out-reset
9 bit RW FALSE parport.0.pin-07-out-invert
9 bit RW FALSE parport.0.pin-07-out-reset
9 bit RW FALSE parport.0.pin-08-out-invert
9 bit RW FALSE parport.0.pin-08-out-reset
9 bit RW FALSE parport.0.pin-09-out-invert
9 bit RW FALSE parport.0.pin-09-out-reset
9 bit RW FALSE parport.0.pin-14-out-invert
9 bit RW FALSE parport.0.pin-14-out-reset
9 bit RW FALSE parport.0.pin-16-out-invert
9 bit RW FALSE parport.0.pin-16-out-reset
9 bit RW FALSE parport.0.pin-17-out-invert
9 bit RW FALSE parport.0.pin-17-out-reset
9 s32 RO 5901 parport.0.read.time
9 s32 RW 165363 parport.0.read.tmax
9 u32 RW 0x00000000 parport.0.reset-time
9 s32 RO 0 parport.0.reset.time
9 s32 RW 0 parport.0.reset.tmax
9 s32 RO 11998 parport.0.write.time
9 s32 RW 175351 parport.0.write.tmax
9 s32 RO 0 parport.read-all.time
9 s32 RW 0 parport.read-all.tmax
9 s32 RO 0 parport.write-all.time
9 s32 RW 0 parport.write-all.tmax
После чего порывшесь в hal файлах находим:
setp parport.0.reset-time 3140
setp parport.0.pin-02-out-reset 1
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 28800
setp stepgen.0.dirsetup 28800
…..
Сообщение отредактировал torvn77: 27 Июль 2014 — 18:02
-
0
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том…
- Наверх
Содержание
- 1 Введение
- 2 Анализ
- 2.1 Комментарии
- 2.2 Установка начальных значений
- 2.3 Фрезеровка
- 2.4 Окончание
- 3 Запуск
Введение
Демонстрационная программа
Вожусь я со станком своим уже несколько недель. И, настроив почти все, что я хотел настроить, уперся в проблему установки компенсации длинны инструмента. На форум ходил, спрашивал у гугла, но все безрезультатно. Не хочет у меня устанавливаться эта самая длинна.
И пришла мне в голову мысль. Что уж стартовую программу, которая надпись LinuxCNC вырезает, уж точно писали и вылизывали много разных умных людей, которые эту самую LinuxCNC знают вдоль и поперек.
И решил я проанализировать этот код. Что в нем написано. А сюда решил записать, чтобы не забыть и, в случае амнезии, быстро восстановить знания.
Анализ
Забегая вперед скажу, что эта программа написана, естественно, «чисто» (насколько мне позволено судить).
Комментарии
В начале, разработчик рекомендует Touch Off Z axes — т.е. проверить уровень инструмента. В этом-то у меня и кроется основная проблема.
Вторая рекомендация — изменить масштаб, если для станка, на котором производится эта работа проект большой или маленький.
Установка начальных значений
#<depth>=2.0
— глубина погружения инструмента в материал.
#<scale>=1.0
— масштаб.
Меня и то и другое устраивает.
Далее вызываются коды:
G21
— это выбираются единицы измерения миллиметры;
G90
— смена режима на абсолютные координаты для линейной системы координат;
G64
— приоритет скорости, даже если станку потребуется что-либо «скруглить» для достижения результата;
G40
— отмена коррекции на режущий инструмент. Вот это новость! Сначала говорят Touch Off, а потом отменяют что попросили сделать. Я думаю, что я чего-то не понимаю, но статья, определенно идет в категорию Путаница.
Фрезеровка
G00 Z3.0
— опускаемся на высоту Z=3.0. И эти люди просили меня отюстировать инструмент по оси Z. А если материал толще? А если фреза длиннее? А если что?
G17
— выбираем плоскость обработки XY. А почему не раньше? Зачем было сначала ехать? Я бы разместил эту команду выше, в коде инициализации.
M3 S1000
— включаем шпиндель на скорости 10000 оборотов в минуту;
G0 X[1.75781*#<scale>] Y[0.5*#<scale>]
— переезжаем в точку начала вырезания буквы L
G1 F100.0 Z[-#<depth>]
— погружаем инструмент на глубину -2мм (т.е. всего на 5 от текущей позиции по Z)
Мдель построена таким образом, что 0 по оси Z олицетворяет плоскость заготовки. А мои настройки указывают на 0 станка. Таким образом эта программа вырежет надпись LinuxCNC на поверхности станка, заглубившись на 2 мм. Чего допустить нельзя. |
....
— пропустим вырезание всех граней;
G0 Z3.0
— вынимаем инструмент из материала;
G0 X[18.72461*#<scale>]
— едем в точку начала буквы i;
G1 F100.0 Z[-#<depth>]
— опять погружаем инструмент и начинаем вторую букву;
...
Дальше идет много строк кода, по-сути своей похожего. Все операции выполняются либо G01 либо при помощи G02.
Рассматривать повторяющиеся команды с одинаковыми по-сути, но разными по-значению параметрами, не вижу смысла.
G2 X[118.27432*#<scale>] Y[23.8889*#<scale>] I[12.16539*#<scale>] J[3.2454*#<scale>]
А вот G02 стоит рассмотреть.
В переводе на русский язык в кадре сказано: «Пропилить дугу в точку X и Y из текущей с радиусом вокруг точки I, J.
Окончание
M5
— выключаем шпиндель;
M2
— заканчиваем программу.
Запуск
В том состоянии, что на снимке экрана выше, LinuxCNC не начнет работу, а выдаст предупреждение Программа выходит за минимум оси Z.
Вариантов решения этой задачи ровно два:
- Установить отступ по оси Z вручную. Так я делал, кайфа никакого. Да, LinuxCNC выполнит код и «вырежет» надпись, но это не принесет удовлетворения, поскольку Вы не знаете точно, а где же находится этот самый 0 и Ваш инструмент и все Ваши указания будут, пусть и верными, но ручными и умозрительными.
- Скорректировать инструмент автоматически. Это куда более правильный вариант. Но над его решением я пока и работаю.