1. Расплоложение файлов

LinuxCNC ищет файлы конфигурации и G-кода в определенном месте. Местоположение зависит от того, как вы используете LinuxCNC.

1.1. На установленном пакете

Если вы используете LinuxCNC с Live CD или установили его через .deb и используете средство выбора конфигурации LinuxCNC из меню, LinuxCNC просматривает следующие каталоги:

  • Каталог LinuxCNC находится по адресу /home/user-name/linuxcnc.

  • Каталоги конфигурации расположены по адресу /home/user-name/linuxcnc/configs.

    • Файлы конфигурации расположены по адресу /home/user-name/linuxcnc/configs/name-of-config.

  • Файлы G-кода расположены по адресу /home/user-name/linuxcnc/nc_files.

Например, для конфигурации под названием Mill и имени пользователя Fred структура каталогов и файлов будет выглядеть следующим образом.

  • /home/fred/linuxcnc

  • /home/fred/linuxcnc/nc_files

  • /home/fred/linuxcnc/configs/mill

    • /home/fred/linuxcnc/configs/mill/mill.ini

    • /home/fred/linuxcnc/configs/mill/mill.hal

    • /home/fred/linuxcnc/configs/mill/mill.var

    • /home/fred/linuxcnc/configs/mill/tool.tbl

1.2. Командная строка

Если вы запустите LinuxCNC из командной строки и укажете имя и расположение INI-файла, расположение файлов может находиться в другом месте. Чтобы просмотреть параметры запуска LinuxCNC из командной строки, выполните linuxcnc -h.

Note
Дополнительные места для некоторых файлов можно настроить в INI-файле. См. раздел <<sub:ini:sec:display,[DISPLAY]>> и раздел <<sub:ini:sec:rs274ngc,[RS274NGC]>>.

2. Файлы

Для каждого каталога конфигурации требуются как минимум следующие файлы:

  • INI-файл .ini

  • Файл HAL .hal или файл HALTCL .tcl, указанный в разделе HAL INI-файла.

Note
Для некоторых ГИП могут потребоваться другие файлы.

При желании вы также можете иметь:

  • Файл переменных .var

    • Если вы не включите файл .var в каталоге, но включите <<sub:ini:sec:rs274ngc,[RS274NGC]>> PARAMETER_FILE=somefilename.var, файл будет создан для вас при запуске LinuxCNC.

    • Если вы не включаете файл .var и элемент [RS274NGC] PARAMETER_FILE, при запуске LinuxCNC будет создан файл var с именем rs274ngc.var. Если [RS274NGC]PARAMETER_FILE не включен, могут появиться некоторые сбивающие с толку сообщения.

  • Файл таблицы инструментов .tbl, если в INI-файле указано <<sub:ini:sec:emcmot,[EMCMOT]>> TOOL_TABLE. Для некоторых конфигураций таблица инструментов не требуется.

3. Системы шаговых двигателей

3.1. Base Period

BASE_PERIOD — это пульс вашего компьютера с LinuxCNC. footnote: [В этом разделе речь идет об использовании stepgen, встроенного в LinuxCNC генератора шаговых импульсов. Некоторые аппаратные устройства имеют собственный генератор шаговых импульсов и не используют встроенный в LinuxCNC. В этом случае обратитесь к руководству по оборудованию.] Каждый период программный генератор шаговых импульсов решает, пришло ли время для следующего шагового импульса. Более короткий период позволит вам генерировать больше импульсов в секунду в определенных пределах. Но если вы сделаете слишком короткий импульс, ваш компьютер будет тратить так много времени на генерацию импульсов шагов, что все остальное замедлится или, возможно, даже заблокируется. Требования к задержке и приводу шагового двигателя влияют на самый короткий период, который вы можете использовать.

В худшем случае задержки могут возникать всего несколько раз в минуту, и вероятность того, что плохая задержка произойдет, когда двигатель меняет направление, невелика. Таким образом, вы можете получить очень редкие ошибки, которые время от времени портят деталь и которые невозможно устранить.

Самый простой способ избежать этой проблемы — выбрать BASE_PERIOD, который представляет собой сумму наибольшего требования к времени вашего диска и наихудшей задержки вашего компьютера. Это не всегда лучший выбор. Например, если вы используете привод с требованием времени удержания сигнала направления 20 мкс, и ваш тест на задержку показал, что максимальная задержка составляет 11 мкс, то если вы установите BASE_PERIOD на 20+11 = 31 мкс, вы получите не-очень-хорошие 32 258 шагов в секунду в одном режиме и 16 129 шагов в секунду в другом режиме.

