Страница 83 из 135 ПерваяПервая ... 3373818283848593133 ... ПоследняяПоследняя
Показано с 821 по 830 из 1349

Тема: Hardella IDE

  1. #821

    По умолчанию

    Такая формула будет справедлива: f(t) = f0 + a*t; ?
    Изображения Изображения
    Последний раз редактировалось Вольд; 11.03.2017 в 21:41.

  2. #822

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Такая формула будет справедлива: f(t) = f0 + a*t; ?
    Да, формула верная.

  3. #823

    По умолчанию

    Значит такая то же имеет право быть: 1/T(t) = 1/T0 + a*t; ? Если так, то что мне мешает вычислять T(t) и корректировать период следования импульсов при каждом вызове моего ФБ ? а (ускорение) можно вычислить в программе CoDeSys и передать при обращении к программе PRU.
    Последний раз редактировалось Вольд; 11.03.2017 в 21:51.

  4. #824

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Значит такая то же имеет право быть: 1/T(t) = 1/T0 + a*t; ?
    Да, и так тоже можно.

  5. #825

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Значит такая то же имеет право быть: 1/T(t) = 1/T0 + a*t; ? Если так, то что мне мешает вычислять T(t) и корректировать период следования импульсов при каждом вызове моего ФБ ? а можно вычислить в программе CoDeSys и передать при обращении к программе PRU.
    Вопрос в том, сколько умножений/делений хотите делать за такт. Насколько я помню, умножение и деление требуют примерно по 1мкс.
    Для справки: PRU_STEPPER на этапах разгона и торможения использует несколько сложений-вычитаний и одно единственное деление.


    И, да, не забывайте, что REAL типов в PRU нет, т.е. вычисления через DWORD с округлением

  6. #826

    По умолчанию

    Мою формулу можно свести в итоге к такой: T = T0 + ΣdT. Приращение dT можно вычислить в программе CoDeSys и передать при обращении к программе PRU. В итоге все сведется к суммированию заранее известного числа раз. Или я не прав ?
    Последний раз редактировалось Вольд; 11.03.2017 в 22:04.

  7. #827

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Мою формулу можно свести в итоге к такой: T = T0 + ΣdT. Приращение dT можно вычислить в программе CoDeSys и передать при обращении к программе PRU. В итоге все сведется к суммированию заранее известного числа раз. Или я не прав ?
    Это будет другая формула, и она будет неким приближением исходной. dT нужно будет корректировать каждые 100мкс.

  8. #828

    По умолчанию

    Да я не верно написал. Должно быть так: 1/T(t) = 1/T0 + a * t;

    1/T0 - это константа, она вычисляется однажды в основной программе и передается в PRU.
    Последний раз редактировалось Вольд; 12.03.2017 в 15:41.

  9. #829

    По умолчанию

    T(t) = T0/(1+T0*a*t); или T(t) = T0/(1+T0*aΣdt);

    Если делать вычисления в лоб, то на каждом шаге надо будет суммировать, умножать, и делить. Не фонтан.

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

    Если ограничиться двумя членами, то в окрестности точки 133 мкс (7500 Гц) получается так:

    T(t) = T0/(1+T0*a*t) = 200/(1+200*0,000000833*t) = 196 - 0,0325*(t-133)

    Вроде не плохо получилось. Только что делать с коэффициентом 0,0325 ? Владимир, что скажите ?
    Изображения Изображения
    Последний раз редактировалось Вольд; 12.03.2017 в 14:52.

  10. #830

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Вроде не плохо получилось. Владимир, что скажите ?
    Я бы предложил сделать вычисления без PRU, проверить, что получаются нужные цифры и тогда уже переходить к кодированию.

    И ещё: время лучше не в мкс измерять, а 5нс интервалах. PRU работает на частоте 200МГц, и 1 такт занимает 5нс. Счётчик тактов доступен из PRUграммы.

Страница 83 из 135 ПерваяПервая ... 3373818283848593133 ... ПоследняяПоследняя

Ваши права

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