Показано с 1 по 4 из 4

Тема: Размер структуры (типа данных)

  1. #1

    По умолчанию Размер структуры (типа данных)

    Раньше никогда не обращал внимания, но заметил, что размер любого экземпляра структуры (который sizeof() определяет) кратен 4. То есть структура состоящая из одной переменной типа bool - 4 байта. Одна переменная типа real - те же 4 байта. А если одна real и одна bool - сразу 8 байт. Это всегда так?
    может ли оказаться что размер структуры - нечетное число байт?

  2. #2
    Пользователь
    Регистрация
    20.02.2008
    Адрес
    Тверь
    Сообщений
    506

    По умолчанию

    Однажды по молодости безуспешно пытался передать по модбасу структуру Word,DWord из ПЛК (CoDeSys 2) в СПК (CoDeSys 3). Заработало после замены в ПЛК Word на DWord.

  3. #3

    По умолчанию

    CodeSys 2 + ПЛК100 выравнивание структуры в памяти всегда по четырем байтам.
    В CodeSys 3 возможно задать параметы выравнивания структуры и можно добиться того, что выравнивание будет в 1 байт.

  4. #4

    По умолчанию

    Добрый день!

    Действительно, выделение памяти в ПЛК для структур происходит строго с шагом в 4 байта.
    Как было уже указано выше, это происходит из-за выравнивания памяти в контроллере.

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

Похожие темы

  1. ТРМ133М и считывание типа данных Parpoint
    от Aleksey Belokon в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 18.12.2018, 11:51
  2. Ответов: 0
    Последнее сообщение: 31.03.2017, 19:51
  3. Что значит ошибка "Размер поля данных не соответствует ожидаемому"
    от Сергей_Тула в разделе Помощь Разработчикам
    Ответов: 7
    Последнее сообщение: 14.02.2007, 11:38

Ваши права

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