Показано с 1 по 10 из 15

Тема: ПЛК210 Глюки опроса

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Это называется выравнивание, в вашем случае, при использовании структуры, выравнивание может сдвинуть адреса от 1 до 4 регистров вроде.
    Здесь показано выравнивание на примере BYTE, WORD, DWORD
    https://owen.ru/forum/showthread.php...age=1042#10416

    В СDS3.5 так же как в 2.3 работает, в ПЛК слейве.
    Проверить можно, создав в панели тиражированием, штук 8 дисплеев, с адресами по порядку, вернуть структуру и смотреть в какой адрес пишется ваш регистр.
    Да, я подозревал выравнивание памяти в структуре, читал про это.
    Была структура данных для чтения панелью СП310. В структуре были вперемешку и WORD, и BOOL, плюс еще объединения. Убрал все BOOL и упаковал в прорамме их все в WORD'ды. Проблема решилась.
    Все равно не очень понимаю сути, как влияет привязка булевской переменной к полю bit в регистре ModbusTCP_Slave_Device на другой регистр. Для чего тогда эти поля бит нужны в регистрах?
    Я ведь когда читаю из модуля ввода битовую маску, я присваиваю битовым полям булевские переменные, которые в свою очередь также упакованы в структуры. Так тоже получается нехорошо делать?

  2. #2

    По умолчанию

    Цитата Сообщение от Stanislav_Y Посмотреть сообщение
    Все равно не очень понимаю сути, как влияет привязка булевской переменной к полю bit в регистре ModbusTCP_Slave_Device на другой регистр. Для чего тогда эти поля бит нужны в регистрах?
    Я ведь когда читаю из модуля ввода битовую маску, я присваиваю битовым полям булевские переменные, которые в свою очередь также упакованы в структуры. Так тоже получается нехорошо делать?
    Структура из Маски типа WORD - занимает в памяти 2 байта, все норм, скрин 1 Размер структуры.jpg
    а вот структура из 8 бит типа BOOL - занимает целых 8 байт.
    Если будет нечётное количество BOOL , то и байт будет не четное, соответственно, может залезть на следующую переменную, а точнее сдвинуть её адрес.
    Размер структуры измеряю через SIZEOF, вот и думайте что лучше.
    Последний раз редактировалось kondor3000; 26.04.2024 в 21:49.

  3. #3

    По умолчанию

    Цитата Сообщение от Stanislav_Y Посмотреть сообщение
    Да, я подозревал выравнивание памяти в структуре, читал про это.
    Была структура данных для чтения панелью СП310. В структуре были вперемешку и WORD, и BOOL, плюс еще объединения. Убрал все BOOL и упаковал в прорамме их все в WORD'ды. Проблема решилась.
    Все равно не очень понимаю сути, как влияет привязка булевской переменной к полю bit в регистре ModbusTCP_Slave_Device на другой регистр. Для чего тогда эти поля бит нужны в регистрах?
    Я ведь когда читаю из модуля ввода битовую маску, я присваиваю битовым полям булевские переменные, которые в свою очередь также упакованы в структуры. Так тоже получается нехорошо делать?
    Посмотрите здесь про это - интересная статья

  4. #4

    По умолчанию

    Если будет нечётное количество BOOL , то и байт будет не четное, соответственно, может залезть на следующую переменную, а точнее сдвинуть её адрес.
    Не понимаю как это связано. Ну предположим в структуре у меня нечетное кол-во BOOL (обзовем х1, х2, х3, х4, х5), ну выровняется у меня память в структуре. Будет под экземпляр структуры отведено какое-то количества байт неравное кол-ву BOOL-переменных.
    Я же могу обращаться к полям этой структуры - скажем, присвоить другой переменной хА значение переменной х1 из объявленной структуры. Не должно же при этом меняться значение какой-то третьей переменной.

Похожие темы

  1. Ответов: 7
    Последнее сообщение: 08.12.2023, 08:54
  2. Ответов: 1
    Последнее сообщение: 05.03.2020, 08:38
  3. Глюки в 1.3.22b
    от Андрей555 в разделе Программируемые реле
    Ответов: 20
    Последнее сообщение: 21.10.2011, 16:25
  4. глюки плк
    от bango в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 24.05.2010, 23:44
  5. Глюки
    от Milchuk в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 29.11.2007, 12:08

Метки этой темы

Ваши права

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