Тема / Topic: Порядок следования байтов в формате Float
ДИМА
Forum Haunter / Завсегдатай форума
Участник № / Member № 6145
отправлено / posted
Добрый день, подскажите какие ключи можно использовать для перестановки байтов в MODBUS TCP/IP для отдельного IP-адреса Я использую ключ для отдельного COM-порта, а мне необходимо использовать ключ для отдельного IP-адреса.
Сообщения / Posts 121 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Для настройки Modbus_Float в Modbus_TCP надо в файле tcp_modbus для каждого устройства ВРУЧНУЮ задать ключ FRMT=SWAP_FLOAT<число DEC>. “число DEC” может принимать значения 0, 1, 2, 3. По умолчанию установлено 1. При этом поддерживаемый порядок байтов 0 – 3-2-1-0 (ModSim32-Float(Swapped)) 1 – 1-0-3-2 (данный порядок следования байтов соответствует стандарту и ModSim32-FloatingPoint и устанавливается по умолчанию) 2 – 0–1–2–3 (данный порядок следования байтов соответствует INTEL) 3 – 2–3–0–1
Надо иметь ввиду, что после каждого "сохранения для МРВ" файл tcp_modbus перезаписывается. Поэтому необходимо восстанавливать нужные настройки повторно.
Если требуется для каких-то Modbus-устройств задать порядок байт INTEL, в строке ДОПОЛНИТЕЛЬНО настройки соответствующих источников Modbus может быть задан ключ FRMT=SWAP_FLOAT: FRMT=SWAP_FLOAT – перестановка_2 для FLOAT. В этом случае вручную корректировать файл tcp_modbus не нужно.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
KingOl
Junior Member / Новичок
Участник № / Member № 7172
отправлено / posted
В каком месте найти строку ДОПОЛНИТЕЛЬНО, и как правильно записать команду?
Сообщения / Posts 6 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Строка "Дополнительно" - в "Источниках Modbus TCP" - это строка "IP-адрес". Например, TCP=192.168.125.163;FRMT=SWAP_FLOAT;
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Legolas
Active Forum Member / Активный участник форума
Участник № / Member № 5047
отправлено / posted
Здравтсвуйте, Версия адастры 6.09 Если мне необходимо для разных контроллеров использовать разную последовательность байт для чтения FLOAT, то я пишу в файле TCP_modbus следующее: UNIT=0 FRMT=SWAP_FLOAT0 PORT=502 TCP=10.0.2.138 TMOUT=0 THMAIN UNIT=1 FRMT=SWAP_FLOAT2 PORT=502 TCP=10.0.2.47 TMOUT=0 THMAIN Здесь всё верно написано? не работает почему-то.
Сообщения / Posts 96 | Из / From: Россия
| IP / IP: IP адрес / IP address |
quote:Отправитель / Originally posted by Legolas: Здравтсвуйте, Версия адастры 6.09
Здесь всё верно написано? не работает почему-то.
Здравствуйте. При использовании "старых" релизов (6.09 - 12.07.2013) следует опираться на актуальную для релиза Справочную Систему.
Для 6.09 есть описание в Справочной Системе - Обмен с контроллерами и УСО - Обмен по встроенным протоколам - Обмен по Modbus: TRACE MODE поддерживает отклонения от стандарта MODBUS при работе с переменными FLOAT. Для выбора порядка следования байтов нужно вручную создать текстовый файл modbus.set в папке узла. ...
В описании к ModBus TCP подобного ключа нет. Возможно, в релизе 6.09 это для TCP не поддерживалось. Файл tcp_modbus в 6.09 еще не введен.
Рекомендуется использовать актуальную версию. Для Trace Mode 6 - 6.10.2 (09.03.2017) Для Trace Mode 7 - 7.1.0.3 (08.04.2024)
При том, порядок чтения байт в рамках устройства можно задавать непосредственно в Среде Разработки.