PCI контроллер. Halcompail и драйвер.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

ethernet-кадр и так передаётся сразу без задержек.
подробности можно подсмотреть в драйвере сетевых моделей Mesa.

Вторая цитата касалась синхронного режима RS232-порта, который к сожалению в современных писюковых COM-портах невозможен.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Вов, самый популярный вопрос. Зачем это все нужно?
:bender:
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Lexxa писал(а):Вов, самый популярный вопрос. Зачем это все нужно?
Что конкретно?
UAVpilot писал(а):ethernet-кадр и так передаётся сразу без задержек.
Просто пробую тут пакетики туда сюда слать...
Короче - Ubuntu+ железка.
Железка делает так: к ней поступает пакет, она его принимает и тут же заворачивает обратно.(Железка на микроконтроллере)
, а со стороны писюка так: формируется пакет и отсылается, затем вставлена задержка и открывается сокет на приём, с ограничением по времени, И приём завернут в цикл 5 раз. Цель была поэксперементировать с задержкой и временем открытия сокета.
Щас точно не помню точные времена, позже напишу. Но картина была примерно такой типа если задержку сделать 10мкс, ну и время сокета 10мкс, То ответ придёт во втором чтении. И вообще какие времена не ставь ответ придёт либо в первом, либо во втором чтении.
Но для того, что бы ответ пришёл в первом чтении, время задержки нужно поставить около 4-5MC!!!! А это больше сервоцикла. Думаю как измерить время одного кольца - Отослать и принять.
Я не волшебник я пока учусь......
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Можно tcpdump'ом подглядеть когда именно пакеты уходят-приходят...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

T00T писал(а):Просто не хотелось брать серво период как известную величину, а измерять время непосредственно, ну да ладно.
ИМХО правильно - длительность сервопериода будет плавать, причем прилично. Плюс, что делать при не кратном количестве шагов на период.
stepgen живет отдельно от servo-period. Ему раз в период дают задание по положению, дальше он долбит сам.
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

А причём тут вообще stepgen. axis.position.cmd(длинна перемещения) -> драйвер (количество шагов, Fзаполнения) -> Контроллер (тут step/dir)-> драйвер двигателя ->двигатель.
И если servo-period плавает, то к чему привязываться. В общем много вопросов.
Работать будет и тот вариант и тот, буду пробовать. На всё просто нужно время, а пока его нет :(.
Nick писал(а):Плюс, что делать при не кратном количестве шагов на период

Это не проблема! Главное чтоб они уместились в этот период :).
Я не волшебник я пока учусь......
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

T00T писал(а):драйвер (количество шагов, Fзаполнения) -> Контроллер (тут step/dir)-
Вот это и делает stepgen (или тот который просто компонент, или тот, который встроенный в месу)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Nick, объясни, как сервопериод может плавать, это же главный параметр сервосистемы?
:bender:
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Nick писал(а):Вот это и делает stepgen (или тот который просто компонент, или тот, который встроенный в месу)
Ну про stepgen я читал в мануале. NICK вопрос а зачем все покупают 7i76, если степген прекрасно управляет шаговиками? В чём недостатки stepgen'а?
И стоит ли тогда заморачиваться. Просто выводим значение сигналов степ/dir в порт и всё? Да, я только сейчас подумал. А собственно как эти сигналы наружу выводить степ/dir после stepgen ? Ну к примеру есть сигнал step пусть его длительность 5мкс(это даже не много) как такой сигнал выводить наружу?
Т.е. с частотой 400кГц необходимо вызывать функцию, опрашивающую этот сигнал и засовывать в какой нибудь порт. Я просто наверно чего то не догоняю.

Ладно и такой вопрос как в функции, считать системное время, ну или как ещё, что бы узнать сколько реально времени прошло с момента её последнего вызова?
Я не волшебник я пока учусь......
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Halcompile и драйвер

Сообщение PKM »

T00T писал(а):Ну про stepgen я читал в мануале. NICK вопрос а зачем все покупают 7i76, если степген прекрасно управляет шаговиками? В чём недостатки stepgen'а?
1. Степген дает неравномерный сигнал из-за latency
2. Частота очень ограничена, 25-50 кГц
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

