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

Тема: Hardella IDE

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

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Да, похоже на цикл ПЛК.

    А что является критерием запуска генерации? Внешний импульс? Если так, то, может, его в PRU ловить, и тогда не будет зависимости от цикла ПЛК.
    Очередная генерация должна начинаться по истечению 16,7 мс. Если генерация пачки импульсов не укладывается в это время, то происходит смещение по времени начала генерации следующей пачки импульсов. Всего может быть до 15 000 пачек импульсов. Представляете какая ошибка по времени может накопиться ?

    В программе ПЛК предусмотрена автокоррекция, которая позволяет на каждом шаге компенсировать временную погрешность в пределах +/- 1 мс. Если погрешность на каждом шаге больше 1 мс, то ее компенсировать нельзя. Эта погрешность накапливается и на 15 000 шагах может быть очень большой, что неприемлемо. Максимальная временная погрешность на 15 000 шагах должна быть не более 15 мс.
    Последний раз редактировалось Newcomer; 09.07.2017 в 16:41.

  2. #2

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Очередная генерация должна начинаться по истечению 16,7 мс. Если генерация пачки импульсов не укладывается в это время, то происходит смещение по времени начала генерации следующей пачки импульсов. Всего может быть до 15 000 пачек импульсов. Представляете какая ошибка по времени может накопиться ?

    В программе ПЛК предусмотрена автокоррекция, которая позволяет на каждом шаге компенсировать временную погрешность в пределах +/- 1 мс. Если погрешность на каждом шаге больше 1 мс, то ее компенсировать нельзя. Эта погрешность накапливается и на 15 000 шагах может быть очень большой, что неприемлемо. Максимальная временная погрешность на 15 000 шагах должна быть не более 15 мс.
    Вообще говоря, в PRU программе можно работать со временем (см pru_current_time), и точность должна быть довольно хорошей. Во всяком случае, должно быть точнее, чем цикл ПЛК.

  3. #3

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Вообще говоря, в PRU программе можно работать со временем (см pru_current_time), и точность должна быть довольно хорошей. Во всяком случае, должно быть точнее, чем цикл ПЛК.
    Погрешность, связанная с циклом ПЛК равном 1 мс, не страшна, т.к. есть автокоррекция +/- 1 мс. Страшна погрешность возникающая из-за того, что генерация пачки импульсов на каждом шаге не укладывается в заданное время.
    Последний раз редактировалось Newcomer; 09.07.2017 в 17:10.

  4. #4

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Погрешность, связанная с циклом ПЛК равном 1 мс, не страшна, т.к. есть автокоррекция +/- 1 мс. Страшна погрешность возникающая из-за того, что генерация пачки импульсов на каждом шаге не укладывается в заданное время.
    Во-первых, есть гарантия, что цикл ПЛК всегда укладывается в 1мс?
    Во-вторых, при некоторых значениях, генерация весьма плотно подходит к 16мс. Если там что-то добавляет ПЛК (т.е. обнаруживает завершение предыдущей генерации с задержкой на цикл ПЛК), то запросто может не уложиться в 16мс.

    Т.е. тут либо переносить всю пачку в PRU -- там не будет проблем с временной синхронизацией. Можно до 5-10наносекунд точность выдерживать.

    Либо оставлять синхронизацию в ПЛК, но тогда нужно, чтобы PRU программа заканчивала генерацию не более чем за 14-15мс, чтобы у ПЛК был шанс обработать и перезапустить.

  5. #5

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Во-первых, есть гарантия, что цикл ПЛК всегда укладывается в 1мс?
    Если на каждом шаге генерируется малое количество импульсов, то все нормально. Проблемы возникают, когда на каждом шаге генерируется большое число импульсов.
    Последний раз редактировалось Newcomer; 09.07.2017 в 17:44.

  6. #6

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Либо оставлять синхронизацию в ПЛК, но тогда нужно, чтобы PRU программа заканчивала генерацию не более чем за 14-15мс, чтобы у ПЛК был шанс обработать и перезапустить.
    Я про это то же ранее писал.

  7. #7

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Я про это то же ранее писал.
    А потом окажется новая проблема: "ой, генерация завершилась за 14мс, что делать".

  8. #8

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    А потом окажется новая проблема: "ой, генерация завершилась за 14мс, что делать".
    Это не проблема. Главное что бы генерация завершилась не позднее 16,7 мс. Уменьшать минимальное значение интервала (14...15 мс) то же не хорошо, т.к. это ведет к увеличению расчетного значения accel_ramp, что может привести к пропуску импульсов ШД.
    Последний раз редактировалось Newcomer; 09.07.2017 в 18:48.

Ваши права

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