LinuxCNC / Настройка

Материал из Wiki CNC
Версия от 10:33, 13 декабря 2019; Neller (обсуждение | вклад) (Справочник по HAL файлу)
Перейти к навигации Перейти к поиску

Содержание

Введение

В LinuxCNC настройка системы под заданное оборудование, происходит отлично от стандартного графического интерфейса (Mach3 или NC-Studio). Большинство необходимых параметров задаются внесением изменений в текстовые конфигурационные файлы *hal и *ini.

Примечание: В составе LinuxCNC есть приложение с графическим интерфейсом пользователя для настройки конфигурации станка (Stepconf), однако, как показывает практика некоторые изменения приходится вносить в конфигурационные файлы вручную. Именно поэтому в данном руководстве вся настройка и внесение изменений происходят через *.hal и *.ini файлы.

Что же такое *.hal и *.ini файлы? Давайте обратимся к теории.

hal - Hardware Abstraction Layer (Слой аппаратных абстракций) - конфигурационный файл Linux, отвечающий за связь аппаратной и программной части станка.
К примеру в данном файле содержится информация: адрес устройства ввода-вывода (PCI-LPT или другой контроллер), назначение портов ввода\вывода функциям системы и др.

ini - файл конфигурации, содержащий настройки системы. К примеру в данном файле содержится информация: скорости, ускорения, количество импульсов на мм, скорость поиска домашнего положения, пределы перемещений и др.

Обратите внимание, что ниже указаны параметры и значение каждого из них. Для удобства работы мы постарались сделать раздел F.A.Q. в котором постараемся систематизировать информацию по темам (к примеру, как настроить датчики домашнего положения и др.). Ниже перечислены все, необходимые параметры для настройки вашего станка под управлением LPT (в руководстве используется контроллер LPT-DPTR 1.03)

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

Настройка

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

В начале определим местоположение наших файлов конфигурации. По умолчанию файлы конфигурации расположены по адресу home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal и home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal. Обратите внимание, в директории config лежат все созданные конфигурации. Конфигурация может отличаться в зависимости от названия станка к примеру, Cutter_GR и другое. В любом случае, название ярлыка для запуска на рабочем столе соответствует названию папки директории с конфигурацией.


Настройка адреса ввода\вывода LPT-PCI

Настройка системы LinuxCNC для работы с LPT-портом начинается с указания адреса ввода вывода LPT в вашем ПК. В случае использования материнской платы не имеющего на борту встроенного LPT порта, рекомендуется воспользоваться платой PCI-LPT c чипом CH351Q (ссылка на сайт CNC-Technology).

Для того, чтобы увидеть установленные в системный блок PCI устройства нужно открыть эмулятор терминала и набрать команду:
lspci –vv
В командной строке отобразятся все устройства, доступные операционной системе для работы. Среди них необходимо найти Paralell controller. Необходимый нам Region 0, адрес данного устройства, к примеру c000.

Данный адрес необходимо указать в *.hal файле конфигурации:
linuxcnc/configs/Cutter_ST/ST.hal
Обратите внимание, что название hal файла может отличаться. Однако практически всегда название ярлыка для запуска на рабочем столе соответствует названию конфигурационного файла.

В открытом файле Cutter_ST.hal изменить строку loadrt hal_parport cfg=”0x378 out” на loadrt hal_parport cfg=”0xс000 out”, где 0xс000 адрес п0орта pci-платы, который мы определили ранее. Теперь мы можем запустить linuxcnc ярлыком на рабочем столе и убедиться что станок перемещается.

Настройка работы шаговых двигателей

Необходимо убедиться, что в .hal (к примеру /home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal).файле верно назначены пины для (к примеру Cutter_ST.hal).

Настройка датчиков домашнего положения

Настройка работы шпинделя

Настройка сети и подключение сетевой папки

