eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2024-05-22 09:03 pm

Модуль на 2 реле modbus rtu

Протестировал и этот модуль. Купил его за 351р (сейчас он стоит 393р).
У продавца описаны регистры, вкратце перечислю.
Сразу отмечу: китайцы опять в своем репертуаре! "Их" модбас не понимает широковещательной команды (где ID=0) - охрененная подстава (особенно когда нужно экстренно все висящие на шине релюхи поотключать)!

Формат запроса стандартный (№ байта - функционал; CRC опускаю): 0 - ID; 1 - код команды (понимают только 3, 6; пишут, что и 16 понимает - не проверял); 2 - нуль (все регистры умещаются в 1 байт); 3 - регистр; 4,5 - данные. Ответ: 0 - ID; 1 - код команды (OR 0x80 в случае ошибки); 2 - длина данных (или код ошибки); 3... - данные.
К релюхам можно обращаться как по индивидуальным регистрам (0 - первая релюха, 1 - вторая), так и группой (регистр 70). В первом случае значение имеет младший бит старшего байта команды (внезапно!), однако, нуль не работает. Во втором случае значение имеют два младших бита команды (т.е. пошлем 8, релюхи отключатся, как и если пошлем 0). Нулевой бит - первая релюха, первый - вторая. Т.е. отключить обе релюхи проще командой "ID 6 0 70 0 0", нежели последовательностью "ID 6 0 0 2 0; ID 6 0 1 2 0". А вот включать по-отдельности лучше индивидуально (чтобы лишний раз не считывать значение регистра 70).
Если релюха одна, то можно вместо ID писать FF (вообще не по стандарту!) - например, установить ID неизвестной релюхи или считать его.
Регистр FC - интервал между получением команды и выполнением (0..1000 миллисекунд).
Регистр FD позволяет установить или считать идентификатор.
Регистр FE - бодрейт: 1 - 2400, 2 - 4800, 3 - 9600 (умолчание), 4 - 19200, 5 - сброс.

Релюха работает, продавец заслужил 5 звезд, а вот производитель - мудак, т.к. реакция на broadcast обязана быть. Буду эту релюху использовать для тестов переходника USB<>modbus rtu, как дойдут до этого руки. Ну или просто алгоритмы работы (очень быстрое чтение/запись) с компьютера (по-видимому, лучшим вариантом нужную задержку выдержать, будет воткнуть паузу на select()).

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org