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

Тема: Hardella IDE

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

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

    По умолчанию

    Сейчас MemoryTransfer производит обмен всех переменных.
    Потому вызывать MemoryTransfer нужно согласно купленным билетам, т.е. согласно тому, как необходимо по логике.

    Просто стоит учитывать, что между вызовами MemoryTransfer (даже в рамках одного цилка ПЛК) PRU программа может успеть выполнить несколько итераций.



    Цитата Сообщение от Sulfur Посмотреть сообщение
    обратиться к ххх_Pru0(1)MemoryTransfer только с чтением переменных обмена (чтение из PRU), а в конце PLC_PRG (в конце цикла) к этой же ххх_Pru0(1)MemoryTransfer, но только к записи переменных обмена (запись в PRU)?
    Да, так можно.
    Фактически тут будет "запись тех же самых значений, что записывались ранее".
    Вообще, мысль разделить чтение и запись интересная.

    Если хотите, можно использовать такой синтаксис:
    Код:
    MemoryTransfer.motor_enable := TRUE;
    MemoryTransfer.fast := TRUE;
    
    MemoryTransfer(); (* собственно, обмен *)
    
    motorState := MemoryTransfer.motorState; (* чтение *)
    Цитата Сообщение от Sulfur Посмотреть сообщение
    Или будет достаточно просто один раз прописать сопоставление переменным ххх_Pru0(1)MemoryTransfer с переменными PLC_PRG в начале цикла?
    Зависит от того, какая логика нужна. Вызывать MemoryTransfer можно много раз внутри одного цикла ПЛК, и каждый раз можно получать "более новые" значения.

  2. #2
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,287

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение

    Зависит от того, какая логика нужна.
    Логика простая - в начале цикла опрашиваем всё, что опрашивается, делаем вычисление, и пишем результаты во всё, что пишется. В данном случае фазы "опрашивается" и "пишется" объединены в одном модуле.

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Просто стоит учитывать, что между вызовами MemoryTransfer (даже в рамках одного цилка ПЛК) PRU программа может успеть выполнить несколько итераций.
    Я это понимаю. Именно из этих соображений критичные ко времени действия организованы в PRU-части. В ПЛЦ_ПРГ остается только "обслуга", либо медленные процессы\счетчики.

  3. #3

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Логика простая - в начале цикла опрашиваем всё, что опрашивается, делаем вычисление, и пишем результаты во всё, что пишется. В данном случае фазы "опрашивается" и "пишется" объединены в одном модуле.
    Получается, если вместо одной текущей программы memorytransfer сделать две (для опроса и для записи), то будет понятнее?

    В остальном работает?

Ваши права

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