Сейчас 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 можно много раз внутри одного цикла ПЛК, и каждый раз можно получать "более новые" значения.