Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Modicon M340+modbus
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
olegsv
Здравствуйте!
Ранее я не связывался с modbus на M340 (другие контроллеры или как то обходил это). Возникла необходимость прикрутить к контроллеру прибор. Решил проверить перед покупкой на совместимость (а то были казусы)
Из доки на прибор:
Прибор поддерживает сообщения, содержащие функции типа 03 и 04 (см. таблицу 8). В ответе на запрос от компьютера на чтение из определенного поля может содержаться функция типа 03 или 04 в зависимости от формата полученного запроса.
Отличие этих функций заключается в том, что при использовании функции типа 03 прибор посылает только целую часть значения поля, запрашиваемого компьютером. Соответственно, компьютер отобразит в соответствующем поле значение целой части.
При использовании функции типа 04 значение запрашиваемого поля передается в виде целой и дробной части, хранящихся в отдельных регистрах. Компьютер объединяет целую и дробную часть в единое число с плавающей точкой. Подробнее информация об операциях с плавающей точкой содержится в документе IEEE Standard 754 Floating Point.

В нелпе нарыл:
The Real format (floating point in ANSI/IEEE 754 standard) is coded in 32 bit format which corresponds to the single decimal point floating numbers.
И по функция
Read words (until 125 registers) 16#03 READ_VAR
Read input words (until 124 registers) 16#04 SEND_REQ


Вроде все нормально, но у меня какое-то ощущение, что что-то я не досмотрел.
под рукой железа пока нет и проверить не могу.
Как думаете можно будет считать float или заранее искать обходные пути?
Может кто сталкивался с подобным?
san
1) Сейчас UNITY PRO под рукой нет. Но по моему можно считать регистры через 04 (read input registers) функцией READ_VAR задав в параметрах "%IW", а задав "%MW" - будут считываться регистры функцией 03 (read holding registers).
2) В модбасе нет функций чтения флоатов. По этому нужно считывать в 2 раза больше регистров, потом обращаться к ним как к real. Например, можно выделить массив для приема %MW40:2 и опредлить переменную fVar1 как real привязанную к %MW40. Правда возможно придётся поиграться с изменением порядка регистров младший/старший.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.