Страница 49 из 117 ПерваяПервая ... 3947484950515999 ... ПоследняяПоследняя
Показано с 481 по 490 из 1349

Тема: Hardella IDE

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

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

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    MemoryTransfer надо вызывать 100 раз ? Это какое же время может занять обмен ?
    Во-первых, 100 попыток делается при каждом вызове MemoryTransfer.

    Во-вторых, как правило, срабатывает с первой попытки.

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Как узнать, что обмен произошел ?
    У MemoryTransfer есть счётчики количества ошибок записи и чтения. В очередной версии добавлю просто флаги "была ли ошибка при последнем вызове".

  2. #2

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Во-первых, 100 попыток делается при каждом вызове MemoryTransfer.

    Во-вторых, как правило, срабатывает с первой попытки.


    У MemoryTransfer есть счётчики количества ошибок записи и чтения. В очередной версии добавлю просто флаги "была ли ошибка при последнем вызове".
    И все таки. Что может случиться если MemoryTransfer вызвать только один раз ? Межпроцессорный обмен может не состояться ?
    Последний раз редактировалось Newcomer; 22.01.2017 в 11:28.

  3. #3

    По умолчанию

    Сделал простой тестовый проект. Для ПЛК110-Х.30[М02]. PRU0 управляет драйвером мощного ШД и опрашивает энкодер, PRU1 управляет драйвером маломощного ШД.

    1. Энкодер опрашивается нормально.
    2. Вал мощного ШД начинает медленно вращаться при подаче питания на ПЛК еще до запуска программы, т.е. PRU0 почему-то начинает работать. После запуска программы ШД нормально разгоняется и работает как и должно быть.
    3. Вал маломощного ШД после запуска программы должен попеременно вращаться в разные стороны, однако этого не происходит. Двигатель однократно отрабатывает вращение в одну сторону и оператор CASE застревает на шаге 5.
    Вложения Вложения
    • Тип файла: rar Test.rar (42.7 Кб, Просмотров: 5)
    Последний раз редактировалось Newcomer; 22.01.2017 в 17:55.

  4. #4

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    2. Вал мощного ШД начинает медленно вращаться при подаче питания на ПЛК еще до запуска программы, т.е. PRU0 почему-то начинает работать. После запуска программы ШД нормально разгоняется и работает как и должно быть.
    Программа Hardella появляется в PRU только после вызова Init.
    Если ШД начинает крутиться до вызова Init, то это означает, что прошивка ПЛК выдаёт импульсы. Это странно, т.к. ОВЕН утверждают, что М02 импульсы просто так не выдаёт.

    Тут либо проверять на ПЛК с пустой программой, либо пробовать играться с plc configuration (менять fast outputs на direct control или подобное).

    Если мигание выходов происходит непосредственно в момент заливки программы (непосредственно в момент выполнения Init), то, конечно, нездорово.


    Цитата Сообщение от Newcomer Посмотреть сообщение
    3. Вал маломощного ШД после запуска программы должен попеременно вращаться в разные стороны, однако этого не происходит. Двигатель однократно отрабатывает вращение в одну сторону и оператор CASE застревает на шаге 5.
    А что отладчик показывает?

    Ну, чему равны значения в блоке Pru1MemoryTransfer?

  5. #5

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    оператор CASE застревает на шаге 5.
    В программе ошибка есть:
    Код:
    5: (* Анализ *)
    IF SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_stepper_state = STOP_STEPPER_RUN_STATE THEN
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_stepper_enable :=  FALSE; N := 10; END_IF
    Так не работает. Нужно реально вызвать MemoryTransfer чтобы "передёрнуть enable".
    Сейчас же получается, что значение false никогда в PRU1 не передаётся, поэтому этот ШД так и не начинает крутиться в обратную сторону.

  6. #6

    По умолчанию

    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);

    Так надо ?

    Это я поправлю, но на шаге 5 оператора CASE не по этой причине застревает.

    Вот эта проверка не срабатывает:

    IF SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE THEN
    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE); N := 10; END_IF
    Последний раз редактировалось Newcomer; 22.01.2017 в 19:17.

  7. #7

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Вот эта проверка не срабатывает:

    IF SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE THEN
    Скажу прямо: я НЕ телепат.

    Зачем писать "эта проверка не срабатывает", если можно взять, посмотреть в чему равны переменные и понять что пошло не так?

  8. #8

    По умолчанию

    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE

    Это равенство не наступает.

  9. #9

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE

    Это равенство не наступает.
    И? Вывод какой?
    Или вопрос какой?

  10. #10

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    И? Вывод какой?
    Или вопрос какой?
    После запуска программы ШД покрутился в одну сторону и остановился

    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state равно ACCEL_STEPPER_RUN_STATE

    т.е. показывает разгон, хотя произошли разгон, торможение и останов.
    Последний раз редактировалось Newcomer; 22.01.2017 в 20:19.

Страница 49 из 117 ПерваяПервая ... 3947484950515999 ... ПоследняяПоследняя

Ваши права

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