Настройку общего доступа к папке будем производить на компьютере под управлением ОС Windows. А подключаться к ней будем уже с компьютера с ОС Debian (LinuxCNC-Craftex). Создаём папку в Windows где-нибудь, кликаем правой кнопкой мыши, выбираем "Свойства" - "Доступ" и жмём "Расширенная настройка":
Share files windows 1.png
Далее проставляем галочку "Открыть общий доступ к этой папке" и нажимаем "Применить":
Share files windows 2.png
Всё, мы расшарили папку в Windows и к ней можно подключаться. Как же все таки подключиться из Debian к нашей сетевой папке? Откроем файловый менеджер (Thunar). И выберем "Обзор сети".
Без имени.png
Осталось найти сетевую папку в сети и ввести пароль и логин пользователя Windows. Как же подключиться без ввода пароля к Windows папке из Debian? Нужно в Windows открыть "Центр управления сетями и общим доступом", выбрать "Изменить дополнительные параметры общего доступа":
Share files windows 7.png
В пункте "Все сети" в самом низу будет пункт "Общий доступ с парольной защитой":
Share files windows 8.png
Надо отключить общий доступ с парольной защитой и "Сохранить изменения".

Настройка удаленного доступа

Удаленный доступ к Debian можно осуществить несколькими способами. Например через терминальный или графический доступ.

Терминальный или SSH(Secure Shell) доступ полезен, когда достаточно функционала командной строки для осуществления деятельности, такой доступ очень экономичен в плане интернет трафика. SSH сервер уже встроен в минимальную сборку с Craftex. Для доступа из ОС Windows потребуется лишь установленная программа Putty.
Putty.jpg
Если вам привычнее работать с файлам в графическом обозревателе можно воспользоваться WinSCP, который работает по тому же SSH протоколу.
Winscp.jpg
Winscp2.jpg
Надо сказать, что данный способ требует белого ip адреса для компьютера с Debian. Если у вас есть роутер, тогда потребуется пробросить стандартный для ssh порт № 22.

Графический доступ можно осуществлять через тот же SSH и программы Putty+Xming или протокол VNC, но как показывает практика, даже в одной локальной сети задержки графики настолько большие, что комфортно работать невозможно. Поэтому придется пользоваться сторонним ПО. Всем известный Team Viewer уже встроен в образ с Craftex. Запустите его и получите доступ из Windows после ввода вашего ID и пароля.
TV.png

Справочник параметров *.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.

DEFAULT_LINEAR_VELOCITY

Установленная по умолчанию скорость перемещений, установленная при первом запуске LinuxCNC.
DEFAULT_LINEAR_VELOCITY = 100.0 Скорость по умолчанию 100 мм/сек.

MAX_LINEAR_VELOCITY

