Добрый день!
Действительно, выделение памяти в ПЛК для структур происходит строго с шагом в 4 байта.
Как было уже указано выше, это происходит из-за выравнивания памяти в контроллере.
При выравнивании учитывается выделяемая память под конкретную переменную и переменные, находящиеся выше. Если две переменные по суммарному объему занимают более 4 байт – происходит выравнивание и вторая переменная переопределяется в следующих 4 байтах.
Работает это следующим образом:
Размер структуры 1.PNG
Поэтому для более эффективного использования памяти контроллера, необходимо учитывать выравнивание и группировать переменные по типу данных при объявлении в структуре.
Ниже приведена оптимизация вышеупомянутого примера:
Размер структуры 2.PNG
Таким образом память, выделяемая под структуру, уменьшилась с 16 байт, до 12 байт.




Ответить с цитированием