от старта передачи в то время как кто-то другой уже передает?
Типовые MAX485 сами контролируют это или все сгорит к чертям?
Мастер слейв должна быть логика
Устройств на шине более 30ти предполагается
Ну и один мастер, всё остальные рабы
Мастер то один
Или это не модбус?
Да не важно, модбус не модбус
Этот вариант сработает, согласен Сами устройства имеют в своем функционале возможность передавать аварийные сообщения по линии, потому думаю как реализовать возможность проверки занятости линии. У стм есть DE в уарте, но он не обеспечивает безопасности передачи
не модбус
Если мультимастер то тут CAN
Спасибо Но я у меня в задаче есть два ограничения, которые известны из первого сообщения: контроллер - стм32 интерфейс - RS485й через USART (не LPUART) А сама задача это защититься от коллизий Может кто решал проблему просто уже
а нельзя запихнуть передачу аварии на прерывания?
слушать через другой драйвер линию, когда сам передаешь. если там не то что передаешь, то коллизия и далее по классике разруливаешь
Не совсем понятно какие прерыванию спасут от коллизий с другими устройствами У меня вопрос скорее "возможно ли" избежать коллизий. Просто я не наткнулся на ответ: "однозначно невозможно", он меня тоже устроит, я просто урежу часть функционала
Не ну я думаю вы знаете ответ что однозначно не возможно. Коллизии в данном случае будут
на порты ввода вывода. дополнительно от слейвов(можно объединить n устройств на одну линию прерывания) вывести пин, который бы обрабатывался мастером, в случае прерывания - авария и внеочередной опрос устройства от которого пришло прерывание или другая какая-то логика.
Это, видимо, не для rs485го рекомендация
если кроме линии rs485 нет возможности добавить проводов, то да. мастер/слейв не разрешает отправку слейвом данных на линию без запроса мастера
А если 4-х проводный дуплекс?
Я попытался прикинуть насколько сложно это сделать аппаратно и выходит в целом не сложно. Слейву разрешается нерегулируемый выход в эфир только если на линии нет сигнала. При передаче грубо говоря, на линии всегда либо 1 либо -1. Потому и думаю что как то да можно
Это уже 422й
Теперь ваше мнение не отличается от моего ): Я так же сам себе говорю
Только учтите что между тем как вы поняли что линия свободна и началом вашей передачи, время не равно нулю
тогда мастер тоже должен в этот период времени ждать приём и не отправлять ничего
возможно, если в сети будет например мастер, который будет разруливать обмен. т.е. никто не говорит, пока не получит от него разрешения
Обсуждают сегодня