Модуль на 2 реле modbus rtu
May. 22nd, 2024 09:03 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Протестировал и этот модуль. Купил его за 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()).
У продавца описаны регистры, вкратце перечислю.
Сразу отмечу: китайцы опять в своем репертуаре! "Их" модбас не понимает широковещательной команды (где 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()).