Проблема заключается в требованиях к времени удержания 20 мкс. Это плюс задержка в 11 мкс заставляет нас использовать медленный период в 31 мкс. Но программный генератор шагов LinuxCNC имеет некоторые параметры, которые позволяют увеличивать различные времена с одного периода до нескольких. Например, если steplen footnote: [steplen относится к параметру, который регулирует производительность встроенного в LinuxCNC генератора шаговых импульсов «stepgen», который является компонентом HAL. Этот параметр регулирует длину самого шагового импульса. Продолжайте читать, со временем все будет объяснено.] изменяется с 1 на 2, тогда между началом и концом шагового импульса будет два периода. Аналогично, если dirhold footnote: [dirhold относится к параметру, который регулирует продолжительность времени удержания направления.] изменена с 1 на 3, между шаговым импульсом и изменением контакта направления будет как минимум три периода. .

Если мы сможем использовать dirhold, чтобы удовлетворить требованиям времени удержания 20 мкс, то следующим по продолжительности временем будет время высокого уровня 4,5 мкс. Добавьте задержку 11 мкс к высокому времени 4,5 мкс, и вы получите минимальный период 15,5 мкс. Когда вы попробуете 15,5 мкс, вы обнаружите, что компьютер работает медленно, поэтому вы остановитесь на 16 мкс. Если мы оставим dirhold равным 1 (по умолчанию), то минимальное время между шагом и направлением составит период 16 мкс минус задержка 11 мкс = 5 мкс, чего недостаточно. Нам нужно еще 15 мкс. Поскольку период равен 16 мкс, нам нужен еще один период. Поэтому мы меняем dirhold с 1 на 2. Теперь минимальное время от окончания шагового импульса до вывода изменения направления составляет 5+16=21 мкс, и нам не нужно беспокоиться о том, что привод сделает шаг в неправильном направлении из-за задержки.

Дополнительную информацию о Stepgen см. в разделе stepgen.

3.2. Параметры шагового импульса

Время импульса и паузы на некоторых приводах различаются. В этом случае точка Step (шага) становится важной. Если привод делает "шаг" по срезу, тогда выходной контакт должен быть инвертирован.

4. Серво системы

4.1. Принцип работы

Сервосистемы обладают большей скоростью и точностью, чем эквивалентные шаговые системы, но они более дороги и сложны. В отличие от шаговых систем, сервосистемам требуется какой-то тип устройства обратной связи по положению, и их необходимо отрегулировать или настроить, поскольку они не совсем работают сразу после установки, как это могла бы сделать шаговая система. Эти различия существуют потому, что сервоприводы представляют собой систему с обратной связью, в отличие от шаговых двигателей, которые обычно работают без обратной связи. Что означает с обратной связью? Давайте рассмотрим упрощенную схему подключения сервомоторной системы.

упрощенная схема подключения системы серводвигателей
Figure 1. Servo Loop

На этой диаграмме показано, что входной сигнал (и сигнал обратной связи) управляет суммирующим усилителем, суммирующий усилитель управляет усилителем мощности, усилитель мощности управляет двигателем, двигатель управляет нагрузкой (и устройством обратной связи) и устройство обратной связи ( и входной сигнал) управляют двигателем. Это очень похоже на круг (обратную связь), где A контролирует B, B контролирует C, C контролирует D, а D контролирует A.

Если вы раньше не работали с сервосистемами, на первый взгляд это, без сомнения, покажется очень странной идеей, особенно по сравнению с более обычными электронными схемами, где входы плавно переходят к выходам и никогда не возвращаются назад.
[Если это поможет, ближайшим эквивалентом этого в цифровом мире являются конечные автоматы, машины последовательностей и т. д., где то, что выходные данные делают сейчас, зависит от того, что входы (и выходы) делали раньше. Если это не поможет, тогда неважно.]
Если все контролирует все остальное, как это вообще может работать, кто главный? Ответ в том, что LinuxCNC может управлять этой системой, но он должен делать это, выбирая один из нескольких методов управления. Метод управления, который использует LinuxCNC, один из самых простых и лучших, называется ПИД.

ПИД означает «пропорциональный», «интегральный» и «производный». Пропорциональное значение определяет реакцию на текущую ошибку, интегральное значение определяет реакцию на основе суммы недавних ошибок, а производное значение определяет реакцию на основе скорости изменения ошибки. Это три распространенных математических метода, которые применяются для достижения заданного значения рабочего процесса. В случае LinuxCNC, процессом, которым мы хотим управлять, является фактическое положение оси, а заданной точкой является заданное положение оси.

ПИД-контур, ПИД означает «пропорциональный», «интегральный» и «производный»
Figure 2. ПИД-контур

Настраивая три константы в алгоритме ПИД-регулятора, контроллер может обеспечить управляющее действие, разработанное для конкретных требований процесса. Реакцию контроллера можно описать с точки зрения реакции контроллера на ошибку, степени превышения контроллером заданного значения и степени колебаний системы.

4.2. Пропроциональный член

Пропорциональный член (иногда называемый коэффициентом усиления) вносит изменения в выходной сигнал, пропорциональные текущему значению ошибки. Высокий пропорциональный коэффициент усиления приводит к значительному изменению выходного сигнала при заданном изменении ошибки. Если пропорциональное усиление слишком велико, система может стать нестабильной. Напротив, небольшой коэффициент усиления приводит к небольшому выходному отклику на большую входную ошибку. Если пропорциональное усиление слишком низкое, управляющее воздействие может быть слишком малым при реагировании на возмущения в системе.

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

