Страница 89 из 135 ПерваяПервая ... 3979878889909199 ... ПоследняяПоследняя
Показано с 881 по 890 из 1349

Тема: Hardella IDE

  1. #881

    По умолчанию

    Сейчас выложу.

  2. #882

    По умолчанию

    Интересно, что если из прерывающей программе убрать

    SteppersConfig_Pru1MemoryTransfer();

    то все работает как надо.

  3. #883

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    ррр. Покажите картинку того, что показывает КДС в online режиме при открытии программы SteppersConfig_Pru1MemoryTransfer в момент, когда "частота вращения не соответствует заданию"
    В отладчике значения, перечисленные в SteppersConfig_Pru1MemoryTransfer не отображаются.

    Но я так понимаю, что задается тому они и равны.
    Последний раз редактировалось Вольд; 24.03.2017 в 14:52.

  4. #884

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    В отладчике значения, перечисленные в SteppersConfig_Pru1MemoryTransfer не отображаются.
    Но я так понимаю, что задается тому они и равны.
    Отображаются, но надо SteppersConfig_Pru1MemoryTransfer явно открывать (двойным щелчком слева в списке блоков)

  5. #885

    По умолчанию

    CASE R200 OF

    0: (* *)
    Stop_Motor();
    SSP_Y := FALSE; (* Нет исходного положения *)
    TON3(IN := FALSE, PT:= T#0s);
    R200 := 10;

    10: (* Вперед или стоп *)
    IF (D1) THEN
    SteppersConfig_Pru1MemoryTransfer(
    STEPPER1_PRU1_dir := FALSE,
    STEPPER1_PRU1_stepper_accel_ramp := 5000,
    STEPPER1_PRU1_stepper_decel_ramp := 50000,
    STEPPER1_PRU1_stepper_max_speed := 10000,
    STEPPER1_PRU1_stepper_min_speed := 0,
    STEPPER1_PRU1_stepper_quantity := 1000000,
    STEPPER1_PRU1_stepper_enable := TRUE
    );
    ELSE SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE); R200 := 15; END_IF

    15: (* Пауза *)
    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);
    TON3(IN := TRUE, PT:= UT_1S); (* Запустили таймер *) Если уставка таймера 1 сек., то ФБ работает нормально, если 100 мс, то на шаге 20 все стопорится, вал ШД вращается, но с черепашьей частотой
    IF (TON3.Q = TRUE) THEN TON3(IN := FALSE, PT:= T#0s); R200 := 20; END_IF

    20: (* Назад *)
    IF (NOT D1) THEN
    SteppersConfig_Pru1MemoryTransfer(
    STEPPER1_PRU1_dir := TRUE,
    STEPPER1_PRU1_stepper_accel_ramp := 5000,
    STEPPER1_PRU1_stepper_decel_ramp := 50000,
    STEPPER1_PRU1_stepper_max_speed := 10000,
    STEPPER1_PRU1_stepper_min_speed := 0,
    STEPPER1_PRU1_stepper_quantity := 1000000,
    STEPPER1_PRU1_stepper_enable := TRUE
    );
    ELSE R200 := 30; END_IF

    30: (* Стоп *)
    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);
    SSP_Y := TRUE;

    END_CASE
    Последний раз редактировалось Вольд; 24.03.2017 в 16:28.

  6. #886

    По умолчанию

    Если дать возможность ШД отработать заданное количество импульсов, то все в дальнейшем корректно работает.

    Проблема в дальнейшем возникает, если выдать

    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);

    до того, как ШД отработает заданное количество импульсов.

    Вот так работает корректно

    CASE R200 OF

    0: (* *)
    Stop_Motor();
    SSP_Y := FALSE; (* Нет исходного положения *)
    TON3(IN := FALSE, PT:= T#0s);
    R200 := 10;

    10: (* Вперед или стоп *)
    IF (D1) THEN
    SteppersConfig_Pru1MemoryTransfer(
    STEPPER1_PRU1_dir := FALSE,
    STEPPER1_PRU1_stepper_accel_ramp := 5000,
    STEPPER1_PRU1_stepper_decel_ramp := 50000,
    STEPPER1_PRU1_stepper_max_speed := 10000,
    STEPPER1_PRU1_stepper_min_speed := 0,
    STEPPER1_PRU1_stepper_quantity := 1000000,
    STEPPER1_PRU1_stepper_enable := TRUE
    );
    ELSE R200 := 15; END_IF

    15: (* Ждем отработки заданного на предыдущем шаге количества импульсов *)
    IF SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE THEN
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_enable := FALSE; R200 := 20; END_IF

    20: (* Назад *)
    IF (NOT D1) THEN
    SteppersConfig_Pru1MemoryTransfer(
    STEPPER1_PRU1_dir := TRUE,
    STEPPER1_PRU1_stepper_accel_ramp := 5000,
    STEPPER1_PRU1_stepper_decel_ramp := 50000,
    STEPPER1_PRU1_stepper_max_speed := 10000,
    STEPPER1_PRU1_stepper_min_speed := 0,
    STEPPER1_PRU1_stepper_quantity := 1000000,
    STEPPER1_PRU1_stepper_enable := TRUE
    );
    ELSE R200 := 30; END_IF

    30: (* Стоп *)
    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);
    SSP_Y := TRUE;

    END_CASE
    Последний раз редактировалось Вольд; 24.03.2017 в 18:32.

  7. #887

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Вот так работает корректно
    А почему на 15-ом шаге нет вызова MemoryTransfer?
    Просто так присваивать STEPPER1_PRU1_stepper_enable := FALSE смысла нет.
    Или в фоне крутится 200мкс таймер, который вызывает Transfer?

  8. #888

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    А почему на 15-ом шаге нет вызова MemoryTransfer?
    Просто так присваивать STEPPER1_PRU1_stepper_enable := FALSE смысла нет.
    Или в фоне крутится 200мкс таймер, который вызывает Transfer?
    MemoryTransfer вызывается каждые 200 мкс в прерывающей программе.

  9. #889

    По умолчанию

    Владимир, какое значение примет

    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state

    после того как буде выполнено

    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_enable := FALSE;

  10. #890

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Владимир, какое значение примет
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state

    после того как буде выполнено
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_enable := FALSE;
    Так я и просил картинку из online.
    По логике, должно быть DECEL -- замедление (при ненулевом decel_ramp), потом STOP.
    Последний раз редактировалось Владимир Ситников; 25.03.2017 в 11:35.

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

Ваши права

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