Страница 72 из 117 ПерваяПервая ... 2262707172737482 ... ПоследняяПоследняя
Показано с 711 по 720 из 1349

Тема: Hardella IDE

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Banned
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    848

    По умолчанию

    А на каком софте основана сама Hardella IDE? Есть возможность компилировать ST в код IL (все описание самого кода есть). Интересна возможность запилить поддержку Delta PLc. На которых нет ST.

  2. #2

    По умолчанию

    Цитата Сообщение от murdemon Посмотреть сообщение
    А на каком софте основана сама Hardella IDE? Есть возможность компилировать ST в код IL (все описание самого кода есть). Интересна возможность запилить поддержку Delta PLc. На которых нет ST.
    Hardella IDE написана на JetBrains MPS.
    Да, сделать компиляцию ST -> IL можно.
    Delta на может IL в текстовом виде обрабатывать?

  3. #3
    Banned
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    848

    По умолчанию

    На DELTA PLC (для ПЛК DVP серии) в среде ISPSoft IL можно только копи пастом, есть импорт и экспорт (но формат там не текстовый)

  4. #4

    По умолчанию

    Владимир, какое минимальное время допустимо между этим

    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);

    и этим

    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := TRUE);

    операторами ?

  5. #5

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Владимир, какое минимальное время допустимо между этим

    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := FALSE);

    и этим

    SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_st epper_enable := TRUE);

    операторами ?
    Примерно 2-3 цикла PRU.

  6. #6

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Примерно 2-3 цикла PRU.
    Если цикл PRU 1 мкс, то 2...3 мкс ?

    А обмен между ЦП и PRU постоянно идет ? Когда начинается и когда заканчивается обмен между ЦП и PRU ? Или как прошло это

    SteppersConfig_Pru0Init();
    SteppersConfig_Pru1Init();


    так и пошел обмен ?

    Или надо постоянно делать это иначе обмена не будет?

    SteppersConfig_Pru0MemoryTransfer();
    SteppersConfig_Pru1MemoryTransfer();
    Последний раз редактировалось Вольд; 23.03.2017 в 00:07.

  7. #7

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Если цикл PRU 1 мкс, то 2...3 мкс ?
    Да.

    Цитата Сообщение от Вольд Посмотреть сообщение
    А обмен между ЦП и PRU постоянно идет ? Когда начинается и когда заканчивается обмен между ЦП и PRU ? Или как прошло это
    PRU программа выполняет следующее:
    Код:
    t0 := засекаем_время();
    WHITE TRUE
        USER_PROGRAM(); (* вызываем программу, указанную в pru configuration *)
    
        REPEAT
            обрабатываем_обмен_данными_с_host();
            читаем_входы();
        UNTIL время < t0 + мин_ц
        END_REPEAT;
    
        t0 := засекаем_время();
        записываем_выходы();
        читаем_входы();
    END_WHILE;
    Иначе говоря, большую часть времени PRU ядро ждёт от КДС программы команд на чтение-запись PRU данных.
    Но эти данные PRU программа сможет использовать только на следующем PRU цикле.

    Возвращаясь к исходному вопросу "когда можно перезапускать stepper". После перевода enable в false нужно выполнять memoryread и ждать когда блок сменит состояние. В целом, за одну-две микросекунды это может и случиться, т.е. можно это выполнять и в рамках одного цикла ПЛК (while stepper.state<>... memory read ...).



    Цитата Сообщение от Вольд Посмотреть сообщение
    SteppersConfig_Pru0Init();
    SteppersConfig_Pru1Init();


    так и пошел обмен ?
    Нет. После Init запускается только "ответная" сторона в PRU. Сами данные идут только по управлению КДС программы.

    Чтобы данные реально ходили нужно вызывать MemoryTransfer или MemoryRead или MemoryWrite.
    При каждом вызове Memory* будет новый обмен.

  8. #8

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    После перевода enable в false нужно выполнять memoryread и ждать когда блок сменит состояние. В целом, за одну-две микросекунды это может и случиться, т.е. можно это выполнять и в рамках одного цикла ПЛК (while stepper.state<>... memory read ...).
    А можно перевести enable в false и не делать memoryread для анализа состояния блока, а просто подождать немного и далее перевести enable в true ?

  9. #9

    По умолчанию

    У меня в прерывающей программе, которая вызывается с периодом 200 мкс записано

    SteppersConfig_Pru1MemoryTransfer();

    Допустим в основной программе ПЛК однажды записано так

    SteppersConfig_Pru1MemoryTransfer(
    STEPPER1_PRU1_dir := Dir,
    STEPPER1_PRU1_stepper_accel_ramp := Accel,
    STEPPER1_PRU1_stepper_decel_ramp := 200000000,
    STEPPER1_PRU1_stepper_max_speed := 200000,
    STEPPER1_PRU1_stepper_min_speed := 0,
    STEPPER1_PRU1_stepper_quantity := Quantity,
    STEPPER1_PRU1_stepper_enable := TRUE
    );


    Правильно ли я понимаю, что каждые 200 мкс между программой PRU и основной программой будут передаваться указанные выше значения ?

  10. #10

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Допустим в основной программе ПЛК однажды записано так
    SteppersConfig_Pru1MemoryTransfer(
    STEPPER1_PRU1_dir := Dir, ...);

    Правильно ли я понимаю, что каждые 200 мкс между программой PRU и основной программой будут передаваться указанные выше значения ?
    Если MemoryTransfer() вызывается в 200мкс таймере, то в основной программе достаточно просто менять-читать значения переменных:
    Код:
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_dir := Dir;
    SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_stepper_accel_ramp := Accel;
    ...
    Либо просто в 200мкс таймере вызывать MemoryTransfer со всеми параметрами.

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

Ваши права

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