Да, разделение на чтение и запись имеет смысл, но оно само по себе не решит проблему.
Поясню: сейчас записываются все переменные.
Допустим, в программе "простое управление выходом + ШД". Как сделать так, чтобы "команда управления выходом передалась, а ШД.enable нет"?
Делать "MemoryWriteStepperEnable(..); MemoryWriteDirectOut(..)"? (т.е. каждую переменную обменивать через свой вызов?)
Один только запуск ШД чего будет стоить. Штук 5 параметров передавать через 5 вызовов разных MemoryWrite.
Гибко? Да. Удобно? Вряд ли.
Можно, конечно, ввести "группы обмена". Так, чтобы для всех write переменных в одной группы создавался один блок.
Например, группа переменных для ШД, другая для управления ещё чем-нибудь.
Но сможет ли это кто-то настроить?
Вот сейчас даже с простым добавлением @Export проблемы.