Показано с 1 по 10 из 688

Тема: Программирование ПЛК110 [М02] для задач реального времени

Древовидный режим

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

    По умолчанию

    Начал делать вычисление для "равноускоренного" движения.
    Сделал блок, который вычисляет "длительность следующего импульса" и решил проверить сколько тактов будет занимать это вычисление.

    Проверял на двух вариантах: разгон до 5кГц и до 100кГц.
    В обоих случаях время разгона 0.25 сек. Я, конечно, понимаю, что в реальности до 100кГц за 0.25сек мало кто будет разгоняться, но тут во-первых нужно проверить точность вычислений, а во-вторых, на высоких скоростях "лишнего времени нет" -- надо проверить сколько времени будет занимать "вычисление следующей длительности".

    Собственно, графики. Повторюсь, графики получены из эмулятора PRU, и абсолютно всё вычисление сделано в PRU (включая квадратный корень в начале работы).
    Ни один float не пострадал: в PRU нет float'ов, и там даже просто умножения нет.

    Разгон до 5кГц
    В целом, норм, расчётная частота 5кГц достигается не в 0.25 с, а в 0.2477 секунду. Погрешность 1% по-моему, норм.
    accel_5kHz_output.png

    Частота 5кГц для нашего процессора, разумеется, никаких проблем составлять не должна, ведь PRU работает на 150МГц.
    Видно, что пик загруженности процессора составляет целых 0.2%
    accel_5kHz_cpu_utilization.png


    Попробуем зарядить 100кГц
    Тоже норм. Расчётная частота 100кГц достигается не на 0.25 с, а в 0.2512 секунду. Погрешность снова укладывается в 1%
    accel_100kHz_output.png


    А не слишком ли сложные вычисления для 100кГц?
    Да, 100кГц это более сложная задача, но и она занимает лишь 2.5% в пике.

    accel_100kHz_cpu_utilization.png


    На графиках не учтена работа "внешнего цикла" и "обмен данными", но очевидно, что:
    1) 100кГц ШД не составляет никакой проблемы для PRU ядра
    2) Вычисления можно делать прямо в PRU. Такой подход оказывается проще в тестировании, т.к. на вход тестируемому блоку даём сразу понятные величины типа "разгонись до 5кГц за 3 секунды", и в имеющемся эмуляторе смотрим что да как.
    3) Вполне может получиться и вычисление "экстренной остановки", когда PRU выполнит расчёт замедления на основе текущей скорости и требуемого времени замедления

    Надо ещё сделать планирование траектории, чтобы блок понимал когда начинать торможение чтобы общее движение заняло ровно указанное количество импульсов.

    Потом можно будет прикрутить "плавный выход на расчётную скорость" (ну, чтобы не было разрыва ускорения при переходе от равноускоренного к равномерному движению). Будет вообще шикарно.
    Последний раз редактировалось Владимир Ситников; 24.09.2016 в 17:31.

Похожие темы

  1. Ответов: 38
    Последнее сообщение: 24.01.2022, 11:56
  2. Ответов: 10
    Последнее сообщение: 11.06.2021, 14:55
  3. часы реального времени
    от vetaly в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 28.08.2015, 16:21
  4. Таймер реального времени УТ1-РiС
    от ser10 в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 16.09.2010, 11:24

Ваши права

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