PDA

Просмотр полной версии : pack_mode struct



andemeno
30.06.2023, 17:43
Имеется СПК110 [М01], CDS V3.5 SP17 Patch 3.
В проекте определена структура



{attribute 'pack_mode' := 2}
TYPE TEST :
STRUCT
reg0: WORD;
reg1: WORD;
reg2: WORD;
value: REAL;
END_STRUCT
END_TYPE

Я ожидаю, что размер структуры будет равен 10 байт. Однако SIZEOF(TEST)=12.
Аналогичный результат получаю при других значениях pack_mode (0 и 1).
Подскажите, в чем может быть дело?
Пример простейшего проекта, где воспроизводится проблема, прикреплен к сообщению.

1exan
30.06.2023, 18:23
Да, странно. Как будто результат кратен размеру самого большого элемента



{attribute 'pack_mode' := 0 }
TYPE TEST :
STRUCT
value: LREAL;
reg0: WORD;
reg1: WORD;
reg2: WORD;
END_STRUCT
END_TYPE

Размер 16

1exan
30.06.2023, 18:44
Нужно писать

{attribute 'pack_mode' := '0' }

(в одиночных кавычках), тогда нет выравниванмия

andemeno
04.07.2023, 09:31
Нужно писать

{attribute 'pack_mode' := '0' }

(в одиночных кавычках), тогда нет выравниванмия

Спасибо за подсказку. Действительно, дело в отсутствии кавычек. Странно только, что codesys не выдал ни одного предупреждения...