Страница 6 из 19

Re: Halcompail и драйвер.

Добавлено: 02 фев 2016, 23:08
Lexxa
Давайте вот с чего начнем.
1) С какой периодичностью планивровщик расчитывает траекторию и обновляет axis.n.motor-pos-cmd, servo-thread?
2) С какой периодичностью обновляется pid.n.output, тоже servo-thread?

Если я правильно понимаю, то и то и другое обновляется с servo-thread.
Как их задать жестко и чтоб не плавали?
base-thread (the high-speed thread): this thread handles items that need a fast response, like making step pulses, and reading
and writing the parallel port.
servo-thread (the slow-speed thread): this thread handles items that can tolerate a slower response, like the motion controller,
ClassicLadder, and the motion command handler.
motion - Accepts NML motion commands, interacts with HAL in realtime.
axis - Accepts NML motion commands, interacts with HAL in realtime.
classicladder - Realtime software PLC based on ladder logic. See Classic Ladder manual for more information.
threads - Creates hard realtime HAL threads.
[EMCMOT]Base period =50000- the Base task period in nanoseconds.
[EMCMOT]SERVO_PERIOD = 1000000 - This is the "Servo" task period in nanoseconds.
[EMCMOT]TRAJ_PERIOD = 100000 - This is the Trajectory Planner task period in nanoseconds.

[TASK]CYCLE_TIME = 0.010 - The period, in seconds, at which TASK will run. This parameter affects the polling interval when waiting for motion to complete, when executing a pause instruction, and when accepting a command from a user interface. There is usually no need to change this number.
Поехали.
[EMCMOT]SERVO_PERIOD = 1 мкс - По идее разработчика, это период обновления PID регулятора, так?
[EMCMOT]TRAJ_PERIOD =0.1 мкс - Период расчета нового положения для оси.
[TASK]CYCLE_TIME - не понятно, о каких ожиданиях завершения движения идет речь.

Т.е. каждую 0.1 мкс планировщик расчитывает новое положение для осей, а каждую 1 мкс должен обновляться PID?

Теперь, если принять, что
Nick писал(а):Ну при каждом вызове servo-thread (в компе) он не ровно 1 000 000 а +- 25 000, а то и более.
То получается, что [EMCMOT]TRAJ_PERIOD = 100000 +-25% или же TRAJ_PERIOD жесткий?
Если он жесткий, тогда в помойку [EMCMOT]SERVO_PERIOD и использовать каждый 10-й импульс от TRAJ_PERIOD.
Или я перепутал всё?

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 00:38
T00T
Lexxa писал(а):Т.е. каждую 0.1 мкс планировщик расчитывает новое положение для осей, а каждую 1 мкс должен обновляться PID?
Лёх ну во-первых Всё где ты писал мкс - это мс !!!!!! :)

Во-вторых я бы хотел вернуться к проблеме формирования сигнала step!!!

вопросы так и не обсудили следующие:
T00T писал(а):Ладно и такой вопрос как в функции, считать системное время, ну или как ещё, что бы узнать сколько реально времени прошло с момента её последнего вызова?
Вопрос про разрядность я так понимаю безсмысленно обсуждать, ну тогда походу проще будет реализовывать так:
T00T писал(а): stepgen. axis.position.cmd(длинна перемещения) -> драйвер (количество шагов, Fзаполнения) -> Контроллер (тут step/dir)-> драйвер двигателя ->двигатель.

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 02:52
Serg
Lexxa писал(а):Или я перепутал всё?
Всё несколько сложнее.
TRAJ_PERIOD - периодичность работы планировщика (не совсем верно, но в данном случае такое упрощение сойдёт), однако длительност-ь цикла работы планировщика заметно меньше этого значения.
Lexxa писал(а):100000 +-25%
Nick не совсем верно написал. Длительность сервоцикла не "плавает" на 25%. При расчёте длительности делается поправка на величину латентности. Если опять упростить для наглядности, то время ожидания начала следующего сервоцикла завершится не через 1мс, а чуть раньше, на величину латентности, произойдёт вычисление сколько именно времени прошло и если меньше 1мс, то пауза продолжится чтобы получилось ровно 1мс.

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 08:47
T00T
Nick писал(а):1 000 000 а +- 25 000
Уффф тяжко мне с вами..... Ну вроде у ника тут 2,5%
Ну и ладно, а я пока железку пилить буду.....

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 18:37
Lexxa
Так, документально подтвердить инфу о 1 нс у фанука я не могу, поэтому допускаю, что могу ошибиться.
Однако вот какой нюанс.
Сравнивать linuxcnc ни с сименсом ни с фануком не корректно по той причине, что архитектуры разные.
Зато можно наблюдать колоссальную схожесть с Heidenhain 320
Коротко о ней:
CPU Celeron 400МГц, 512 МБ ОЗУ.
Управление аналоговыми приводами +-10В до 5 осей, линейная интерполяция одновременно по 4, круговая по трем.
Время цикла обработки блока: 6 мс,
Время цикла интерполяции 3 мс.
Куча циклов
в качестве ОС - HEROS (linux свой),
Окружение рабочего стола - XFCE.

