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

Тема: Помогите с выравниванием

  1. #1

    По умолчанию Помогите с выравниванием

    Добрый день!
    Прошу помочь.

    По моему, я не совсем разобрался с выравниванием, но может быть дело во float. Честно, много читал, но все равно не понимаю

    Проблема вот в чем. По логике выравнивания номер регистра первого float должен быть 2, а второго - 4.

    Но при установке этих параметров на панель выводятся неверные значения!

    Если же я ставлю 3 и 5, то все ок...

    Также странно, что шестым у меня идет ASCII строка, которая по идее, должна быть седьмой, так как float занимает две пары байтов, но чтобы она правильно выводилось - надо поставить 6.

    В общем, помогите пожалуйста!
    Изображения Изображения
    С Уважением,
    Василий.

  2. #2
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    По логике выравнивания номер регистра первого float должен быть 2, а второго - 4.
    Если первый float будет по адресу 2, то какой по-вашему адрес должен быть у третьего «8 bits»?

  3. #3

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Если первый float будет по адресу 2, то какой по-вашему адрес должен быть у третьего «8 bits»?
    Как во втором столбце второй таблицы - №1.

    первый и второй "8бит" - в нулевом регистре
    третий и "пустое место для выравнивания" в первом регистре
    первый флоат во втором регистре

    Тут еще непонятка.
    По теории выравнивания - первый float должен вроде выравниваться по адресу, кратному 4, т.е. вроде как вообще должен иметь адрес 4...
    С Уважением,
    Василий.

  4. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от gvasily Посмотреть сообщение
    Как во втором столбце второй таблицы - №1.

    первый и второй "8бит" - в нулевом регистре
    третий и "пустое место для выравнивания" в первом регистре
    первый флоат во втором регистре

    Тут еще непонятка.
    По теории выравнивания - первый float должен вроде выравниваться по адресу, кратному 4, т.е. вроде как вообще должен иметь адрес 4...
    В таблице красиво нарисовано, но в конфигурация MODBUS ей не соответствует "пустого места для выравнивания" то и нет три раза по "8бит" и сразу "первый флоат "

  5. #5
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Таблица - соответствует. Конфигурация неявно запендюрит еще байт. Курим про выравнивание.
    1флоат - 2,3
    2флоат - 4,5
    Тока вот для ИП слова в реалах нужно переставлять.
    Настроил 1 флоат с 3 (3,4)- получил приблизительно правильный рез-т т.к. любое значение второго слова влияет в пределах 1%

    По теории выравнивания - первый float должен вроде выравниваться по адресу, кратному 4 байт, т.е. вроде как вообще должен иметь адрес 4 -й байт -> 2 регистр...
    to gvasily
    А почему в ИП "число регистров" - 1 ?
    Последний раз редактировалось Валенок; 30.10.2012 в 21:55.

  6. #6

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Тока вот для ИП слова в реалах нужно переставлять.
    Каким образом переставлять? Видел "переставление" в примере вывода строки ASCII. Целая процедура...

    Цитата Сообщение от Валенок Посмотреть сообщение
    Настроил 1 флоат с 3 (3,4)- получил приблизительно правильный рез-т т.к. любое значение второго слова влияет в пределах 1%
    А, помню, когда разные варианты перебирал, какое-то число он вывел на 0.1 меньше, но я в голову не взял.

    Цитата Сообщение от Валенок Посмотреть сообщение
    Настроил 1 флоат с 3 (3,4)- получил А почему в ИП "число регистров" - 1 ?
    Если ставлю 2 - выводит нули
    С Уважением,
    Василий.

  7. #7

    По умолчанию

    Цитата Сообщение от gvasily Посмотреть сообщение
    Каким образом переставлять? Видел "переставление" в примере вывода строки ASCII. Целая процедура...
    ИП читает в нормальной последовательности регистры, переставлять ничего не надо


    Цитата Сообщение от gvasily Посмотреть сообщение
    Если ставлю 2 - выводит нули
    Все правильно, адрес регистра для первого флоата - 2, для второго - 4, а нули выводит, скорее всего, из-за того, что кол-во регистров Вы так и оставили 1 в конфигураторе ИП, а надо поставить - 2.

  8. #8

    По умолчанию

    Цитата Сообщение от Гарчев Евгений Посмотреть сообщение
    ИП читает в нормальной последовательности регистры, переставлять ничего не надо

    Все правильно, адрес регистра для первого флоата - 2, для второго - 4, а нули выводит, скорее всего, из-за того, что кол-во регистров Вы так и оставили 1 в конфигураторе ИП, а надо поставить - 2.
    Евгений, Вы правы!!
    Я поставил два регистра, но забыл изменить адрес на 2!!!

    Теперь все выводится как надо!

    Спасибо!
    Тема закрыта.
    Изображения Изображения
    С Уважением,
    Василий.

  9. #9
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Вот ведь удивится автор темы просто поменяв ИП на СП.

    PS
    А техподдержке не мешало бы сказать что real-слейв переставляет слова непосредственно в конфигурации.

Ваши права

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