PDA

Просмотр полной версии : МЭ110-220.3М, MODBUS функция 04 ((Read Input Registers)



bab
10.08.2018, 16:56
Возникла проблема с интеграцией модуля МЭ110-220.3М в систему.

В документации на модуль (http://new.owen.ru/uploads/39/re_me110-220.3m_2675.pdf) в разделе "Г.2 Команды протокола ModBus" есть указание поддерживаемых функций:

Для протокола ModBus реализовано выполнение следующих функций:
– 03, 04 (read registers) – чтение одного или нескольких регистров;
...

Однако, при попытке использовать функцию 04 возвращается ошибка 1 (Illegal function). При этом, функция 03 отрабатывает без ошибок и возвращает значение требуемого регистра.

Пример, попытка прочитать регистр 0x0010 (Байт статуса) выглядит таким образом:


Запрос: 10 04 00 10 00 01
33 4E

Ответ: 10 84 01
D2 C5

Поясните, пожалуйста, это ошибка в документации и устройство не поддерживает функцию 04 или все же есть способ опросить устройство этой функцией?

Хотелось бы избежать использование функции 03, т.к. мастер-устройство для Hodling Register создает 2 запроса на чтение и запись и это поведение не отключить. Попытка записи в регистры только для чтения приводит к ошибке.

Мастеренко Иван
15.08.2018, 16:07
Здравствуйте, bab.

Уточните версию прошивки модуля.
Функцией 03 регистр 0x0010 считывается верно?

При попытке записать регистры (функции 06 и 16), предназначенных только для чтения, или при попытке обращения к несуществующим регистрам возвращается ошибка 1 («Illegal function»). Так как читаете регистр статуса, то писать в него нельзя.
Попробуйте другой ОРС-сервер, в котором можно выставить только чтение.

melky
16.08.2018, 10:15
у Овен нумерация с 0, а такая же нумерация у опрашивающего ?

bab
20.08.2018, 10:21
Уточните версию прошивки модуля.
Версия встроенного ПО:


Запрос 10 03 00 04 00 02
86 8B
10 03 04 31 2E 32 36
00 B1

(строка 1.26)


Функцией 03 регистр 0x0010 считывается верно?
Да, функцией 03 считываются адекватные данные и по этому, и по другим регистрам, согласно спецификации.

Например:

(Считывание названия прибора):

Запрос: 10 03 00 00 00 04
47 48

Ответ:
10 03 08 CC DD 31 31 30 2D 33 CC
36 AA

(строка МЭ110-3М6Є в кодировке win-1251)

(Считывание регистра 0x10):

Запрос: 10 03 00 10 00 01
86 8E

Ответ: 10 03 02 00 70
45 A3


При попытке записать регистры (функции 06 и 16), предназначенных только для чтения, или при попытке обращения к несуществующим регистрам возвращается ошибка 1 («Illegal function»). Так как читаете регистр статуса, то писать в него нельзя.
Попробуйте другой ОРС-сервер, в котором можно выставить только чтение.
C системой мы разобрались, настроили ее для использования функции 03.

Но все равно остался один вопрос и появился один новый вопрос.

1. То, что не работает функция 04 -- это ошибка в документации (она там упомянута по ошибке) или в прошивке прибора?

2. Для регистра 0x10 ("Байт статуса") было замечено, что биты 4, 5 и 6 (выход за границу диапазона фазы A, B и C) всегда установлены в 1 независимо от подачи напряжения на входные клеммы. При этом, индикаторы на панели прибора горят непрерывно и индикатор "авария" на панели прибора не горит. Если подавать сигнал только на одну клемму (например, индикатор "UA" горит постоянно, а индикаторы "UB" и "UC" мигают), то все равно, значение всех битов 4, 5 и 6 -- единица.

В чем здесь (по вопросу 2) может быть проблема? Ошибка в прошивке прибора?

Мастеренко Иван
23.08.2018, 13:02
Здравствуйте, bab!
Действительно, было выявлено отсутствие поддержки функции 0x04 в текущей версии прошивки. В следующем релизе она будет поддержана.
С регистром «байт статуса» дело тоже в прошивке. Не происходит обнуление после устранения ошибки. Будет устранено в следующем релизе.

bab
23.08.2018, 17:44
Иван, спасибо за пояснение!