PDA

Просмотр полной версии : МСД-100 и Modbus [Несоответствие стандарту?]



eupsychian
13.08.2010, 14:30
Такой вопрос: почему при опросе устройств МСД-100 генерирует запрос (функция #03 Read Holding Registers) не по стандарту Modbus RTU (http://www.modbus.org/docs/PI_MBUS_300.pdf): в поле где должно быть указано кол-во регистров для чтения - он указывает удвоенное их кол-во.

Даю запросы полученные с МСД-100 и ответы на них:

запрос на чтение не подряд идущих 5 и 9 и 6 регистров
05 03 00 04 00 02 84 4e
05 03 04 70 A4 41 F4 D5 07 - ответ

05 03 00 08 00 02 44 4d
05 03 04 8a 00 46 06 27 89 - ответ

05 03 00 05 00 02 D5 8e
05 03 04 41 F4 Ff 7d 6b Ec - ответ


2/2 = 1 (запрос на чтение 1 регистра)
05 03 00 04 00 02 84 4e - запрос 5 регистра.
05 03 04 70 A4 41 F4 D5 07 - ответ

4/2 = 2 (запрос на чтение 2 регистров)
05 03 00 04 00 04 04 4c - запрос 5,6 регистров.
05 03 08 70 A4 41 F4 Ff 7d 42 Ab 0d De - ответ

6/2 = 3
05 03 00 04 00 06 85 8d - запрос 5,6,7 регистров.
05 03 0c 70 A4 41 F4 Ff 7d 42 Ab 8a 00 46 06 F4 68 - ответ

8/2 = 4
05 03 00 04 00 08 04 49 - запрос 5,6,7,8 регистров.
05 03 04 00 00 40 A0 00 00 40 E0 00 00 41 10 00 00 41 30 Ae Ca - ответ

10/2 = 5
05 03 00 04 00 0a 85 88 - запрос 5,6,7,8,9 регистров.
05 03 14 70 A4 41 F4 Ff 7d 42 Ab 8a 00 46 06 Cc Cd 41 78 00 00 42 4a 72 2d - ответ

12/2 = 6
05 03 00 04 00 0c 05 8a - запрос 5,6,7,8,9,10 регистров.
05 03 18 70 A4 41 F4 Ff 7d 42 Ab 8a 00 46 06 Cc Cd 41 78 00 00 42 4a 00 00 3f 80 64 4e - ответ

14/2 = 7
05 03 00 04 00 0e 84 4b - запрос 5,6,7,8,9,10,11 регистров.
05 03 1c 70 A4 41 F4 Ff 7d 42 Ab 8a 00 46 06 Cc Cd 41 78 00 00 42 4a 00 00 3f 80 00 00 42 64 4e 6b - ответ

eupsychian
13.08.2010, 17:53
ВСЁ ОК... Дело тут вот чём было (как мне объяснил сотрудник ОВЕН):
Если формат регистра Float, то при чтении 1 регистра в запросе будет указано 2, при 2 - 4, 3 - 6, и т.д.. Так как тип Float занимает 4 байта области памяти, а в запросе под 1 регистр выделяется 2 байта.