Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15

Тема: Неправильно отображаются значения переменных (ПЛК-154 slave, СП270-Т master)

  1. #11
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,293

    По умолчанию

    у меня кроме 2 байтов было и 8 бит, с 9го адреса считывал отчетливо 4х байтовую
    Но чтобы получать ликвидные данные, а не часть от одного параметра, а часть от другого стоит следовать документации.
    Что бы сильно не портить настроение на оставшийся выходной на этой неделе, поверте что все в этой истории посвоему правы. Если задать в конфигураторе разнообразные по количеству байт переменные и требуется в них что то записать от внешнего мастера, то следует помнить о выравнивании, о том что перед 4-х байтовой переменной может образоваться "пустота". Это как в рассказе Задорнова про девятый вагон: "Девятый вагон это тот который после восьмого, а не перед 10", может возникнуть путаница на какой адрес записывать 4-е байта
    Но, если писать организацию обмена с помощью библиотек модбаса, то становиться уже не важно как устроена адресация в КДС, внешним мастером записываете с 9 регистра 4-байта, то и в ПЛК считываете 4 байта начиная с 9 регистра

  2. #12

    По умолчанию

    Полностью сгласен. И мы стараемся дать клиенту выбор. По этому и SysLibCom поддержана, и библиотеку ModBus делаем...

  3. #13

    По умолчанию

    Ребята, давайте жить дружно! Спасибо всем. Но я окончательно запутался в многообразии ответов.
    Я перепробовал кучу вариантов 8, 10, 12, 14 (как советовал Андрей), 8, 12, 16, 20 (как советовал capzap) и др. варианты, но правильно отображаются только 9 и 13 при раскладе (7, 9, 11, 13). Я понимаю, что это не правильно, но это так.
    Где я туплю???
    Андрей, я всегда стараюсь читать документацию. Использовал даже картинку "Сквозная адресация параметров (ПЛК-SLAVE)", которую нашел где-то на форуме... И, в результате был вынужден обратиться на форум за помощью. М.б Вы дадите ссылку на документ, где поподробнее описана данная тема?
    Спасибо.

  4. #14

    По умолчанию

    Да мы и не ругаемся - общение с грамотными специалистами заставляет не расслабляться и двигаться вперед.
    Вот, к примеру, в документацию заглянул, и увидел, что там опечатка... Исправим.
    Резюмирую:
    0. Есть область памяти в контроллере. Есть карта ModBus адресов. О ней я ниже и буду говорить.
    1. Область памяти одна. Что для битов, что для регистров.
    2. Рекомендую (из опыта)начинать добавлять переменные с наименьших (то есть с битовых переменных).
    Две 8-ми битные переменные занимают два байта - регистр.
    2-х байтные переменные - регистр.
    4-х байтные - 2 регистра.
    3. Адресация регистров начинается с нулевого.
    4. Адресация 2-х байтных переменных идет кратной 1.
    5. Адресация 4-х байтных перменных - двум. То есть 0,2,4,6 и т.д. (как раз тут в документации ошибка). То есть если у Вас добавлено двухбайтное число, и оно попало в регистр с адресом 2, а за ним идет 4-х байтное - адрес у 4-х байтного будет 4 а не 3. Один регистр останется пустым, в жертву выравнивания.
    Подробно это описано в руководстве по программированию или РП - раздел ModBus Slave (шестидесятые и 90-е страницы соответсвенно) - очень понятная таблица выравнивания.
    Последний раз редактировалось Николаев Андрей; 22.05.2011 в 02:29.

  5. #15
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,293

    По умолчанию

    4. Адресация 2-х байтных переменных идет кратной 1.
    5. Адресация 4-х байтных перменных - двум.
    Снова вмешаюсь, эти пункты относительно адресов регистров, мой коммент относительно кратности двум и четырем относился к байтам

Страница 2 из 2 ПерваяПервая 12

Ваши права

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