Просмотр полной версии : RS485 Modbus int32 переменные в ПР200 (Slave)
Здравствуйте!
Есть устройство ПР200 работающее в режиме slave по RS485. В среде Owen Logic переменные в этом режиме объявляются без указания количества регистров.
42398
Вместе с тем в режиме симуляции им можно присваивать значения больше 65535, а значит фактически переменные являются 32-битными.
В режиме Master можно выбрать 2 регистра для переменной, тем самым объявив её 32 битной:
42397
Вопросы:
1. Как задавать 32-битные целочисленные переменные в режиме slave?
2. Как их считывать master-устройством? (В каких регистрах они хранятся?)
3. Где задаётся порядок байт и регистров для них?
Ревака Юрий
22.04.2019, 17:30
Здравствуйте!
Есть устройство ПР200 работающее в режиме slave по RS485. В среде Owen Logic переменные в этом режиме объявляются без указания количества регистров.
42398
Вместе с тем в режиме симуляции им можно присваивать значения больше 65535, а значит фактически переменные являются 32-битными.
В режиме Master можно выбрать 2 регистра для переменной, тем самым объявив её 32 битной:
42397
Вопросы:
1. Как задавать 32-битные целочисленные переменные в режиме slave?
2. Как их считывать master-устройством? (В каких регистрах они хранятся?)
3. Где задаётся порядок байт и регистров для них?
1. Использовать 2 регистра, в мастере соответственно учитывать этот момент, т.е регистры должны быть расположены рядом. 512-513, 513-514 и т.д
2. Мастером читать 2 регистра если это ПР200 (указываем что INT 2 регистра), либо что это INT32 для других вариантов, либо по обстоятельствам, но обязательно должно читаться 2 регистра.
3. В мастере в любом случае, в зависимости от того кто мастер, у каждого свои настройки, в ПР200 они в настройках сетевого устройства.
Спасибо, в целом понятно, но небольшое уточнение.
По третьему вопросу: Вы имеете ввиду вот эти настройки? Меня смутило, что они отмечены, как настройки float. Значит они работают и для int переменных?
42400
То есть если в ПР200 slave переменная int регистра 512 превысит величину 65534, то будет автоматически задействован следующий регистр 513 согласно настройкам порядка очерёдности байт, но в интерфейсе это не будет отображаться.
И, если, например, верхний регистр согласно этим настройкам идёт первым, то после значения 65534 они поменяются местами (ведь переменная перестанет быть 16 битной. Правильно ли я понял?
Ревака Юрий
22.04.2019, 18:47
Спасибо, в целом понятно, но небольшое уточнение.
По третьему вопросу: Вы имеете ввиду вот эти настройки? Меня смутило, что они отмечены, как настройки float. Значит они работают и для int переменных?
42400
То есть если в ПР200 slave переменная int регистра 512 превысит величину 65534, то будет автоматически задействован следующий регистр 513 согласно настройкам порядка очерёдности байт, но в интерфейсе это не будет отображаться.
И, если, например, верхний регистр согласно этим настройкам идёт первым, то после значения 65534 они поменяются местами (ведь переменная перестанет быть 16 битной. Правильно ли я понял?
Для слейва в ПР эти настройки не работают, поэтому все перекладывается на мастер, и организовывать INT32 нужно самостоятельно, при превышении 65535, ничего самостоятельно не добавится, необходимо из INT32 в логике которое по умолчанию, сдвигом формировать 2 сетевых регистра.
Огромное спасибо за ответы! Теперь всё понятно.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot