Цитата(vladec @ Nov 13 2013, 10:07)

По моему, Вам проще быдет просто проложить две отдельных шины основную и резервную и при аварии на одной можно будет работать по другой, как, например, в стандарте MIL1553
Две линии тянуть не хотелось бы из-за высокой стоимости проводов, т.к. данная система используется в противопожарных системах. По нормам нужно использовать огнестойкие кабеля.
Вами предлагаемый подход предусматривает использование двух портов на каждом модуле: один для основной шины, а второй - для резервной?
Цитата(mr. G @ Nov 13 2013, 11:32)

Согласен. Резервная может показать какой slave вышел из строя, отключаем его и далее снова работаем по основной.
А по поводу опознавания КЗ, наверное нужно поискать соответствующие микросхемы с реализованной данной функцией, Maxim и TI вам в помощь.
Отключать модули от Мастер модуля нельзя при обнаружении неисправности кабеля. Они должны оставаться в системе. Принцип должен быть такой: если в "основном" пути для некоторых модулей обнаружена неисправность кабеля,
то они начинают опрашиваться по "резервному" пути. Повреждение основной линии должно быть устранено по возможности быстрее. По идее в нормальном режиме работы нужно
опрашивать модули как по основной шине, так и по резервной поочередно, чтобы не получилось так, что при переключении на резервную шину она не была неисправной тоже.
Цитата(adnega @ Nov 13 2013, 13:19)

А почему не CAN?
Решал сходную задачу для поездов. Только там не кольцо, а "паравоз" из контроллеров. Важно было определять скорее
не КЗ и Обрыв (это легко определается), а последовательность включения контроллеров. Т.е. вагоны можно как угодно перецеплять,
но система автоматически знает, что авария произошла в пятом вагоне от головы, например. При КЗ и обрывах, можно узнать между
какими контроллерами неисправен сегмент и выключить его из работы. Работоспособность системы от головы до "дохлого" сегмента
восстанавливается, а что за "дохлым сегментом" происходит неизвестно (но там есть вторая голова, которая может вести протоколирование
аварий, но не в оповещать в реалтайме).
Да, придется повозится с пакетами, т.к. CAN это максимум 8 байтв пакете, но побочно получаете "кучу плюшек" самая ценная из них мультимастер!
Менее ценные: запрет включенного зависшего передатчика, счетчики ошибок и автоматическое отключение от шины при их прерышении и т.п.
По мере усложнения системы все больше склоняюсь к использованию CAN вместо RS485. Но это только планы на будущее. Сейчас использую RS485.
Использование CAN не решит данную проблему. Для CAN и RS485 подход к решению этой проблемы должен быть похожий.
Система должна оставаться всегда реального времени, потому что по нормам в противопожарных применениях максимальное время определения тех или иных событий в системе
не должно превышать одну минуту.
Каким образом отключается неисправный сегмент при обнаружении КЗ или обрыва?