Группа [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

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

Пины делятся на пины in (в которые можно писать) и out (из которых можно читать). Также пины бывают разных типов данных:

BIT - или 1 или 0
FLOAT - число с плавующей запятой.
S32 - целое число от -2147483648 до 2147483647
U32 - положительное (беззнаковое) целое число от 0 до 4294967295

Для обращения имеется следующая запись:

 (имя компонента).(имя пина)

Например:

 motion.analog-out-00

, где motion- имя компонента, analog-out-00 - имя пина, этот пин выходной и его номер 00.


Компоненты могут иметь некоторые параметры (один или несколько), а также могут "соединяться" между собой посредством связей (сигналов), при этом каждая связь имеет свое имя.

  (команда) (имя связи) (источник "сигнала") (приёмник "сигнала")
  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 файла.

Правила соединения пинов и сигналов hal

  • Сигнал принимает значение пина out, и передает его пинам in.

Signal.png

  • Любой пин может быть подключен только к 1 сигналу.

2signal.png

  • К одному сигналу можно подключить только один пин out (в противном случае будет не ясно из какого пина брать значение для сигнала).

2-out.png

  • К одному сигналу может быть подключено несколько пинов in.

Signal.png

  • Если требуется соединить два пина типа out - то нужно использовать дополнительные компоненты, например компонент and2.

And2.png

Основные команды HAL файла

loadrt

loadrt - загружает компонент HAL реального времени. Например,

  loadrt stepgen step_type=0,0,0,0 

, что означает: загружаем (loadrt) компонент stepgen с некоторыми установками (step_type=0,0,0,0).

addf

addf - добавляет компонент реального времени в поток и определяет место выполнения его функции: в высокоскоростном потоке (base-thread) или в низкоскоростном потоке (servo-thread).

Функции не работают сами, их надо вызывать. В hal есть один или несколько потоков. Обычно это:

servo-thread - "медленный поток" в котором происходят все расчеты. Стандартный период 1мс (частота 1кГц). base-thread - "быстрый поток" в нем выполняются быстрые операции, в этом потоке нельзя использовать float. Стандартный период 15-50мкс (частота около 20кГц) в зависимости от компьютера. Как только мы добавляем функцию в поток, она начинает вызываться раз в период потока. Например, функция компонента parport.write, которая обновляет значения порта LPT добавляется в base-thread. Эта функция вызывается с частотой base-thread (20кГц), что позволяет управлять драйвером шагового двигателя. А функция для расчета скорости, положения и обратной связи stepgen более медленная и нет большой необходимости вызывать ее часто, поэтому она работает в servo-thread (1кГц).

Итак, чтобы наш компонент работал надо добавить его функцию или функции к потокам.

Подробное описание функций смотрите в справке к компоненту.

  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

ВАЖНО! Эти команды должны быть обязательно! Именно они определяют: какими компонентами мы собираемся пользоваться и какие требования к этим компонентам мы предъявляем по скорости.

net

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).

setp

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

Оба варианта работают.

Дополнительные возможности HAL

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

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

Параметры позволяют задать режим работы функции или оценить ее работу.

Таблица истинности показывает зависимость состояния выходного пина от состояний входных.

and2

Этот компонент имеет 2 входных и один выходной пин.

Использование

and2 [номер функции=N] | [имена=имя1[,имя2...]]

Функции

and2.n

Пины

and2.N.in0 (bit, in)
and2.N.in1 (bit, in)
and2.N.out (bit, out)

Таблица истинности

And22.png

not

Компонент является битовым инвертором.

Использование

not [номер функции=n] | [имена=имя1[,имя2...]]

Функции

not.all
not.n

Пины

not.n.in (bit, in)
not.n.out (bit, out)

Таблица истинности

Not.png

or2

Данный компонент реализует логику ИЛИ с двумя входами.

Использование

or2[номер функции=n] | [имена=имя1[,имя2...]]

Функции

or2.n

Пины

or2.n.in0 (bit, in)
or2.n.in1 (bit, in)
or2.n.out (bit, out)

Таблица истинности

Or2.png

xor2

Компонент реализует логику ИСКЛЮЧАЮЩЕГО ИЛИ с двумя входами.

Использование

xor2[номер функции=n] | [имена=имя1[,имя2...]]

Функции

xor2.n

Пины

xor2.n.in0 (bit, in)
xor2.n.in1 (bit, in)
xor2.n.out (bit, out)

Таблица истинности

Xor2.png

Ниже приведен пример использования компонента and2.

loadrt and2 count=1
addf and2.0 servo-thread
net my-sigin1 and2.0.in0 <= parport.0.pin-11-in
net my-sigin2 and2.0.in1 <= parport.0.pin-12-in
net both-on parport.0.pin-14-out <= and2.0.out

Пример конфигурационного файла 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
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 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
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 estop-out       => parport.0.pin-01-out
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-invert 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-06-out-invert 1
net astep           => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir            => parport.0.pin-09-out
net spindle-cw      => parport.0.pin-16-out
setp parport.0.pin-16-out-invert 1
net spindle-pwm     => parport.0.pin-14-out
setp parport.0.pin-16-out-invert 1
net xenable         => parport.0.pin-17-out
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
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
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 estop-out <= iocontrol.0.user-enable-out
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

Приложения

Ссылки на дополнительную документацию

Вы можете найти полное описание системы 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 на различных ПК

Показатели 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