PDA

Просмотр полной версии : как вычислить адрес



Stas
12.10.2015, 11:46
В проекте есть переменные float,4byte, 8 bits
пытаюсь вычислить адрес (тот что в рамке )получается он должен быть 38 это правильно? а то что-то не работает с этим адресом

lara197a
12.10.2015, 11:57
Для удобства, в проекте нужно ставить сначала 8 бит, потом байты.
для расчетов есть табличка.
(афтор нея, сам скачал с форума)


Прикрепить эксель не получается. Пишите в личку емайл, отправлю.

Вольд
12.10.2015, 11:57
В проекте есть переменные float,4byte, 8 bits
пытаюсь вычислить адрес (тот что в рамке )получается он должен быть 38 это правильно? а то что-то не работает с этим адресом

А зачем он тебе нужен ?

capzap
12.10.2015, 11:58
как не работает, совсем ни чего не принимает или не те значения приходят?

Stas
12.10.2015, 12:03
Те значения что Float я вижу нормально(В Trace Mode Adastra)мне нужно настроить управление задвижками вот думаю что адрес не правильный у меня

capzap
12.10.2015, 12:13
причем тут Ваши флоаты, в 38 регистре Вы что видите?

petera
12.10.2015, 12:19
В проекте есть переменные float,4byte, 8 bits
пытаюсь вычислить адрес (тот что в рамке )получается он должен быть 38 это правильно? а то что-то не работает с этим адресом
Какой такой 38, Вы же к битам будете обращаться
20365
http://www.owen.ru/forum/attachment.php?attachmentid=12345&d=1395648726

Stas
12.10.2015, 12:20
в 38 регистре не вижу совсем ничего , в том то и дело, то что обведено в картинке какой номер регистра имеет 38 все же или нет?

capzap
12.10.2015, 12:27
Какой такой 38, Вы же к битам будете обращаться

два модуля по 8 бит равно одному регистру, на другом то конце могут и не знать биты там складываются или целочисленное значение

capzap
12.10.2015, 12:28
в 38 регистре не вижу совсем ничего , в том то и дело, то что обведено в картинке какой номер регистра имеет 38 все же или нет?
должен быть 38

ошибки какие дает скада? лог какой нибудь есть, запросов/ответов?

melky
12.10.2015, 13:09
Какой такой 38 ? Адастра с нулевого считает ? может как и многие другие с 1-ого ?

Uniqum
12.10.2015, 15:13
http://www.owen.ru/forum/showthread.php?t=21594&p=174004#post174004

Stas
14.10.2015, 11:25
Вернемся, так сказать, к нашим баранам. Упростил в 20395 Codesys'е. Считываю через Trace Mode, через ethernet, для чтения float номер регистра выбираю 0x00, а байт считать не получается, не по одному из регистров, перепробовал до 0x12.

melky
14.10.2015, 11:33
Stas float у вас правильно считывается по регистру 0 ?
Если правильно, то по 4-му регистру будет два байта (один регистр), в Адастре возможно необходимо поменять местами байты.

capzap
14.10.2015, 11:34
Вернемся, так сказать, к нашим баранам. Упростил в 20395 Codesys'е. Считываю через Trace Mode, через ethernet, для чтения float номер регистра выбираю 0x00, а байт считать не получается, не по одному из регистров, перепробовал до 0x12.

Вы бы еще указывали какими функциями и что читаете, если хотите прочитать коилсы первой фукцией, то Ваш байт начинается с 32 адреса, если третьей то требуется добавить еще один 8битный модуль и только после этого читать второй регистр

Stas
14.10.2015, 11:42
float считывается правильно (для трасе мода файл modbus.set , число 2 внутри ). И я насчитал 4 регистр , 0x02 для трасе мода (там пусто, канал показывает недостоверность).
to capzap в трасе моде не указываются функции. 32 адрес , нумерация по памяти внутри контроллера и какая сист счисл?

Stas
14.10.2015, 11:52
ModBus recieve error from unit_1(10.0.2.11:502) err=2 Rin_Byte(2)#4 в логе.

Stas
14.10.2015, 12:35
to capzap читаю 4 функцией, считал значение из регистра Modbus 0x02, но суть в том что нужно в данный байт записывать значение, те 16 функцией, но к какому регистру?

melky
14.10.2015, 13:07
Почему вдруг для трейс мода 4-й регистр стал вторым ? непонятно...
блин. 0,1 регистры это флоат, 2 это регистр с байтом, проверять расположение байт в регистре

Stas
14.10.2015, 14:18
смотря о каких регистрах разговор. Если память контроллера то да 0,1 это флоат, который для модбаса регистр 0x00. 2,3 регистр в памяти то 0x02 регистр модбаса

Stas
14.10.2015, 14:19
все таки уперся в то по какому адресу записывать байт 16 функцией модбаса

capzap
14.10.2015, 14:47
to capzap читаю 4 функцией, считал значение из регистра Modbus 0x02, но суть в том что нужно в данный байт записывать значение, те 16 функцией, но к какому регистру?
не важно третьей или четвертой читать или 16 записывать, у Вас в логах должна приходить ошибка от слейва, потому что 2 регистр не полный, один байт это только полрегистра

Stas
15.10.2015, 11:10
[РЕШЕНО] Контекст: Овен ПЛК 110-30, Codesys 2.3, TraceMode 6.09, связь по Ethernet. В TraceMode чтение флоатов осуществляется через компонент "Rin_Float(4)" 4 функцией модбаса (указана в скобках). На картинке первом посту, первый флоат читается по номеру канала 0x00 в трасемоде, последний флоат по адресу 0x20 (). 0x22 , 0x24 адреса для первого и второго регистра в которых лежат 4 байтовые переменные. Можно заводить только одну группу на 8 бит, её можно будет записать в модбас регистр номер 0x26 компонентом "W_Word(6)" в трасемоде, 6 функцией модбаса (указана в скобках) . Есть вопросы пишите.