Modbus-релюшка

Sep 18, 2024 14:34

Купили на работу несколько вот таких релюшек.
Продавец вообще не описал ни скорость подключения, ни протокол. ОК, пробую просто прочесть широковещательным запросом: 00 01 00 01 00 01 [CRC] - хрена с два! В поле адреса ставил 1, FF - тоже без отклика. Сейчас попробую другие скорости помимо 9600. Но что-то хрень какая-то…

UPD: нашел здесь описание ( Read more... )

рукожопие, железяки, негодую

Leave a comment

Comments 7

borodux September 18 2024, 12:05:36 UTC
Игрался с похожей релюшкой на 4 и 8 портов. На той, что на 8 портов, были такие команды:

вкл первый порт
0x01, 0x06, 0x00, 0x01, 0x01, 0x00, 0xD9, 0x9A
вЫкл первый порт
0x01, 0x06, 0x00, 0x01, 0x02, 0x00, 0xD9, 0x6A

4-й байт - номер порта

И да, скорость была 9600. Вроде там как-то можно регистрами перезадать скорость. Но мне это не нужно было.

А вот для 4-портовой релюхи, уже не помню, но то ли там номера портов были с 0, то ли еще что-то. Вечером дома покопаюсь в архивах. И еще есть софт, чтобы с компа можно было в шину команды отправлять сразу по нужным регистрам.

Reply

eddy_em September 18 2024, 12:57:30 UTC
Мой tty_term автоматом CRC считает для посылки модбас. Поковырял все команды по ссылочке из "upd": действительно, частично они реализуют стандарт. Например, чтобы все релюшки включить/выключить за один присест, используется 0x0F - write multiple coils, а для одного канала - 0x05 - write single coil; аналогично со считыванием: 0x01 (read single coil) для состояния релюшек (правда, нужно указывать количество 8, а в ответе придет 1 байт - побитно; что не по стандарту), 0x02 (read discrete input) для входов (тоже надо писать ADDR 02 00 00 00 08 CRC).
И, как я уже говорил, вообще не поддерживаются сообщения об ошибках. Уж если ты пинаешь по нулевому (широковещательному) адресу какую-нибудь хрень, то она хотя бы должна сообщить, что неправильный регистр или еще что... А то крикнешь, а в ответ тишина ©…

Reply


sts September 18 2024, 12:53:33 UTC

кварца нет = скорость может быть и 9500 и 9700 и само собой ответа не будет никакого

Reply

eddy_em September 18 2024, 12:59:49 UTC
Кварца нет, но если там STM32F030, то у него и от HSI вполне себе отлично все работает, уж тем паче на 9600. Я в термомониторинге, например, использую STM32F042 без кварца. И отлично шпарит CAN на скорости до мегабода.

Тут оказалось, что эта зараза несколько иной протокол имеет: от первой попавшейся на алике релюшке не подошло (но там-то по стандарту, а тут на стандарт насрали).

Reply

sts September 18 2024, 13:07:40 UTC
бывает шпарит, а бывает что нет, без кварца это рулетка в зависимости от партии, до 5% частота гуляет у китайцев. у брендов конечно лучше.

Reply

eddy_em September 18 2024, 13:18:14 UTC
Ну вот там непонятно, что распаяно: естественно, маркировку стерли. Может, это вообще CH32V003…
Но, как я писал уже, все отлично работает. Посылки короткие (от силы 10 байт) - если у HSI даже 1% погрешности будет, сойдет.
А 5% я вообще никогда не встречал: на таких рьяных китайцев не натыкался. Да и, все-таки, чаще всего HSE пользуюсь с внешним 8МГц кварцем (иначе USB не заведется у некоторых чипов). Это у F042 для USB кварц не нужен, т.к. HSI48 умеет по пакетам от мастера синхронизоваться…

Reply


Leave a comment

Up