T00T писал(а):Т.е. с частотой 400кГц необходимо вызывать функцию, опрашивающую этот сигнал и засовывать в какой нибудь порт. Я просто наверно чего то не догоняю.
Вот для этого и покупают 7i76.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Lexxa писал(а):Nick, объясни, как сервопериод может плавать, это же главный параметр сервосистемы?
Ну при каждом вызове servo-thread (в компе) он не ровно 1 000 000 а +- 25 000, а то и более.
Хотя, в принципе можем у себя отдельно его считать и хранить два набора переменных для текущего и для следующего серво периода.
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Ок я понял, ну и вопрос в догонку. Допустим предельная частота STEP - 100 кГц. servo-thread 1 000 000, ну в общем обмен данными с контроллером происходит с частотой примерно 1кГц.
Итак 100 кГц - соответствует максимальной скорости. А нам нужно чтоб мотор вращался со скоростью, ну скажем в 1000 раз меньше(рабочая подача), тогда грубо говоря чпу должна формировать один шаг за 10 периодов. Ну и грубо говоря минимальная скорость(мин частота для контроллера) - 1 шаг за servo-thread.
А меньшие скорости будут получаться за счёт того что не каждый период будет выставляться эта мин.скорость. Получаем диапазон скоростей от 1 до 100 импульсов за servo-thread. Теперь вопрос получается что в данном случае весь диапазон умещается в 8 bit? Есть ли смысл делать динамический диапазон частот более 8bit?(Если больше, то импульсы и так будут не в каждый servo-thread появляться, или это будет приводить к ошибкам.) Хотя весь вопрос будет заключаться в том когда этот импульс будет выставляться.
Я не волшебник я пока учусь......
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Немного не так всё происходит.
Планировщик траектории расчитывает, что ось должна проехать расстояние L за время t, где t как правило больше сервопериода. Это задание и передаётся stepgen'у в ближайшем сервоцикле. stepgen расчитывает количество импульсов и их частоту, чтобы равномерно заполнить ими всё время t и генерит эти импульсы. В течении этого времени в всех следующих сервоциклах ему не дают новых заданий т.к. все знают, что он ещё выполняет предыдущее.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Тогда собственно вопрос, какой диапазон скоростей нужно реализовывать
UAVpilot писал(а):т.к. все знают, что он ещё выполняет предыдущее.
- на самом деле это они так думают :) до какой стапени, ЭТИ ВСЕ знают о том что импульс, ну скажем через 500 servo-thread придёт. Вдруг у контроллера уже грубо не хватает разрядности(и он уже не придёт).(И так это работает в концепции управления по скорости. По положению не так!)

Блин, тут всё не так..... Дискретное перемещение.
T00T писал(а):Ладно и такой вопрос как в функции, считать системное время, ну или как ещё, что бы узнать сколько реально времени прошло с момента её последнего вызова?
Я не волшебник я пока учусь......
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

Nick писал(а):Ну при каждом вызове servo-thread (в компе) он не ровно 1 000 000 а +- 25 000, а то и более.
А ещё реалтайм называется........

Немой с хромым получается, что ж за системы такие поганые, что нельзя к системному таймеру привязать реальный процесс.
Вроде крутое железо на писюке, и всё такое, а какой нибудь микроконтроллер будет в сто раз реалтаймее чем писюк......
Я не волшебник я пока учусь......
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Очень для меня странно, что servo thread величина плюс минус километр. Я как то раньше думал, что это главный параметр быстродействия.

Накой бороться за латентность, если там все плавает? Тут даже не то что немой с хромым, тут слепой немой с глухим хромым.
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

И вновь мой любимый сименс ставлю в пример.
Синумерик 840d power line, 2000 года выпуска с ncu 572.2 имеет на борту процессор 486, 32 МБ ОЗУ и 8 МБ карту памяти с софтом и осью вместе взятыми. При этом она приспокойненько разруливает 9 осей с кучей циклов, трансформаций и прочего.
В линуксцнц имеем пороц p4, гиг оператиаы, целый жёсткий диск с математикой на 40 МБ и осью в сумме на нескольколько гигов. И при этом серво период гулят туда-сюда????
:bender:
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

Lexxa писал(а):Накой бороться за латентность, если там все плавает?
Образно говоря, заставляя писюк работать в жестоком реалтайме, мы навешиваем на какую-нибудь Феррари отвал и удивляемся, что получился довольно хреновый бульдозер :)
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

T00T писал(а):а самом деле это они так думают :) до какой стапени, ЭТИ ВСЕ знают о том что импульс, ну скажем через 500 servo-thread придёт.
потому что именно ЭТИ ВСЕ это всё предварительно рассчитали и дали задание stepgen'у "генерить N импульсов в течении времени T", они-то уж наверняка знают сколько будет длится время T. :)
Lexxa писал(а):В линуксцнц имеем пороц p4, гиг оператиаы, целый жёсткий диск с математикой на 40 МБ и осью в сумме на нескольколько гигов. И при этом серво период гулят туда-сюда????
Вопервых в синумерике сервоцикл тоже немного гуляет, осциллографом-анализатором это хорошо видно.
Вовторых возьми писюк, выкинь из работы дисковый контроллер (хотя-бы сделай RAMdisk и при загрузки копируй ОС и софт туда), а ещё лучше вместо полноценного ядра Linux загрузи что-то своё, заточенное исключительно на обслуживание ЧПУ софта (например тот-же DOS) и будет даже круче, чем у синумерика.
Сергей Саныч писал(а):Образно говоря, заставляя писюк работать в жестоком реалтайме, мы навешиваем на какую-нибудь Феррари отвал и удивляемся, что получился довольно хреновый бульдозер :)
Скорее наоборот: это как посмотреть гонки на феррари, потом сеть в "дом на колёсах" и удивляться почему он так не гоняет как феррари.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

Вернуться в «LinuxCNC»