Итак, имеем Linuxcnc на P4 2400MHz, который тормозит и HH320 на Celeron 400MHz без тормозов.
Вывод: что-то в супе с Ubuntu не хватает, чтоб она взяла и резко перестала тормозить.
Почему же никакие X не мешают нормально работать HH, а у linuxcnc они так влияют на латенси?

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 18:44
PKM
Lexxa писал(а): в качестве ОС - HEROS (linux свой)
Главная причина нормальной latency
Lexxa писал(а):Время цикла обработки блока: 6 мс,
Время цикла интерполяции 3 мс.
Не очень хорошие показатели. У линукса в 6 раз меньше, но как раз и процессор в 6 раз производительнее :)

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 19:57
Lexxa
Согласен, но нужны ли такие короткие времена?

Re: Halcompail и драйвер.

Добавлено: 03 фев 2016, 21:22
Serg
Lexxa писал(а):Итак, имеем Linuxcnc на P4 2400MHz, который тормозит и HH320 на Celeron 400MHz без тормозов.
Я могу обычный Linux так урезать, оставив только самое необходимое, что он будет резвее HH320 на том-же Celeron 400MHz, но это нафик не надо.
Lexxa писал(а):Согласен, но нужны ли такие короткие времена?
А как-же
Lexxa писал(а):Он каждую нс не 1 дискрету едет, а получает новое положение, в котором может быть и 1 и 1000 дискрет. Там все на ПЛИС.
? :)

Re: Halcompail и драйвер.

Добавлено: 05 фев 2016, 16:23
Nick
Некоторые сообщения перенесены в новую тему: Что можно урезать в Linux/LinuxCNC, чтобы сделать меньше Lat #1.

Re: Halcompail и драйвер.

Добавлено: 01 мар 2016, 16:53
T00T
Итак, ну пока у меня нет возможности испытывать это всё....
Если есть желающие тестировать, то могу подготовить через неделю тестовый экземпляр......(Желательно из России, так проще с доставкой и оплатой).

Re: Halcompail и драйвер.

Добавлено: 01 мар 2016, 20:19
Lexxa
T00T, могу)

Re: Halcompail и драйвер.

Добавлено: 01 мар 2016, 20:52
T00T
Мне кажется у тебя руки до этого дойдут ещё дольше чем у меня )

Re: Halcompail и драйвер.

Добавлено: 01 мар 2016, 21:52
Lexxa
ну ты на меня комплектик все равно собери))

Re: Halcompail и драйвер.

Добавлено: 02 мар 2016, 11:00
T00T
тебе он когда нужен будет, а то как говорил, 2 недели прошли 2 недели назад :)

Re: Halcompail и драйвер.

Добавлено: 02 мар 2016, 12:26
Lexxa
Ну к 1 апреля хотелось бы

Re: Halcompail и драйвер.

Добавлено: 03 мар 2016, 11:38
T00T
Появилось немного времени между заказами.....
Вчера дописал прошивки плисин, на MAIN. В общем она готова.
Нужно прикрутить масштабный коэффициент для энкодеров в драйвере. И на днях подключу на ось станка.....
На столе всё работает, да и PWM уже тестировался на станке, так что всё должно работать!!!!!!!!!!!
Проверим......



Желающих поучаствовать так и не нашлось?

Re: Halcompail и драйвер.

Добавлено: 03 мар 2016, 18:52
T00T
К СТАРТУ ГОТОВ!!
тестовый комплект

Re: Halcompail и драйвер.

Добавлено: 03 мар 2016, 23:08
Сергей 67
А не работает!

Re: Halcompail и драйвер.

Добавлено: 04 мар 2016, 00:54
Lexxa
зреет вопрос - что именно?

Re: Halcompail и драйвер.

Добавлено: 04 мар 2016, 10:41
T00T
Не тот файл драйвера с собой взял, PWM не запускалось.....