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

Тема: переменные Modbus и STRUCT

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

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

    По умолчанию переменные Modbus и STRUCT

    Добрый день!
    подскажите пожалуйста, по созданию и опросу переменных по Modbus...
    Пробую организовать обмен через структуры (STRUCT), то-есть в программе все/необходимые переменные ссылаются на переменные в STRUCT.
    Вопрос в следующем - в самой STRUCT как необходимо организовать/создавать переменные, в каком порядке?
    Я слышал, что необходимо сначала все REAL, DWORD, WORD, потом INT потом BOOL, BIT...
    тогда адресация переменных для Modbus будет строиться на основе этого порядка все REAL, DWORD, WORD адреса так - 0, 2, 4, 6, итд. Далее все остальные по порядку например 127, 128, 129 ... и тд.
    так ли это?
    или я могу создавать переменные в любом порядке, как мне необходимо?
    тогда вопрос - как и каким образом правильно будет выполнять вычисление и присваивание MB адреса переменной?
    Допустим сначала идут 11 штук REAL - адреса 0-2-4...20, далее 4 шт INT, адреса у них 22-23-24-25, далее 4 шт BIT, адреса у них 416-417-418-419
    А вот далее как? Допустим решил добавить еще 3 шт REAL... могули я их в конец списка добавить? Или необходимо их добавлять там же где и остальные REAL, и тогда остальная адресация смещается?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,603

    По умолчанию

    Добрый день.

    1. Используйте при создании структуры атрибут

    Код:
    {attribute 'pack_mode' := '0'}
    чтобы отключить выравнивание памяти (которое в посте ниже упомянул 1exan).

    2. После этого можете располагать переменные в любом удобном порядке с контролем того, что они корректно накладываются на регистры Modbus (регистр Modbus занимает 2 байта/16 бит).
    Например, если используются типы BOOL/BYTE/USINT (которые занимают байт) - они должны объявляться пачками по два, чтобы занять весь регистр.
    Если используете BIT - то объявляйте их пачками по 16.

  3. #3

    По умолчанию

    Евгений, благодарю за ответ.
    Исходя из 2 пункта, я правильно понимаю, что мои переменные будут выстраиваться по следующему принципу:
    допустим сначала 2 шт REAL для них регистры 0-2,
    потом 2 шт INT для них 4-5,
    потом 2 шт BIT с адресами 96-97,
    потом допустим опять 2 шт REAL, с адресами 8-10,
    потом например 2 шт BOOL с адресами 192-193
    ?

  4. #4

    По умолчанию

    Евгений,
    то есть если применяю переменные BIT, то например если у меня 4 переменных, то необходимо еще 12 добавить или сделать их резервными, или "пропустить" 12 шагов?

  5. #5
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,603

    По умолчанию

    Цитата Сообщение от dkkwrk Посмотреть сообщение
    Евгений,
    то есть если применяю переменные BIT, то например если у меня 4 переменных, то необходимо еще 12 добавить или сделать их резервными, или "пропустить" 12 шагов?
    Добавьте еще 12 резервных.

  6. #6

    По умолчанию

    Размер занятого пространства перед переменной должен нацело делиться на размер этой переменной, в противном случае перед этой переменной автоматически образуется отступ недостающего размера

  7. #7
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,603

    По умолчанию

    потом 2 шт BIT с адресами 96-97,
    См. выше - "если используете BIT - то объявляйте их пачками по 16."
    Подробнее про биты в структурах: п. 1.1.3
    https://ftp.owen.ru/CoDeSys3/98_Book...nipulation.pdf

    потом например 2 шт BOOL с адресами 192-193
    Два BOOL займут один регистр (потому что в CODESYS размер BOOL - это байт).
    Но, вероятно, вам будет проще вообще отказаться от BOOL в структурах в пользу BIT.

Похожие темы

  1. ПЛК110-60 (М02) переменные ModBus
    от JIexa21 в разделе ПЛК1хх [М02]
    Ответов: 2
    Последнее сообщение: 16.08.2016, 10:29
  2. ПЛК63 и MODBUS переменные
    от Alex989 в разделе ПЛК63/73
    Ответов: 6
    Последнее сообщение: 27.03.2011, 17:29
  3. Modbus slave переменные
    от Дмитрий77 в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 30.04.2010, 15:26
  4. Переменные через Modbus
    от ourtime в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 30.08.2009, 11:04
  5. ModBus переменные
    от Ушаков Николай в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 15.06.2007, 10:21

Ваши права

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