PDA

Просмотр полной версии : Modbus ASCII МСД-100



eupsychian
27.04.2011, 15:42
Подключил МСД-100. В роли ведомого выступает порт компьютера.
Протокол Modbus ASCII. Запрос от МСД получаю следующий:


BA B0 B1 B0 B3 B0 B0 B0 B0 B0 B0 B0 C1 C6 B2 8D 8A

Но ведь значения всех байтов смещены на 0x80! Почему так ???

Должно же приходить следующее:

3A 30 31 30 33 30 30 30 30 30 30 30 41 46 32 0D 0A

Т.е. в ASCII символах:

: 01 03 0000 000A 2F CR LF

: (aka 0x3A) - символ двоеточия - начало фрейма

0x01 - адрес,
0x03 - номер фукнции,
0x0000 - начальный адрес (начиная с нулевого регистра)
0x000A - до 10 регистра (т.е. 11 регистров),
0x2F - байт LCR (Longitudinal Redundancy Check)

конец фрейма:
CR (aka 0x0D) - Возврат каретки
LF (aka 0x0A) - Подача строки

Сомневаюсь, что это хоть как то связано с signed и unsigned char.

P.S. Конечно в алгоритме можно сделать смещение на 128 (0x80) позиций назад и дело в шляпе. Да вот правильно ли это ???

eupsychian
27.04.2011, 15:55
Вопрос решился сам собой через установку размера байта данных 7 бит вместо 8 как в Modbus RTU.