4.3. Интегральный член

Вклад интегрального члена (иногда называемый сбросом) пропорционален как величине ошибки, так и ее продолжительности. Суммирование мгновенной ошибки по времени (интегрирование ошибки) дает накопленное смещение, которое должно было быть исправлено ранее. Накопленная ошибка затем умножается на интегральный коэффициент усиления и добавляется к выходному сигналу контроллера.

Интегральный член (при добавлении к пропорциональному) ускоряет движение процесса к заданному значению и устраняет остаточную установившуюся ошибку, которая возникает при использовании только пропорционального регулятора. Однако, поскольку интегральная составляющая реагирует на накопленные в прошлом ошибки, это может привести к тому, что текущее значение выйдет за пределы заданного значения (пересечет заданное значение и затем создаст отклонение в другом направлении).

4.4. Производный член

Скорость изменения ошибки процесса рассчитывается путем определения наклона ошибки во времени (т. е. ее первой производной по времени) и умножения этой скорости изменения на коэффициент усиления производной.

Производный член замедляет скорость изменения выходного сигнала контроллера, и этот эффект наиболее заметен вблизи уставки контроллера. Следовательно, управление по производной используется для уменьшения величины перерегулирования, создаваемого интегральным компонентом, и улучшения общей стабильности процесса контроллера.

4.5. Настройка обратной связи

Если параметры ПИД-регулятора (коэффициенты пропорционального, интегрального и производного членов) выбраны неправильно, вход управляемого процесса может быть нестабильным, т. е. его выходной сигнал варируется с осцилляциями или без них и ограничивается только насыщением или механическим прерыванием. Настройка контура управления представляет собой настройку его параметров управления (усиление/зона пропорциональности, интегральное усиление/сброс, производное усиление/скорость) до оптимальных значений для желаемой реакции управления.

4.6. Ручная настройка

Простой метод настройки заключается в том, чтобы сначала установить значения I и D на ноль. Увеличивайте P до тех пор, пока выходной сигнал контура не начнет колебаться, затем P следует установить равным примерно половине этого значения для отклика типа затухание на четверть амплитуды. Затем увеличивайте I до тех пор, пока любое смещение не станет правильным за достаточное для процесса время. Однако слишком много I вызовет нестабильность. Наконец, при необходимости увеличивайте D до тех пор, пока контур не будет достаточно быстро достигать заданного значения после нарушения нагрузки. Однако слишком большое значение D приведет к чрезмерному отклику и перерегулированию. Быстрая настройка контура ПИД-регулятора обычно слегка выходит за пределы диапазона, чтобы быстрее достичь заданного значения; однако некоторые системы не допускают перерегулирования, и в этом случае требуется система чрезмерного демпфирования с обратной связью для которой потребуется настройка P, значительно меньшая, чем половина настройки P, вызывающей колебания.

5. RTAI

Интерфейс приложений реального времени (RTAI) используется для обеспечения наилучшей производительности в реальном времени (RT). Исправленное ядро RTAI позволяет писать приложения со строгими ограничениями по времени. RTAI дает вам возможность использовать такие вещи, как генерация шаговых импульсов, которые требуют точных временных параметров.

5.1. ACPI

Расширенный интерфейс конфигурации и питания (ACPI) имеет множество различных функций, большинство из которых влияют на производительность RT (например: управление питанием, отключение питания ЦП, масштабирование частоты ЦП и т. д.). В ядре LinuxCNC (и, возможно, во всех ядрах с исправлениями RTAI) ACPI отключен. ACPI также заботится об отключении системы после начала выключения, поэтому вам может потребоваться нажать кнопку питания, чтобы полностью выключить компьютер. Группа RTAI улучшила это в последних выпусках, поэтому ваша система LinuxCNC в конце концов может отключиться сама по себе.

6. Варианты оборудования интерфейса компьютера/станка

6.1. litehm2/rv901t

Litehm2 — это независимый от платы порт прошивки HostMot2 FPGA. Первой поддерживаемой платой является linsn rv901t, которая изначально была построена как плата контроллера светодиодов, но благодаря наличию ввода-вывода она хорошо подходит для работы в качестве контроллера машины. Она предлагает около 80 портов ввода-вывода с буферизацией 5 В и может переключаться между всеми входами и всеми выходами. его также легко модифицировать, чтобы разделить порты пополам между входом и выходом. Rv901t подключается к компьютеру через Gigabit или 100Mbit Ethernet.

Litehm2 основан на платформе LiteX, которая поддерживает широкий спектр плат FPGA. В настоящее время поддерживается только rv901t, но поддержка большего количества плат находится в стадии разработки.

Дополнительную информацию можно найти по адресу https://github.com/sensille/litehm2.