Страница 55 из 135 ПерваяПервая ... 545535455565765105 ... ПоследняяПоследняя
Показано с 541 по 550 из 1349

Тема: Hardella IDE

  1. #541

    По умолчанию

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

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

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

  2. #542

    По умолчанию

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

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


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

  3. #543

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    И все таки. Что может случиться если MemoryTransfer вызвать только один раз ? Межпроцессорный обмен может не состояться ?
    Теоретически, может. Вероятность такого события не знаю.

  4. #544

    По умолчанию

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

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

  5. #545

    По умолчанию

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

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

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


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

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

  6. #546

    По умолчанию

    Цитата Сообщение от 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 не передаётся, поэтому этот ШД так и не начинает крутиться в обратную сторону.

  7. #547

    По умолчанию

    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.

  8. #548

    По умолчанию

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

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

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

  9. #549

    По умолчанию

    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_st epper_state = STOP_STEPPER_RUN_STATE

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

  10. #550

    По умолчанию

    Владимир, а по пункту 2 поста #559 что-то можете сказать ? Что это может быть ?

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

Ваши права

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