PDA

Просмотр полной версии : МДВВ версия 1.09 и modbus RTU



Vasily_A
21.01.2010, 10:30
МДВВ (версия 1.09) работает с компом через АС3, modbus RTU, скорость 115200
требуется минимум - чтение входов и щелканье реле...
чтение работает без проблем (регистр 51), а с записью (регистр 50) полная ерунда...
пример, что именно посылается:
0х10 0х10 0х00 0х32 0х00 0х01 0х00 0х00 crc16
где
0х10 - адрес (16 дес.)
0х10 - функция запись регистров
0х00 0х32 номер регистра 0х0032 (50 дес.)
0х00 0х01 длинна данных (1 16-бит регистр)
0х00 0х00 данные
crc16 - контрольная сумма
в итоге - включаются три реле :(
при других данных - возникают ошибки "недопустимый адрес","недопустимые данные"

программа с этой реализацией модбуса работает с другим оборудованием без проблем (например с МВА8)

может где старшие-младшие байты попутаны, или "особеность" реализации, поля номера\длинны не 16 бит а 8?

еще вопрос - а регистры должны все читаться? или есть доступные только на запись?

Vasily_A
21.01.2010, 23:18
отвечаю сам себе (может кому еще пригодится)
между длинной данных (0х00 0х01) и самими данными надо вставить таинственный байт, равный 0х02, тогда все работает...
пример посылки:
0х10 0х10 0х00 0х32 0х00 0х01 0х02 0х00 0х00 crc16

вот такой вот диалект модбаса загадочный... придется делать отдельную ветку в программе для чтения именно мдвв :(

Филоненко Владислав
22.01.2010, 07:25
МДВВ полностью соответствует стандарту ModBus. Какой такой диалект?

Дмитрий Егоренков
22.01.2010, 13:34
вы бы описание функции 0x10 в протоколе почитали, прежде чем народ пугать. 2 -- это размер данных в байтах.

Vasily_A
22.01.2010, 20:53
да, был неправ...
посмотрел спецификацию модбаса, размер в байтах действительно есть.

интересно то, что неколько разных приборов разных производителей работали именго без этого поля...