|
|
  |
Система команд сервоконтроллера, обсудим? |
|
|
|
Feb 21 2009, 12:12
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(khach @ Feb 20 2009, 23:27)  Есть ли исходники цилиндрической интерполяции Джентльмены, скажите, плз, что мешает цилиндр.интерполяцию перевести в сплайны по осям? Цитата(dpss @ Feb 21 2009, 00:57)  Переход без торможения - это так называемый предварительный просмотр кадров. Еще один проход интерполятора. Т.е. склейка кадров и, может быть, в рамках одного полинома. Если не выключать оптимизм, в 4 квартале 2009 можно получить вовсе не монстроидальное решение на том же STR750. Цитата(Rst7 @ Feb 21 2009, 11:39)  как-то плохо эхо на RS485 ложится, не кажется? Что конкретно беспокоит? Пока я в девайсе заложил всегда включенный прием (т.е. для коллизий) и паузу в 3.5 символа - типо-таймаут если недополучили или неправильный строка. Посимвольного эха не будет - это и ежу понятно. Цитата(Rst7 @ Feb 21 2009, 14:30)  Кстати, об этом: Код /* reduced to 32 bits */ int32_t DDA1; // speed (dS/dt) int32_t DDA2; // acceleration (d2S/dt) int32_t DDA3; // accel.derivative (d3S/dt) В Маче фигурирует int64 в виде fixed point 32.32 Резать до 16.16 можно и по месту. Тогда для удобства сервостроителей вносим Код typedef struct
{ int32_t integer; uint32_t fractional; }fixpt64; и меняем этот кусок на Код fixpt64 DDA1; // speed (dS/dt) fixpt64 DDA2; // acceleration (d2S/dt) fixpt64 DDA3; // accel.derivative (d3S/dt) Нет возражений ? ЗЫ движок форума реально достал...
|
|
|
|
|
Feb 21 2009, 12:31
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Что конкретно беспокоит? Да уже ничего. Мерещилось посимвольное эхо. Сам дурак  Цитата Еще один проход интерполятора. Т.е. склейка кадров и, может быть, в рамках одного полинома. Если не выключать оптимизм, в 4 квартале 2009 можно получить вовсе не монстроидальное решение на том же STR750. Стоп-стоп. Какие еще монстроидальные решения? На сколько я понял в гинекологии того-же Mach'а, при выставленной где-то галочке он сам будет давать нам склеенные DDA. Склеенные - в смысле без торможений лишних. Цитата typedef struct { int32_t integer; uint32_t fractional; }fixpt64; А смысл? Код typedef long long fixpt64; да и всех делов.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 21 2009, 12:51
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Rst7 @ Feb 21 2009, 15:31)  Стоп-стоп. Какие еще монстроидальные решения? На сколько я понял в гинекологии того-же Mach'а, при выставленной где-то галочке он сам будет давать нам склеенные DDA. Склеенные - в смысле без торможений лишних. Тогда это вопрос к ув. khach Когда-то спросил у одного чела про линуксовые средства. Он мне ответил: "Какой нах линукс?! Мач!". Вопрос отпал  И по этому же поводу: ковырять опенсорс надо, но только если хочется сделать что-то свое, т.е. уже где-то глубоко в мозжечке засело глубинное понимание того, что надо делать. А просто копипастить исходники - будет зопа. Все уйдут далеко вперед, а мы будем чужой код прилаживать. Цитата А смысл? Код typedef long long fixpt64; да и всех делов. Предполагается, что этот файл будет для всех один. Можно так, можно эдак. По мне - пусть с явным разделением. Тогда еще и в union обернуть. Это единственный аргумент. Если в сад - напишите. Будет в сад.
|
|
|
|
|
Feb 21 2009, 13:15
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Предполагается, что этот файл будет для всех один. Можно так, можно эдак. По мне - пусть с явным разделением. Тогда еще и в union обернуть. Ну и что? Это ж для прошлого века, сейчас все компиляторы хавают long long без вопросов. А то потом вот такие уродцы генетические получаются: Код ((WTCubic*)&Cubic.Message)->d[axis].dda1.i = (signed long)(dda1[axis] >> 32); ((WTCubic*)&Cubic.Message)->d[axis].dda1.f = (unsigned long)(dda1[axis] & 0xFFFFFFFFuLL); ((WTCubic*)&Cubic.Message)->d[axis].dda2.i = (signed long)(dda2[axis] >> 32); ((WTCubic*)&Cubic.Message)->d[axis].dda2.f = (unsigned long)(dda2[axis] & 0xFFFFFFFFuLL); ((WTCubic*)&Cubic.Message)->d[axis].dda3.i = (signed long)(dda3[axis] >> 32); ((WTCubic*)&Cubic.Message)->d[axis].dda3.f = (unsigned long)(dda3[axis] & 0xFFFFFFFFuLL); Причем, заметьте, dda1[] объявлен как массив 64хбитных значений. А в WTCubic - криворучье
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 21 2009, 13:52
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Цитата(_Pasha @ Feb 21 2009, 14:51)  Тогда это вопрос к ув. khach Когда-то спросил у одного чела про линуксовые средства. Он мне ответил: "Какой нах линукс?! Мач!". Вопрос отпал  Линух в топку (хотя и было такое желание, когда контроллер с Эзернетом рассматривался, но слишком монстрически получалось). LinuxCNC только источник исходников, в котором есть много полезного - например интерполяция (в том числе и по скорости), компенсация люфтов на уровне управления моторами итд. Если бы были исходники Мачевского ЛПТшного дрыгоножества- то конечно бы использовал бы их, не надо было бы возиться с "особенностями реализации". Сплайн опасен в местах резкого изменения траектории- может нарисовать петлю около точки перелома и соответственно воткнуть фрезу. По скорости - при применении серв не всега получается ехать со скоростью, которую Мач прописывает в пакетах, на тяжелых станках и слабых сервоприводах разгон-остановка затягиваются, надо их в драйвер переносить. При использовании серв бывает приятно вести фрезу с постоянной нагрузкой на шпиндель- обратная связь от датчика тока/мощности на моторе шпинделя. Хотелось бы реализовать. Да кстати вопрос по интерполяции. Мач может выдать ребования на сферическую инерполяцию или она всегда будет цилиндрической (одна из точек центра интерполяции и начало и конец траектории всегда лежат в одной плоскости по одной из осей) или возможно требование сферической интерполяции? Вот по этой цитате из мануала следует что Мач может требовать от драйвера циркулярной интерполяции по двум осям и синхронизированной с ней линейной подачи по любой другой оси. Я правильно понял? Код 10.1.7 Arc Motion Any pair of the linear axes (XY, YZ, XZ) can be controlled to move in a circular arc in the plane of that pair of axes. While this is occurring, the third linear axis and the rotational axes can be controlled to move simultaneously at effectively a constant rate. As in coordinated linear motion, the motions can be co-ordinated so that acceleration and deceleration do not affect the path. If the rotational axes do not move, but the third linear axis does move, the trajectory of the controlled point is a helix
|
|
|
|
|
Feb 21 2009, 22:29
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(khach @ Feb 21 2009, 16:52)  Сплайн опасен ...может нарисовать петлю Если рассуждать логически, то это не косяки сплайна, а недостаточное кол-во элементарных перемещений, т.е. попытка "объять необъятное" одним интерполяционным интервалом. Можно даже ввести дополнительное условие на проверку "опасности" интервала - по знаку второй производной в начале и в конце планируемого движения. Цитата По скорости ... надо их в драйвер переносить. Спасибо! Технологические настройки будут в серваках обязательно, до них можно будет добраться, и копия, очевидно, будет в мастере - без нее никак в некоторых случаях. -Пересчет шага/скорости в реальные координаты в плавающем формате -Ограничения на скорость/ускорение/произв.ускорения. -Может быть, решится через токовую защиту в виде нормированных параметров. Пока думаю. Цитата вести фрезу с постоянной нагрузкой на шпиндель Штатными средствами - фигушки  Это будет ужЕ самодеятельной частью протокола, в котором предусмотрены регистры S(координата) V(скорость) M( момент) T(время) Если нам удастся утрясти быстрый протокол (с приращениями). Цитата Мач может выдать ребования на сферическую инерполяцию или она всегда будет цилиндрической В т.ч на сферическую Цитата Я правильно понял? ДА. Цитата(dpss @ Feb 21 2009, 19:38)  Например... в случае замыкания отводить проволоку назад по контуру. Это есть внешняя по отношению к основному контуру регулирования обратная связь. Пока не рассматриваем. Цитата зарез вне контура... ориентировать рабочий ролик вдоль движения. В общем случае, мало кто согласится на что-то кроме ручного управления процессом, ввиду его недостаточной формализуемости.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|