LinuxCNC Integrators Manual Глава IV - Файл INI
Содержание
- 1 LinuxCNC Integrators Manual Глава IV - Файл INI
- 2 Глава 4 - Файл INI
- 2.1 4.1 Схема INI файла
- 2.2 4.2 Разделы
- 2.3 4.3 Выставление осей (Homing)
- 2.3.1 4.3.1 Обзор
- 2.3.2 4.3.2 Последоватиельность выставления осей (Homing Sequence)
- 2.3.3 4.3.3 Настройка
- 2.3.3.1 4.3.3.1 HOME_SEARCH_VEL (Скорость поиска home)
- 2.3.3.2 4.3.3.2 HOME_LATCH_VEL (Скорость уточнения home)
- 2.3.3.3 4.3.3.3 HOME_FINAL_VEL
- 2.3.3.4 4.3.3.4 HOME_IGNORE_LIMITS
- 2.3.3.5 4.3.3.5 HOME_USE_INDEX
- 2.3.3.6 4.3.3.6 HOME_OFFSET
- 2.3.3.7 4.3.3.7 HOME
- 2.3.3.8 4.3.3.8 HOME_IS_SHARED
- 2.3.3.9 4.3.3.9 HOME_SEQUENCE
- 2.3.4 Рисунок 4.1: Homing Sequences
- 2.4 4.4 Токарные станки (Lathe)
- 3 Оглавление книги LinuxCNC Integrators Manual
LinuxCNC Integrators Manual Глава IV - Файл INI
Глава 4 - Файл INI
4.1 Схема INI файла
Типичный ini файл следует достаточно простой схеме, которая включает:
- комментарии
- разделы
- переменные
Каждый из этих элементов ограничен одной строкой. Каждый символ конца строки или новой строки создает новый элемент.
4.1.1 Комментарии
Строки комментариев начинаются с символа ; или #. Когда программа читающая ini файл видит один из этих знаков в начале строки, остаток строки игнорируется. Комментарии могут быть использованы для описания того, что некоторые элементы ini файла будут делать.
; This is my little mill configuration file. ; I set it up on January 12, 2006
Комментарии могут также быть использованы для выбора между несколькими разными значениями одной переменной.
DISPLAY = axis # DISPLAY = touchy
В этом листинге переменная DYSPLAY будет установлена на axis потому, что остальные установки закомментированы. Если кто-то не аккуратно редактирует лист такой как этот и оставит обе строки не закомментироваными, то первое встреченное значение будет использовано.
Заметьте, что внутри переменной символы "#" и ";" не обозначают комментарий:
# не правильно INCORRECT = value # and a comment # правильно # Correct Comment CORRECT = value
4.1.2 Разделы INI файла
Связанные части ini файла разделены на разделы. Строка раздела выглядит так: [THIS_SECTION].
Название раздела заключено в квадратные скобки. Порядок разделов не важен. Следующие разделы используются EMC:
- [EMC] общая информация (4.2.1)
- [DISPLAY] настройки относящиеся к графическому интерфейсу (4.2.2)
- [FILTER] настройки программ входных фильтров (4.2.3)
- [RS274NGC] настройки использующиеся интерпретатором G-кода (4.2.4)
- [EMCMOT] настройки использующиеся контроллером перемещений в реальном времени (4.2.5)
- [HAL] задает файлы .hal (4.2.7)
- [TASK] настройки используемые контроллером задач (4.2.6)
- [TRAJ] дополнительные настройки используемые контроллером перемещений в реальном времени (4.2.8)
- [AXIS_0] ... [AXIS_n] индивидуальные переменные осей (4.2.9)
- [EMCIO] настройки используемые контроллером ввода/вывода (4.2.10)
- [HALUI] команды MDI используемые HALUI. См. главу HALUI для более подробной информации (10.2.12)
4.1.3 Переменные
Строка переменной состоит из названия переменной, знака равно (=) и значения. Все после первого не пустого символа (не пробел, не табуляция ...) после знака = до конца строки передается ка значение, поэтому вы может вставлять пробелы в строковые символы если вы этого хотите или это вам нужно. Название переменной часто называют keyword (дескриптор).
Последующие разделы детально описывают каждый раздел конфигурационного файла, используя образцы значений для конфигурационных строк.
Некоторые переменные используются ЕМС, и должны всегда использовать названия раздела и названия переменной такие как показано. Другие переменные используются HAL, и для них показаны названия разделов и переменных которые используются в примерах конфигурационных файлов.
4.1.4 Определения
Machine Unit (Единица измерения станка) - Единица измерения для оси определенной установками в разделе [TRAJ]. Единица измерения равна одной единице определенной либо LINEAR_UNITS, либо ANGULAR_UNITS.
4.2 Разделы
4.2.1 Раздел [EMC]
VERSION = $Revision: 1.3 $ Номер версии для файла ini. Значение указанное здесь выглядит странно потому, что оно автоматически обновляется при использовании Системы Контроля Версий. Хорошая идея, менять это число каждый раз, когда вы пересматриваете ваш файл. Если вы хотите редактировать это вручную, просто измените номер и оставьте остальные тэги в покое.
MACHINE = My Controller Это название контроллера, которое печатается вверху большинства графических интерфейсов. Вы можете поставить сюда все что захотите, до тех пор пока значение будет оставаться одной строкой.
DEBUG = 0 Уровень отладки 0 значит, что никаких сообщений не будет выводиться когда EMC запущен из терминала. Флаги отладчика обычно полезны только для разработчиков. См. src/emc/nml_int/emcglb.h для других установок.
4.2.2 Раздел [DISPLAY]
Разные пользовательские интерфейсы используют разные опции, и не каждая опция поддерживается каждым интерфейсом. Два основных интерфейса - Axis и Touchy. Axis - интерфейс для использования с нормальным компьютером и монитором, Touchy для использования с сенсорным экраном (тачскрином). Описания интерфейсов находятся в разделе Интерфейсы Руководства Пользователя.
DISPLAY = axis Название пользовательского интерфейса для использования. Правильные варианты могут включать:
- axis
- touchy
- keystick
- mini
- tkemc
- xemc
POSITION_OFFSET = RELATIVE Отображаемая система координат (RELATIVE or MACHINE Относительная или Машинная), когда запускается пользовательский интерфейс. Система координат RELATIVE отражает действующие G92 и G5x отступы системы координат.
POSITION_FEEDBACK = ACTUAL Отображаемые значения координат (COMMANDED or ACTUAL Заданное или Реальное) после запуска интерфейса. Положение COMMANDED это идеальное положение запрошенное EMC. Положение ACTUAL это позиция из обратной связи от моторов.
MAX_FEED_OVERRIDE = 1.2 Максимальное значение замещения подачи, которое пользователь может выбрать. 1.2 значит 120% от запрограммированной подачи.
MIN_SPINDLE_OVERRIDE = 0.5 Минимальное значение замещения скорости шпинделя, которое пользователь может выбрать. 0.5 значит 50% от запрограммированной скорости шпинделя.(Это ограничение полезно, т.к. опасно запускать программу со слишком маленькой скоростью шпинделя.)
MAX_SPINDLE_OVERRIDE = 1.0 Минимальное значение замещения скорости шпинделя, которое пользователь может выбрать. 1 значит 100% от запрограммированной скорости шпинделя.
PROGRAM_PREFIX = ~/emc2/nc_files Расположение по умолчанию Gcode файлов и определяемых пользователем M-кодов.
INTRO_GRAPHIC = emc2.gif Изображение показываемое в качестве заставки.
INTRO_TIME = 5 Максимальное время показа заставки.
CYCLE_TIME = 0.0500 Время цикла в секундах, которое дисплей будет ожидать между опросами.
Следующие элементы раздела [DISPLAY] используются только если вы выбираете AXIS в качестве вашего пользовательского интерфейса.
DEFAULT_LINEAR_VELOCITY = .25 Скорость линейных перемещений (jog) по умолчанию, в единицах измерения станка в секунду.
MIN_VELOCITY = .01 Приблизительное минимальное значение для jog ползунка.
MAX_LINEAR_VELOCITY = 1.0 Максимальная скорость линейных перемещений (jog), в единицах измерения станка в секунду.
MIN_LINEAR_VELOCITY = .01 Приблизительное минимальное значение для jog ползунка.
DEFAULT_ANGULAR_VELOCITY = .25 Скорость угловых перемещений (jog) по умолчанию, в единицах измерения станка в секунду.
MIN_ANGULAR_VELOCITY = .01 Приблизительное минимальное значение для jog ползунка..
MAX_ANGULAR_VELOCITY = 1.0 Максимальная скорость угловых перемещений (jog), в единицах измерения станка в секунду.
INCREMENTS = 1 mm, .5 in, ... Задает шаги приращений доступные при пошаговом ручном управлении. INCREMENTS могут быть использованы для перезаписи значений по умолчанию. Значения могут быть десятичными дробями (т.е. 0.1000) или обычными дробями (т.е. 1/16), опционально, могут быть добавлены единицы измерения (cm, mm, um, inch, in or mil). Если елиница измерения не указана подразумевается единица измерения станка. Метрическая или дюймовая системы счисления могут быть смешаны: INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 um является допустимым значением.
OPEN_FILE = /full/path/to/file.ngc файл который будет загружен при старте AXIS. Используйте пустую строку "" и никакого файла не будет загружено.
EDITOR = gedit Редактор используемый при выборе File > Edit or File Edit Tool Table из главного меню AXIS. Эта переменная должна быть настроена, для того, чтобы пункты меню работали. Еще одно допустимое значение gnome-
terminal -e vim.
PYVCP = /filename.xml Файл описания панели pyVCP. См. раздел pyVCP для более подробной информации.
LATHE = 1 Переменная включает отображение в моде токарного станка с Радиусом и Диаметром в DRO.
GEOMETRY = XYZABCUVW Контролирует предпросмотр и просмотра траекторий вращательного движения. Этот элемент состоит из последовательности букв осей, опционально со знаком "-". Должны использоваться только оси заданные в [TRAJ]AXES. Эта последовательность определяет порядок в котором каждая ось применяется, знак "-" обращает ось. Правильная GEOMETRY зависит от параметров станка и кинематики использованной для управления станком.
Строка из примера GEOMETRY=XYZBCUVW для 5-ти осного станка где кинематика задает: UVW - движения в координатной системе инструмента и XYZ - движения в координатной системе материала. Порядок букв важен потому, что он отражает в котором применяются разные преобразования. Например вращение вокруг оси С потом вокруг В отличается от вращения вокруг В и потом С. GEOMETRY не имеет никакого значения без поворотных осей.
ARCDIVISION = 64 Установка качества просмотра дуг. В просмотре дуги отображаются при помощи множества прямых линий; полуокружность разделяется на ARCDIVISION частей. Большие значения дают более точный просмотр, но требуют больше времени для загрузки и в итоге дает более дерганный просмотр. Меньшие значения дают менее точный просмотр, но занимают меньше времени для загрузки и в итоге дает более быстрый просмотр. Значение по умолчанию 64 значит, что круг до 3 дюймов будет отображен с погрешностью 1 мил (1/1000 дюйма) (0.03%).1
Следующие элементы [DISPLAY] не используются если вы выберете AXIS в качестве своего пользовательского интерфейса.
HELP_FILE = tkemc.txt Путь к файлу помощи (не используется в AXIS).
1 В emc2.4 и более ранних, значение по умолчанию было 128.
4.2.3 Раздел [FILTER]
В AXIS есть возможность обрабатывать загружаемый файл программным фильтром. Этот фильтр может выполнять любую желаемую задачу: Что-нибудь такое же простое, как проверка наличия M2 в конце файла, или что-нибудь сложное, как определение, что входной файл это картинка с картой глубин, и генерация G-code для обработки заданной этой картинкой формы. Раздел [FILTER] в ini файле контролирует как работают фильтры. Сначала, для каждого типа файлов, напишите строку PROGRAM_EXTENSION. Потом укажите программу которую нужно запустить для каждого типа файлов. Этой программе будет дано название входного файла в качестве первого аргумента, и она должна выдать rs274ngc код в стандартный вывод. Вывод это то, что будет показано в текстовом поле, отображено на предпросмотре и выполнено EMC2 после команды Run.
PROGRAM_EXTENSION = .extension Description Если ваш пост процессор выдает файлы в верхнем регистре вы можете добавить следующую строку:
PROGRAM_EXTENSION = .NGC XYZ Post Processor
Следующие строки добавляют поддержку конвертера image-to-gcode включенного в EMC2:
PROGRAM_EXTENSION = .png,.gif Greyscale Depth Image png = image-to-gcode gif = image-to-gcode
Также можно задать интерпретатор:
PROGRAM_EXTENSION = .py Python Script py = python
Таким образом, может быть открыт любой скрипт на Python, и его вывод будет считаться Gкодом. Один пример такого скрипта доступен в nc_files/holecircle.py. Этот скрипт создает Gкод для сверловки серии отверстий по площади окружности. Гораздо больше генераторов g-code доступны на сайте EMC Wikihttp://wiki.linuxcnc.org/cgi-bin/emcinfo.pl.
Если установлена внешняя переменная AXIS_PROGRESS_BAR, тогда строки записанные в стандартный вывод следующего формата:
FILTER_PROGRESS=%d
то в AXIS в строке состояния будет отображаться индикатор прогресса работы фильтра. Эта функция должна использоваться каждым фильтром, который работает длительное время.
4.2.4 Раздел [RS274NGC]
PARAMETER_FILE = file.var Файл который содержит параметры, использующиеся интерпретатором (сохраненные между запусками).
RS274NGC_STARTUP_CODE = G21 G90 Строка NC кодов, с которыми интерпретатор будет инициализирован. Это не замена определения модальных Gкодов вверху каждого ngc файла потому, что модальные коды станка отличаются и могут быть изменены Gкодом интерпретированными ранее в текущей сессии.
4.2.5 Раздел [EMCMOT]
Вы можете найти другие элементы в этом разделе и они не должны изменяться.
BASE_PERIOD = 50000 ( HAL ) "Base" (базовый) период задачи,в наносекундах - это самый быстрый поток в машине.
На серво-системах, в общем нет причины для того, чтобы BASE_PERIOD был меньше SERVO_PERIOD.
На станках с программной генерацией шагов BASE_PERIOD определяет максимальное количество шагов в секунду. В отсутствие требований длинных длин шагов и промежутков между шагами, абсолютный максимум частоты шагов - 1 шаг за BASE_PERIOD. Таким образом, BASE_PERIOD показанный выше дает максимум 20 000 шагов в секунду. 50 000 наносекунд это достаточно консервативное значение. Минимальное пригодное значение BASE_PERIOD зависит от результата Latency Test, необходимой длинны шага и скорости процессора.
Выбор слишком короткого BASE_PERIOD может привести к сообщению "Неожиданная задержка реального времени" ("Unexpected real time delay"), подвисаниям, и спонтанным перезагрузкам.
SERVO_PERIOD = 1000000 ( HAL ) Период задачи "Servo" тоже в наносекундах. Это значение будет округленно до целого количества BASE_PERIOD. Это значение используется даже в системах основанных на шаговых двигателях.
Это частота с которой вычисляется позиции моторов, следующее отклонение проверяется, выходные значение PID обновляются и так далее.
Большинство систем не будет нуждаться в изменении этого значения. Это значение частоты обновления планировщика перемещений низкого уровня.
TRAJ_PERIOD = 1000000 ( HAL ) Период задачи Trajectory Planner (Планировщика траекторий) в наносекундах. Это значение будет округлено до целого числа SERVO_PERIOD.
Нет никаких причин делать это значение больше SERVO_PERIOD, кроме машин с необычной кинематикой (например, гексапод).
4.2.6 Раздел [TASK]
TASK = milltask Задает название выполняемой "задачи" (task). "task" делает разные вещи, такие как связь с пользовательскими интерфейсами, связь с планировщиком перемещений реального времени через не-HAL общую память и интерпретация gкода. На данный момент есть только одна задача, которая имеет смысл для 99,9% пользователей, milltask в далекие темные времена (до HAL), часто бывало, что станкостроитель должен был сделать модифицированную версию вещей таких как task, ввод/вывод и контроль движения для специфической машины.
CYCLE_TIME = 0.001 Период в секундах с которым будет запускаться EMCTASK. Этот параметр влияет на интервал запросов во время ожидания завершения движения, во время выполнения инструкции паузы, и при получении команды от пользовательского интерфейса. Обычно нет нужды менять это значение.
4.2.7 Раздел [HAL]
HALFILE = example.hal Выполнить файл ’example.hal’ при запуске. Если HALFILE задан несколько раз, файлы будут выполняться в порядке их появления в ini файле. Практически все конфигурации будут иметь хотя бы один HALFILE, а системы на шаговых двигателях обычно имеют два таких файла, один задающий общую конфигурацию шаговых двигателей (core_stepper.hal) и один задающий вывод пинов для машины (xxx_pinout.hal).
HALCMD = command Выполняет ’command’ как одну HAL команду. Если HALCMD задана несколько раз, команды выполняются в порядке их появления в ini файле. Строки HALCMD выполняются после всех строк HALFILE.
SHUTDOWN = shutdown.hal Выполнить файл ’shutdown.hal’ во время выхода из EMC. В зависимости от используемых аппаратных драйверов, это позволяет выстваить выводы на определенные значения при нормальном завершении EMC. Однако, из-за того, что нет гарантии того, что этот файл будет выполнен (например, в случае поломки компьютера) это не замена надлежащей цепочке физического e-stop или других защит от неисправностей программного обеспечения.
POSTGUI_HALFILE = example2.hal (Только вместе с AXIS GUI) Выполнить ’example2.hal’ после того как GUI создало свои пины HAL. См. раздел 12.4 для более подробной информации.
4.2.8 Раздел [TRAJ]
Раздел [TRAJ] содержит общие параметры для модуля планировки траектории в EMCMOT.
COORDINATES = X Y Z Названия контролируемых осей. X, Y, Z, A, B, C, U, V, и W все приемлемы. Только оси поименованные в COORDINATES принимаются в g-code. Это не имеет значения для отображения имен осей в Gкоде (X-, Y-, Z-) на номера шарниров для "тривиальной кинематики", X всегда отображается на шарнир 0, А всегда отображается на шарнир 4 и U всегда отображается на шарнир 7 и т.д. Разрешено писать название оси дважды (например, X Y Y Z для портального станка) но это не будут иметь эффекта.
AXES = 3 Больше на единицу чем самый большой номер шарнира в системе. Для станка XYZ, шарниры нумеруются 0, 1 и 2; в этом случае AXES должен быть равным 3. Для станка XYUV использующего "тривиальную кинематику", шарнир V идет под номером 7 и поэтому AXES должен быть равным 8. Для машин с нетривиальной кинематикой (например, scarakins) это будет в общем случае будет количеством контролируемых шарниров.
HOME = 0 0 0 Координаты позиций начал каждой оси. Еще раз, для четырехосной системы вам будет нужно 0 0 0 0. Это значение используется для станков с нетривиальной кинематикой. На станках с тривиальной кинематикой это значение игнорируется.
LINEAR_UNITS = <units> Задает единицы измерения станка для линейных осей. Возможные значения: in, inch, imperial, metric, mm. Это не влияет на линейные единицы измерения в NC коде (коды G20 и G21).
ANGULAR_UNITS = <units> Задает единицы измерения для поворотных осей. Возможные варианты: ’deg’, ’degree’ (360 на оборот), ’rad’, ’radian’ (2П на оборот), ’grad’, or ’gon’ (400 на оборот). Это не влияет на единицы NC кода. В RS274NGC, A-, B- и C- слова всегда выражаются в градусах.
DEFAULT_VELOCITY = 0.0167 Начальная скорость ручных линейных осей, в единицах измерения станка в секунду. Показанное значение равно одной единице измерения в минуту.
DEFAULT_ACCELERATION = 2.0 В станках с нетривиальной кинематикой, ускорение используется для "teleop" (объем тела в прямоугольной системе координат) перемещений, в единицах измерения машины в секунду за секунду.
MAX_VELOCITY = 5.0 Максимальная скорость для любой оси или координатного перемещения, в единицах измерения станка в секунду. Показанное значение равно 300 единиц измерения в минуту.
MAX_ACCELERATION = 20.0 Максимальное ускорение для любой оси или координатного перемещения, в единицах измерения станка в секунду за секунду.
POSITION_FILE = position.txt Если установлено не пустое значение, положение шарниров сохраняется в этом файле между запусками. Это позволяет станку стартовать с теми же координатами, с которыми он остановился. Это предполагает что не было перемещений станка в то время пока было выключено питание. Если не установлено, положения шарниров не сохраняется и будет начинать со значениями 0 каждый раз при старте ЕМС. Это может помочь на меленьких станках без концевых датчиков.
NO_FORCE_HOMING = 1 По умолчанию EMC принуждает пользователя выставлять оси станка перед до выполнения любой MDI команды или запуска программы. Обычно разрешено только перемещение в ручном режиме до выставления нулей осей. Установка NO_FORCE_HOMING = 1 позволяет пользователю выполнять MDI перемещения и запускать программы без предварительного выставления осей. Интерфейсы без возможности выставления осей нуждаются в этой опции.
Внимание! Использование NO_FORCE_HOMING = 1 позволит станку пройти мягкие пределы во время функционирования и в общем случае использование NO_FORCE_HOMING = 1 не желательно. |
4.2.9 Разделы [AXIS_<num>]
разделы [AXIS_0], [AXIS_1], и т.д. содержат общую информацию о параметрах для индивидуальныз компонентов в модуле контроля осей. Названия разделов AXIS нумеруется начиная с 0, и продолжается для всех номеров осе установленных в [TRAJ] AXES минус 1
- AXIS_0 = X
- AXIS_1 = Y
- AXIS_2 = Z
- AXIS_3 = A
- AXIS_4 = B
- AXIS_5 = C
- AXIS_6 = U
- AXIS_7 = V
- AXIS_8 = W
TYPE = LINEAR Тип оси или LINEAR (линейная) или ANGULAR (поворотная).
WRAPPED_ROTARY = 1 Когда это установлено в 1 для поворотной оси ось будет двигаться от 0 до 359.999 градусов. Положительный числа будут двигать ось в положительном направлении, отрицательные числа - в противоположном направлении.
UNITS = inch Если установлено, эта установка перезаписывает связанную установку [TRAJ] UNITS .
(т.е., [TRAJ]LINEAR_UNITS если TYPE оси - LINEAR, [TRAJ]ANGULAR_UNITS если TYPE оси - ANGULAR)
MAX_VELOCITY = 1.2 Максимальная скорость для оси в единицах измерения станка в секунду.
MAX_ACCELERATION = 20.0 Максимальное ускорение для оси в единицах измерения станка в секунду в квадрате.
BACKLASH = 0.000 Люфт в единицах измерения станка. Значение компенсации люфта может быть использовано для компенсации небольших недостатков механики используемой для управления осями. Если компенсация люфт оси добавлена и вы используете шаговые двигатели, значение STEPGEN_MAXACCEL должно быть увеличено до 1.5-2 значений MAX_ACCELERATION для оси.
COMP_FILE = file.extension Файл содержащий структуру компенсаций для оси. Этот файл может быть поименован xscrew.comp, например для оси Х. Имена файдок чувствительны к регистру букв и могут содержать буквы или цифры. Значения это триплеты разделенные пробелами, по одному на строку. Первое значение это номинал (место в котором должна находится ось). Второе и третье значения зависят от установки COMP_FILE_TYPE. На данный момент внутренний предел EMC2 256 триплетов на ось. Если задан COMP_FILE, то BACKLASH (люфт) игнорируется. Значения в файле компенсаций в единицах измерения станка.
COMP_FILE_TYPE=0 второе и третье значения задают прямое положение (где ось окажется во время перемещения вперед) и обратное положение (где ось окажется во время перемещения в обратную сторону) которые соответствуют номинальному значению.
COMP_FILE_TYPE=1 второе и третье значения задают прямой дифферент (как далеко окажется ось от номинала двигаясь вперед) и обратный дифферент (как далеко окажется ось от номинала двигаясь в обратном направлении)
COMP_FILE_TYPE = 0 Для For COMP_FILE_TYPE равным нулю, значения компенсационного файла являются nominal, forward & reverse (номинал, вперед и обратно). Для не нулевого COMP_FILE_TYPE значения компенсационного файла являются nominal, forward_trim & reverse_trim (номинал, прямой дифферент и обратный дифферент).
MIN_LIMIT = -1000 Минимальный предел (мягкий предел (soft limit)) для движений оси в единичах измерения станка. Когда этот предел превышается, контроллер прекращает движение оси.
MAX_LIMIT = 1000 Максимальный предел (мягкий предел (soft limit)) для движений оси в единичах измерения станка. Когда этот предел превышается, контроллер прекращает движение оси.
MIN_FERROR = 0.010 Это значение допуска отклонения от установленного положения в единицах измерения станка на очень маленьких скоростях. Если MIN_FERROR меньше, чем FERROR, тогда оба они создают наклонную кривую ошибки. Вы можете представить это себе как график, где по одной оси скорость а по второй допустимая ошибка следования траектории. С ростом скорости растет погрешность следования вплоть до значения FERROR.
FERROR = 1.0 FERROR это максимальная допустимая погрешность следования в единицах измерения станка. Если разница между заданным значением и измеренным значением превышает это количество, то контроллер выключает серво вычисления, устанавливает все выводы на 0 и выключает усилители. Если MIN_FERROR присутствует в ini файле, используется погрешность следования пропорционально зависимая от скорости. Здесь, максимально возможная ошибка следования пропорциональна скорости, FERROR применительно к скорости быстрого перемещения установленного в [TRAJ]MAX_VELOCITY и пропорционально меньшей ошибкой следования для более медленных скоростей. Максимальная допустимая погрешность следования всегда будет больше чем MIN_FERROR. Это предотвращает непреднамеренное прерывание движения стационарных осей из-за маленьких ошибок следования. Маленикие погрешности следования всегда будут присутствовать из-за вибраций и т.п. Следующие полярные значения определяют как интерпретируются входы и как применяются выходы. Обычно, они могут быть установлены методом проб и ошибок, так как есть только две возможности. Программа калибровки серво осей EMC2 (EMC2 Servo Axis Calibration в меню AXIS Machine/Calibration, в TkEMC в меню Settings/Calibration) может быть использована для более интерактивной настройки этих значений и проверки их результатов таким образом, чтобы можно было поместить правильные значения в ini файл с наименьшими трудностями.
4.2.9.1 Выставление осей (Homing)
Эти параметры относятся к выставлению нулей осей, для более подробных разъяснений см. Раздел Выставление осей (4.3)
HOME = 0.0 Положение в которое придет ось по завершении процедуры высьавления нулей осей.
HOME_OFFSET = 0.0 Положения датчика home на оси или индекс импульса, в единицах измерения станка.
HOME_SEARCH_VEL = 0.0 Начальная скорость поиска home в единицах измерения станка за секунду. Знак определяет направление движения. Нулевое значение говорит считать текущее положение положением home. Если у вашего станка нет датчиков home, оставьте это значение равным 0.
HOME_LATCH_VEL = 0.0 Скорость в единицах измерения станка в секунду до позиции размыкания датчика home.
HOME_FINAL_VEL = 0.0 Скорость в единицах измерения станка в секунду с момента размыкания датчика home до положения HOME. Если не установлено или равно 0, используется скорость быстрого перемещения станка. Значение должно быть положительным числом.
HOME_USE_INDEX = NO Если энкодер используемый для этой оси использует индексированные импульсы, и плата движения имеет поддержку этого сигнала, вы можете поставить поддерживает HOME_USE_INDEX = yes. Когда значение равно yes, оно будет влияет на тип используемого шаблона home. На данный момент вы не можете выполнить home к индексу с шаговыми двигателями, если только вы не используете stepgen в режиме скорости и pid.
HOME_IGNORE_LIMITS = NO Некоторые станки используют один датчик для home и для предела оси. Эта переменная должна быть установлена в yes если ваш станок устроен подобным образом.
HOME_IS_SHARED = <n> Если вход датчика home общий для более чем одной оси, установите <n> в 1 чтобы предотвратить выставление оси, если один из общих датчиков уже сработал. Установите <n> в 0, чтобы разрешить выставление оси если датчик уже закрыт.
HOME_SEQUENCE = <n> Используется для процедуры "Home All" (выставить все оси). <n> начинается с 0 и не одно число не должно быть пропущено. Если не установлено или равно -1 ось не будет выставлена функцией "Home All". Более одной оси может быть выствалено одновременно.
VOLATILE_HOME = 0 Когда включено (равно 1) эта ось станет unhomed (не выставленной) если выключится питание станка или включится E-stop. Это полезно если у вашего станка есть датчики home и нет обратной связи по положению, таких как станки управляемые сигналами шаг/направление.
4.2.9.2 Серво
Следующие элементы используются системами основанными на сервомоторах или подобных им системах.
Это описание предполагает, что все единицы измерения выводов ПИД-компонента (ПИД-регулятора) - вольты.
DEADBAND = 0.000015 (HAL) - Зона нечувствительности есть величина в пределах которой мотор считает, что находится в нужном местоположении.
BIAS = 0.000 (HAL) - Смещение используется hm2-servo и некоторыми другими. Смещение это постоянная величина, которая добавляется к выводу. В большинстве случаев должна быть оставлена 0. Однако, иногда она может полезна для компенсации отклонений в сервоприводах, или для балансировки веса перемещаемого вертикально объекта. При отключении ПИД-цикла (ПИД-регулирования) смещение выключается, так же как и другие составляющие напряжения задания привода.
P = 50 ( HAL ) пропорциональный коэффициент. На это значение умножается ошибка между заданным и действительным местоположением в единицах измерения станка, результат добавляется к вычислению напряжения задания привода. Единицы измерения P - вольт на единицу измерения станка, т.е. В/Ед (Ед - единицы станка).
I = 0 ( HAL ) интегральный коэффициент. На это значение умножается накопленная ошибка между заданным и действительным положением в единицах измерения станка, добавляется к вычислению напряжения задания привода. Единицы измерения коэффициента I - Вотльт на единицу измерения станка в секунду, т.е. В/(Ед*с).
D = 0 ( HAL ) - дифференциальная составляющая.На это значение умножается разница между накопленной и текущей ошибкой, результат добавляется к вычислению напряжения задания привода. Единицы измерения коэффициента D - вольт на единицу измерения станка в секунду, т.е. В/(Ед/с).
FF0 = 0 ( HAL ) Коэффициент прямой передачи нулевого порядка. На это число умножается задание (pid.N.command), а результат добавляется к напряжению задания привода. Единица измерения коэффициента FF0 - Вольт на единицу измерения станка, т.е. В/Ед. Обычно FF0 используется в pid регуляторах управляющих скоростью. FF0 позволяет компенсировать силы трения и обратную ЭДС двигателя.
FF1 = 0 ( HAL ) прямой передачи первого порядка. На это число умножается изменение задания (pid.N.command) за секунду. Результат добавляется к напряжению задания привода. Единица измерения коэффициента FF1 - вольт на единицу измерения станка за секунду, т.е. В/(Ед*с). При управлении положением то же, что и FF0 для скорости, при управлении скоростью позволяет компенсировать силы инерции.
FF2 = 0 ( HAL ) Коэффициент прямой передачи второго порядка. На это число умножается вторая производная задания (pid.N.command). Результат добавляется к напряжению задания привода. Единица измерения коэффициента FF2 - вольт на единицу измерения станка за секунду в квадрате, т.е. В/(Ед*с2). При управлении положением то же, что и FF1 для скорости.
OUTPUT_SCALE = 1.000 - Масштаб.
OUTPUT_OFFSET = 0.000 ( HAL ) - Отступ.
Эти два значения задают масштаб (множитель) и отступ вывода оси на привод мотора. Значение отступа вычитается из вычисленного вывода (в вольтах) и делится на масштаб, перед тем как тем как преобразовать напряжение задания в аналоговый вид. Единицы измерения масштаба - В/В_цап. Единица измерения отступа - вольт. Масштаб и отступ могут быть использованы для линеаризации ЦАПа.
Масштабирование выглядит так: raw = (output − offset) / scale ( raw = (вывод - отступ) / масштаб )
Значение масштаба может быть получено автоматически выполняя анализ единиц измерения, т.е. [выводы в единицах СИ]/[единицы актуатора]. Например, на станке с режимом усилителя скорости, таких как 1 вольт выдает скорость 250 мм/с,
[attachment=2:31up3ht3]EMC2 servo configuration.png[/attachment][spoiler=Формула в формате OpenOffice:31up3ht3]amplifier volt = ( output [mm over sec] - offset[mm over sec])
/ 250 mm over secvolt
newline
усилитель В = ( вывод [мм over с] - отступ[мм over с])
/ 250 мм over {с*В}[/spoiler]
Заметьте, что единицы измерения отступа в единицах измерения станка, т.е. мм/с, и они заранее вычитаются из измерений сенсоров. Значение этого отступа вычисляется путем нахождения значения вывода, которое дает вывод актуатора 0.0. Если ЦАП линейный, то этот отступ обычно равен 0.
Масштаб и отступ могут быть использованы в том числе для линеаризации ЦАП, в результате чего значения отражают комбинированный эффект вывода усилителя, не линейности ЦАП и т.д.. Чтобы это сделать следуйте процедуре:
- Создайте таблицу калибровки для вывода, управляющего ЦАП с желаемым вольтажем и измерениями результатов. См таблицу 4.2.9.2 для примера измерений вольтажа.
- Сделайте линейную аппроксимацию наименьших квадратов для получения a, b такие, что значение = a * raw +b
- Заметьте, что мы хотим чтобы чистый выход, такой как наш измеренный результат, был равен установленному выходу. Что означает
[attachment=1:31up3ht3]EMC2 инструкция станкостроителя.png[/attachment]
[spoiler=Формула в формате OpenOffice:31up3ht3]matrix{(a) # cmd = a ∗ raw + b ## (b) # raw = {cmd − b} over {alignc a}}[/spoiler]
В результате, коэффициенты a и b из линейного приближения могут быть использованы в качестве масштаба и отступа для контроллера напрямую.
MAX_OUTPUT = 10 ( HAL ) Максимальное значение напряжения на выходе ПИД-регулятора в вольтах Вычисленное значение обрезается до этого предела.
Предел применяется перед тем как масштабировать в единицы чистого вывода. Значение применяется симметрично для обоих отрицательной и положительной стороны.
Измерения вольтажа на выводах:
Raw | Measured |
---|---|
-10 | -9.93 |
-9 | -8.83 |
0 | -0.03 |
1 | 0.96 |
9 | 9.87 |
10 | 10.87 |
INPUT_SCALE = 20000 ( HAL ) Определяет количество импульсов, которое соответствует перемещению на одну единицу измерения станка, установленную в разделе [TRAJ]. Для линейной оси одна единица измерения будет равна установке LINEAR_UNITS. Для поворотных осей одна единица измерения будет равна установке ANGULAR_UNITS.
Если в конфигурации встречается дублирование, то оно игнорируется.
Например, на энкодере с 2000 импульсов на оборот, и редуктором 10 оборотов на дюйм, и выбранными единицами измерения дюймами, мы имеем:
[attachment=0:31up3ht3]EMC2 инструкция станкостроителя.png[/attachment]
[spoiler=Формула в формате OpenOffice:31up3ht3]alignc { input scale = 2000 counts over rev ∗ 10 rev over inch = 20000 counts over inch}[/spoiler]
4.2.9.3 Шаговые двигатели
Следующие элементы относятся к шаговым двигателям.
The following items are Stepper related items.
SCALE = 4000 ( HAL ) Задает количество импульсов, которое соответствует перемещению на одну единицу измерения станка, которая установлена в секции [TRAJ]. Для шаговых систем, это количество импульсов шага на перемещение на одну единицу измерения. Для линейных осей одна единица измерения станка равна установке LINEAR_UNITS. Для поворотных осей одна единица равна установке ANGULAR_UNITS. Для серво систем это количество импульсов обратной связи на единицу измерения станка. Второе число, если заданно, игнорируется.
Например, на шаговых двигателях с шагом 1.8 градуса с полушагом и передачей 10 оборотов на дюйм, и дюймах в качестве единиц измерения станка, мы имеем:
[attachment=0:1nndhvmy]EMC2 инструкция станкостроителя.png[/attachment]
[spoiler=Формула в формате OpenOffice:1nndhvmy]alignc { input scale = {2 steps} over {1.8 degree} ∗ 360 degree over rev * 10 rev over inch = 4000 steps over inch}[/spoiler]
Более старые файлы конфигурации шаговых двигателей .ini и .hal использовали INPUT_SCALE для этого значения.
STEPGEN_MAXACCEL = 21.0 ( HAL ) Лимит ускорения для генератора шагов. Он должен быть больше чем MAX_ACCELERATION оси на от 1% до 10%. Это значение улучшает настройку "цикла позиционирования" stepgen. Если вы добавили компенсацию люфта для оси, то это значение должно быть в 1.5-2 раза больше чем MAX_ACCELERATION.
STEPGEN_MAXVEL = 1.4 ( HAL ) Более старые конфигурационные файлы также имеют ограничение скорости для генератора шагов. Если заданно, то значение должно также быть на 1%-10% больше чем MAX_VELOCITY оси. Более поздние испытания показали, что использование STEPGEN_MAXVEL не улучшает настройку цикла позиционирования stepgen.
4.2.10 Раздел [EMCIO]
CYCLE_TIME = 0.100 Периодичность, в секундах, с которой будет запускаться EMCIO. Приравнивание его 0.0 или отрицательному значению скажет EMCIO не засыпать никогда. Обычно нет нужды менять это значение.
TOOL_TABLE = tool.tbl Файл который содержит информацию об инструментах, описан в руководстве пользователя (User Manual).
TOOL_CHANGE_POSITION = 0 0 2 Задает положение по осям X Y Z в которое нужно переместиться, чтобы произвести смену инструмента если использованны три числа. Задет положение по осям X Y Z A B C если использовано 6 чисел. Задет положение по осям X Y Z A B C U V W если использованы 9 чисел.
Смены инструмента могут быть комбинированы. Например, если вы комбинируете подъем инструмента со положением смены инструмента, вы можете сначала переместиться по Z, затем по X и Y
TOOL_CHANGE_WITH_SPINDLE_ON = 1 Шпиндель будет оставлен включенным, если значение равно 1. Полезно для токарных станков или машин, где материал зажат в шпинделе а не инструмент.
TOOL_CHANGE_QUILL_UP = 1 Ось Z будет перемещена к машинному нулю перед сменой инструмента если значение равно 1. Это тоже самое, что и использованиеG0 G53 Z0.
TOOL_CHANGE_AT_G30 = 1 Станок перемещается в точку заданную параметрами 5181-5186 для G30 если значение равно 1. Для большей информации по G30 и Параметрам смотрите инструкцию по G Code.
RANDOM_TOOLCHANGER = 1 Это нужно для машин, которые не могут положить инструмент обратно на тоже место откуда они его взяли. Например, машины, которые меняют инструмент из выбранной ячейки на тот, который в шпинделе.
4.3 Выставление осей (Homing)
4.3.1 Обзор
Выставление осей выглядит достаточно простым - просто перемещаем каждую ось в известное положение и выставляем внутренние переменные EMC2 соответственно. Однако, разные станки имеют разные требования, и на самом деле процедура выставления осей достаточно сложна.
4.3.2 Последоватиельность выставления осей (Homing Sequence)
Существует четыре возможных последовательности выставления осей, вместе со связанными параметрами как показано в следующей таблице. Для более детального описания что каждый параметр делает, см. следующие разделы.
SEARCH_VEL | LATCH_VEL | USE_INDEX | Homing Type |
---|---|---|---|
nonzero | nonzero | NO | Switch-only |
nonzero | nonzero | YES | Switch + Index |
0 | nonzero | YES | Index-only |
0 | 0 | NO | None |
Другие комбинации - ошибка.
4.3.3 Настройка
Есть 6 параметров, которые определяют конкретно как себя ведет последовательность выставления осей. Они задаются в разделе [AXIS] ini-файла.
4.3.3.1 HOME_SEARCH_VEL (Скорость поиска home)
Значение по умолчанию - ноль. Нулевое значение говорит EMC считать, что нет никакого концевого выключателя home; стадия поиска пропускается.
Если HOME_SEARCH_VEL не нулевое, тогда EMC предполагает, что есть датчик home. EMC начинает с проверки того, что датчик еще не сработал. Если он уже сработал, EMC отходит назад от датчика со скоростью HOME_SEARCH_VEL. Направление отхода противоположное знаку HOME_SEARCH_VEL. Затем EMC ищет датчик home перемещаясь в сторону заданную знаком HOME_SEARCH_VEL, со скоростью определенной модулем HOME_SEARCH_VEL. Когда датчик home обнаружен, ось останавливается настолько быстро, насколько это возможно, но, несмотря на это всегда будет небольшой промах. Размер промаха зависит от скорости. Если она слишком высокая, ось может промахнуться на столько, чтобы задеть концевой датчик или ударится к конец оси. С другой стороны, если HOME_SEARCH_VEL слишком мала, процедура выставления оси может занять слишком много времени.
4.3.3.2 HOME_LATCH_VEL (Скорость уточнения home)
Определяет скорость и направление которое EMC использует для финального точного опреления датчика home (если он присутствует) и положения индексного импульса (если присутствует). Она обычно будет медленнее чем скорость поиска, для увеличения точности. Если HOME_SEARCH_VEL и HOME_SEARCH_VEL одинакового знака, тогда стадия уточнения проходит при движении в том же направлении, что и при стадии поиска. (В этом случае, EMC сначала откатывается от датчика, перед тем как начать двигаться обратно к нему со скоростью уточнения.)
Если HOME_SEARCH_VEL и HOME_SEARCH_VEL имеют разный знак, тогда стадия уточнения проходит при движении в том обратном направлении, от направления стадии поиска. Это значит, что EMC2 будет искать первый импульс после того, как отключится датчик home. Если HOME_SEARCH_VEL равно 0 (означает, что нет датчика home), и этот параметр не нулевой, EMC переходит к поиску индексного импульса. Если HOME_SEARCH_VEL не ноль, а этот параметр равен 0, это ошибка и процедура выставления осей провалится. Значение по умолчанию ноль.
4.3.3.3 HOME_FINAL_VEL
Определяет скорость которую EMC использует, для перемещения из положения HOME_OFFSET в положение HOME. Если HOME_FINAL_VEL отсутствует в ini-файле, тогда используется максимальная скорость оси для выполнения этого перемещения. Значение должно быть положительным числом.
4.3.3.4 HOME_IGNORE_LIMITS
Может содержать значения YES или NO. Этот флаг определяет будет ли EMC2 игнорировать входы с концевых датчиков. Некторые станки не используют раздельные датчики home, вместо этого они используют один из концевых датчиков в качестве входа датчика home. В этом случае, EMC2 нужно игнорировать этот предел во премя процедуры homing. Значение по умолчанию NO.
4.3.3.5 HOME_USE_INDEX
Определяет будет ли индексный импульс. Если флаг равен истине (HOME_USE_INDEX = YES), EMC будет уточнять home на восходящем крае импульса. Если равен лжи, EMC будет уточнять положение home либо по восходящем крае, либо на понижающемся крае импульса датчика home (в зависимости от знаков HOME_SEARCH_VEL и HOME_LATCH_VEL). Значение по умолчанию NO.
4.3.3.6 HOME_OFFSET
Содержит положение датчика home или индексного импульса, в координатах оси. Оно также может рассматриваться как расстояние между точкой, где находится датчик или индексный импульс и нулевой точкой оси. После определения индексного импульса, EMC устанавливает координату данной точки равной HOME_OFFSET. Значение по умолчанию 0.
4.3.3.7 HOME
Положение в которое будет перемещена ось после завершения процедуры homing. После определения индексного импульса и установки точки в HOME_OFFSET, EMC перемещается в положение HOME, в качестве последнего шага процедуры выставления осей. Значение по умолчанию 0. Отметьте, что даже если этот параметр равен HOME_OFFSET, ось все равно чуть-чуть проскочет уточненное положение пока будет останавливаться. Поэтому всегда будет маленькое движение в это время (только если HOME_SEARCH_VEL не равно 0 или вся процедура поиска и уточнения не пропущена). Финальное движение будет совершено на максимальной скорости оси. Т.к. ноль оси уже выставлен, не должно быть никакого риска что машина сломается ударившись о какой-либо предел оси и поэтому быстрое перемещение это самый быстрый способ завершения процедуры homing.
4.3.3.8 HOME_IS_SHARED
Если нет нескольких раздельных входов от датчиков для этих осей, но есть несколько датчиков подключенных к одному и тому же пину, установите это значение в 1 для предотвращения выставления оси с самого начала процедуры если один из датчиков уже замкнут. Установите это значение в 0, чтобы разрешить выполнение процедуры homing даже если датчик замкнут.
4.3.3.9 HOME_SEQUENCE
Используется для определения многоосной последовательности выставления HOME ALL и обеспечения порядка выставления (например, если ось Z не может быть выставлена пока не выставлена ось X). Ось может быть выставлена после того, как все оси с более маленьким HOME_SEQUENCE были выставлены и находятся в положении HOME_OFFSET. Если две оси имеют одинаковый HOME_SEQUENCE, они могут выставляться одновременно. Если HOME_SEQUENCE равен -1 или не установлен, тогда эта осьне будет выставляться процедурой HOME ALL. Номера HOME_SEQUENCE начинаются с 0 и не должно быть не использованных чисел.
Рисунок 4.1: Homing Sequences
[attachment=1:1l2v2rbw]EMC2_Integrator_Manual_Figure4.1 Homing Sequence.png[/attachment]
Исходник в svg:[attachment=0:1l2v2rbw]EMC2_Integrator_Manual_Figure4.1 Homing Sequence.svg[/attachment]
4.4 Токарные станки (Lathe)
4.4.1 Рабочая плоскость по умолчанию (Default Plane)
Когда интерпретатор был впервые написан, он был разработан для фрезерных станков. Вот почему, рабочая плоскость по умолчанию XY (G17). Обычный токарный станок использует плоскость XZ (G18). Чтобы изменить плосткость по умолчанию поместите следующую строку в раздел [RS274NGC] в ini-файле:
RS274NGC_STARTUP_CODE = G18
4.4.2 Настройка INI
Следующие настройки нужны для режима токарного станка, в дополнение или замену обычных настроек в ini-файле:
[DISPLAY]
DISPLAY = axis
LATHE = 1
[TRAJ]
AXES = 3
COORDINATES = X Z
[AXIS_0]
...
[AXIS_2]
...
Оглавление книги LinuxCNC Integrators Manual
Глава | Название |
---|---|
Глава 1 | LinuxCNC Integrators Manual Глава I - Важные определения |
Глава 2 | LinuxCNC Integrators Manual Глава II - Аппаратное обеспечение (Hardware) |
Глава 3 | LinuxCNC Integrators Manual Глава III - Конфигурационные файлы |
Глава 4 Доделать! | LinuxCNC Integrators Manual Глава IV - Файл INI |
Глава 5 Доделать! | LinuxCNC Integrators Manual Глава V - LinuxCNC и HAL |
Глава 6 Доделать! | LinuxCNC Integrators Manual Глава VI - Основы HAL |
Глава 7 Доделать! | LinuxCNC Integrators Manual Глава VII - Настройка шаговых двигателей |
Глава 8 Доделать! | LinuxCNC Integrators Manual Глава VIII - Компонетны HAL |
Глава 9 Забыли перевести! | LinuxCNC Integrators Manual Глава IX - Параллельный порт |
Глава 10 Доделать! | LinuxCNC Integrators Manual Глава X - Пользовательский интерфейс HAL (Halui) |
Глава 11 Доделать! | LinuxCNC Integrators Manual Глава XI - Примеры HAL |
Глава 12 Доделать! | LinuxCNC Integrators Manual Глава XII - Virtual Control Panel - Виртуальная панель управления |