Страница 82 из 117 ПерваяПервая ... 3272808182838492 ... ПоследняяПоследняя
Показано с 811 по 820 из 1349

Тема: Hardella IDE

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    У меня вполне конкретная задача: необходимо за заданное время сгенерировать определенное количество импульсов. Как мне посчитать ускорение ?

  2. #2

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    У меня вполне конкретная задача: необходимо за заданное время сгенерировать определенное количество импульсов. Как мне посчитать ускорение ?
    Есть 2 варианта:
    1) Для конкретного значения "начальной скорости" подобрать ускорение, чтобы в итоге разгонялось за нужное время
    Например, если нужно разогнать с начальной скорости 300Гц с ускорением 5'000 кГц/сек, то нужно указывать accelRamp=860000.

    Будет такая картина:
    2017-06-30_860.png
    Общая продолжительность -- 17.82мс

    > 300*0.01782+5e6*(0.01782**2)/2
    => 799

    Т.е. получается 800 импульсов за то время, какое должно было быть при нач. скорости 300 и ускорении 5'000 кГц/сек
    Конкретное значение 8'600'000 я нашёл просто подбором.

    2) Переписать весь stepper блок.
    Последний раз редактировалось Владимир Ситников; 30.06.2017 в 17:34.

  3. #3

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Переписать весь stepper блок.
    Чем новый stepper блок должен отличаться от существующего ?

  4. #4

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Для конкретного значения "начальной скорости" подобрать ускорение, чтобы в итоге разгонялось за нужное время
    Например, если нужно разогнать с начальной скорости 300Гц с ускорением 5'000 кГц/сек, то нужно указывать accelRamp=860000.
    Разве accelRamp - это не ускорение ? Что тогда такое 5'000 кГц/сек, decelRamp ?
    Последний раз редактировалось Newcomer; 30.06.2017 в 18:06.

  5. #5

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Разве accelRamp - это не ускорение ? Что тогда такое 5'000 кГц/сек ?
    Так исходно же был вопрос
    Цитата Сообщение от Newcomer Посмотреть сообщение
    accel_ramp := 5000000,
    accel_ramp := 5000000 Гц/сек == 5000кГц/сек == 5 кГц/мс

    accelRamp это должно быть ускорение. Но при больших значениях ускорения-скорости фактическое ускорение не совпадает с указанным в accelRamp.

  6. #6

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Но при больших значениях ускорения-скорости фактическое ускорение не совпадает с указанным в accelRamp.
    Это интересно. Если я задаю accel_ramp = 5000000, то чему оно будет равно на самом деле ?

  7. #7

    По умолчанию

    А из за чего такие сложности ?

  8. #8

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    А из за чего такие сложности ?
    Точное решение квадратного уравнения делать на PRU тяжело, т.к. там только целые числа, и умножения-деления-квадратного корня толком нет.

    Можно было бы для каждого импульса применять формулу квадратного уравнения, но тогда пришлось бы для каждого импульса вычислять формулу из #973:
    tn = ((v02 + 2*a*n)0.5 - v0)/a

    Конечно, v02 это константа и вычислять 2an не так сложно, но всё равно остаются квадратный корень и деление.
    Квадратный корень может занимать 0.5мкс, деление до 1мкс.


    Сейчас же используется более простая формула -- без квадратного корня. Из сложных операций только одно деление. Это позволяет экономить ресурсы PRU. Из-за того, что квадратный корень не используется и получается отклонение от "эталонной формулы".

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,575

    По умолчанию

    позволяет ли объем памяти держать таблицу корней?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    позволяет ли объем памяти держать таблицу корней?
    Килобайт памяти суммарно есть, т.е. таблицу-то можно попробовать поместить (хотя не такую-то и большую таблицу можно в килобайт поместить)

    В конце концов, квадратный корень работает в два раза быстрее деления, и с ним не такая большая проблема.
    Вторая проблема: нет плавающей точки, а в широком диапазоне значений v0 и "a" может не хватать 32 битных чисел.

    Грубо говоря, tn (в секундах) нужно умножить на 200'000'000 (чтобы перевести в такты).

    Так вот: значение 200'000'000/a это константа, и, чтобы вообще исключить деление хотелось бы внести этот множитель под корень.
    Но там-то и перестаёт хватать разрядности 32 (даже 64 не хватило бы), ведь (200'000'000/a)2 может быть весьма много (особенно, при небольших ускорениях порядка 10-100 Гц/сек).

Страница 82 из 117 ПерваяПервая ... 3272808182838492 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •