LinuxCNC Integrators Manual Глава II - Аппаратное обеспечение (Hardware)

Материал из cnc-club
Перейти к навигации Перейти к поиску

LinuxCNC Integrators Manual Глава II - Аппаратное обеспечение (Hardware)

Часть I Конфигурация

Глава 2 - Аппаратное обеспечение (Hardware)

2.1 Latency Test

Latency (латентность) это время которое требуется компьютеру для того, чтобы остановить то что он делает и ответить на внешний запрос (событие). Для EMC2 событием является BASE_THREAD которая делает периодичный "стук сердца" который служит референс таймером для импульсов шагов. Чем меньше latency тем быстрее вы можете запускать "стук сердца" и тем быстрее и плавнее будут импульсы шагов.

Латентность гораздо важнее чем скорость процессора. Слабенький Pentium II который отвечает на прерывания в пределах 10 миллисекунд каждый раз может давать лучшие результаты, чем последний P4 Hyperthreading beast ("мультипоточный зверь").

Процессор это не единственный фактор определяющий латентность. Материнская плата, видео карта, USB порты и множество других вещей могут ухудшить латентность. Лучший путь определить с чем вы имеете дело - запустить RTAI latency test.

Генерирование импульсов шагов на уровне программного обеспечения имеет одно большое преимущество - это бесплатно. Практически каждый компьютер имеет параллельный порт, который подходит для вывода импульсов шагов, которые генерируются программным обеспечением. Однако, импульсы шагов также имеют несколько недостатков:

  • ограниченная максимальная частота шагов
  • дрожание в сгенерированных импульсах
  • нагрузка на процесор


Лучший способ определить с чем мы имеем дело - запустить HAL latency test. Чтобы запустить тест, откройте окно терминала (консоль) Applications/Accessories/Terminal (Ubuntu) и выполните следующую комманду:

latency-test

Вы должны увидеть что-то похожее на это:

[attachment=0:2z9xfok9]latency test emc2.png[/attachment]

Во время работы теста, вы должны нагружать компьютер. Двигайте окна по всему экрану. Лазьте по интернету. Копируйте большие файлы по всему диску. Проигрывайте музыку. Запустите OpenGL программу, такую как glxgears. Идея в том, чтобы проверить возможности компьютера а то время пока latency test наблюдает какие значения латентности можно получить в худшем случае.

ВНИМАНИЕ: Не запускайте EMC2 или Stepconf во время работы latency test. Важные числа это "max jitter". На примере сверху, он 7555 наносекунд, или 7.5 микросекунд. Запишите это число, и введите его в Stepconf когда будет необходимо.

На примере сверху, latency-test был запущен только несколько секунд. Вы должны выполнять тест в течении как минимум нескольких минут; иногда наихудшие значения не появляется достаточно часто, или появляется только после определенного действия. Например, одна материнская плата Intel, работающая достаточно хорошо большинство времени, раз в 64 секунды показывает латентность 300 мкс. К счастью, это было поправимо (см. http://wiki.linuxcnc.org/cgi-bin/emcinf ... gSMIIssues).

Так что же значат результаты? Если значение Max Jitter меньше 15-20 микросекунд (15000-20000 наносекунд), компьютер должен давать очень хорошие результаты в генерации шагов. Если значение Max Jitter больше похоже на 30-50 микросекунд, вы все еще можете получать хорошие результаты, но максимальная частота шагов может быть немного расстраивающей, особенно, если вы используете микрошаг или ходовые винты с очень маленьким шагом. Если числа 100 микросекунд или более (100 000 наносекунд), тогда компьютер не очень хороший кандидат для EMC, независимо от того используете ли вы программную генерацию шагов или нет.

Отметим, что даже если вы получаете высокие числа, могут быть пути их улучшения. Один компьютер имел очень плохую латентность (несколько миллисекунд) когда использовалась встроенная видео карта. Но 5-ти долларовая б/у видеокарта решила проблему - EMC не требует топового железа. Для большей информации смотрите главу Настройка Шаговых двигателей (24).


2.2 Адрес порта

Для тех, кто делает свое собственное аппаратное обеспечение, одной из возможных подстраховок от закорачивания / сжигания встроенного параллельного порта или даже всей материнской платы может быть использование дополнительной платы LPT порта. Даже если вам не нужен дополнительный защитный слой, дополнительная плата параллельного порта это хороший путь добавить дополнительные вводы и выводы для EMC2,

Например хорошая PCI карта построенная на чипсете Netmos 9815. У нее хорошие +5V сигналы, и она может идти с одним или двумя портами.

Чтобы найти I/O адрес для этих плат, откройте окно терминала и используйте команду листинга PCI:

lspci -v

Ищите записи содержащие "Netmos". Пример для 2-х портовой карточки:


0000:01:0a.0 Communication controller: Netmos Technology PCI 9815 Multi-I/O Controller (rev 01)
      Subsystem: LSI Losgic / Symbios Logic 2POS (2 port parallel adapter)
      Flags: medium devsel, IRQ 5
      I/O ports at b800 [size=8]
      I/O ports at bc00 [size=8]
      I/O ports at c000 [size=8]
      I/O ports at c400 [size=8]
      I/O ports at c800 [size=8]
      I/O ports at cc00 [size=16]


Экспериментальным путем я определил, что первый порт (порт на плате) использует третий адрес из листа (c000), а второй порт (тот который подсоединяется плоским кабелем) использует первый адрес из листинга (b800).

Вы можете открыть редактор и записать адреса в нужные места в ваш .hal файл.


loadrt hal_parport cfg="0x378 0xc000"


Вы также должны указать EMC запускать функции "чтения" и "записи" для второй платы. Например:


addf parport.1.read base-thread 1
addf parport.1.write base-thread -1


Пожалуйста отметьте, что ваши значения будут другими. Платы Netmos являются Plug-N-Play платами и могут изменять свои настройки в зависимости от слота в который вы их вставите, поэтому если вы захотите "залезть под капот" и поменять платы местами, не забудьте проверить эти значение перед запуском EMC.

Комментарии к главе:

Можно настроить дополнительный параллельные порты используя графические утилиты для настройки (stepconf и pncconf).


Оглавление книги 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 - Виртуальная панель управления