Просмотр полной версии : Помогите с выравниванием
Добрый день!
Прошу помочь.
По моему, я не совсем разобрался с выравниванием, но может быть дело во float. Честно, много читал, но все равно не понимаю :(
Проблема вот в чем. По логике выравнивания номер регистра первого float должен быть 2, а второго - 4.
Но при установке этих параметров на панель выводятся неверные значения!
Если же я ставлю 3 и 5, то все ок...
Также странно, что шестым у меня идет ASCII строка, которая по идее, должна быть седьмой, так как float занимает две пары байтов, но чтобы она правильно выводилось - надо поставить 6.
В общем, помогите пожалуйста!
По логике выравнивания номер регистра первого float должен быть 2, а второго - 4.Если первый float будет по адресу 2, то какой по-вашему адрес должен быть у третьего «8 bits»?
Если первый float будет по адресу 2, то какой по-вашему адрес должен быть у третьего «8 bits»?
Как во втором столбце второй таблицы - №1.
первый и второй "8бит" - в нулевом регистре
третий и "пустое место для выравнивания" в первом регистре
первый флоат во втором регистре
Тут еще непонятка.
По теории выравнивания - первый float должен вроде выравниваться по адресу, кратному 4, т.е. вроде как вообще должен иметь адрес 4...
Как во втором столбце второй таблицы - №1.
первый и второй "8бит" - в нулевом регистре
третий и "пустое место для выравнивания" в первом регистре
первый флоат во втором регистре
Тут еще непонятка.
По теории выравнивания - первый float должен вроде выравниваться по адресу, кратному 4, т.е. вроде как вообще должен иметь адрес 4...
В таблице красиво нарисовано, но в конфигурация MODBUS ей не соответствует "пустого места для выравнивания" то и нет три раза по "8бит" и сразу "первый флоат "
Таблица - соответствует. Конфигурация неявно запендюрит еще байт. Курим про выравнивание.
1флоат - 2,3
2флоат - 4,5
Тока вот для ИП слова в реалах нужно переставлять.
Настроил 1 флоат с 3 (3,4)- получил приблизительно правильный рез-т т.к. любое значение второго слова влияет в пределах 1%
По теории выравнивания - первый float должен вроде выравниваться по адресу, кратному 4 байт, т.е. вроде как вообще должен иметь адрес 4 -й байт -> 2 регистр...
to gvasily
А почему в ИП "число регистров" - 1 ?
Тока вот для ИП слова в реалах нужно переставлять.
Каким образом переставлять? Видел "переставление" в примере вывода строки ASCII. Целая процедура...
Настроил 1 флоат с 3 (3,4)- получил приблизительно правильный рез-т т.к. любое значение второго слова влияет в пределах 1%
А, помню, когда разные варианты перебирал, какое-то число он вывел на 0.1 меньше, но я в голову не взял.
Настроил 1 флоат с 3 (3,4)- получил А почему в ИП "число регистров" - 1 ?
Если ставлю 2 - выводит нули :(
Гарчев Евгений
31.10.2012, 10:51
Каким образом переставлять? Видел "переставление" в примере вывода строки ASCII. Целая процедура...
ИП читает в нормальной последовательности регистры, переставлять ничего не надо
Если ставлю 2 - выводит нули :(
Все правильно, адрес регистра для первого флоата - 2, для второго - 4, а нули выводит, скорее всего, из-за того, что кол-во регистров Вы так и оставили 1 в конфигураторе ИП, а надо поставить - 2.
ИП читает в нормальной последовательности регистры, переставлять ничего не надо
Все правильно, адрес регистра для первого флоата - 2, для второго - 4, а нули выводит, скорее всего, из-за того, что кол-во регистров Вы так и оставили 1 в конфигураторе ИП, а надо поставить - 2.
Евгений, Вы правы!!
Я поставил два регистра, но забыл изменить адрес на 2!!!
Теперь все выводится как надо!
Спасибо!
Тема закрыта.
Вот ведь удивится автор темы просто поменяв ИП на СП.
PS
А техподдержке не мешало бы сказать что real-слейв переставляет слова непосредственно в конфигурации.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot