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

Тема: Hardella IDE

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

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

    По умолчанию

    В цикле ПЛК делается проверка:

    IF SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE THEN
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_enable := FALSE; END_IF


    У меня цикл ПЛК = 1 мс. Крайнее значение временного интервала - 16,7 мс. Возможно, промежуток, в котором должна кончаться генерация пачки импульсов, надо задавать 14 - 15 мс. Тогда цикл ПЛК гарантированно не будет вносить погрешность.

  2. #2

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    У меня цикл ПЛК = 1 мс. Крайнее значение временного интервала - 16,7 мс. Возможно, промежуток, в котором должна кончаться генерация пачки импульсов, надо задавать 14 - 15 мс. Тогда цикл ПЛК гарантированно не будет вносить погрешность.
    Да, похоже на цикл ПЛК.

    А что является критерием запуска генерации? Внешний импульс? Если так, то, может, его в PRU ловить, и тогда не будет зависимости от цикла ПЛК.

  3. #3

    По умолчанию

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

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

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

  4. #4

    По умолчанию

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

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

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

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

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

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

  7. #7

    По умолчанию

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

  8. #8

    По умолчанию

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

Ваши права

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