Вопрос

Я пишу простую многократное протокол RS485 RS485 для последовательных коммуникаций в распределенной системе. Я использую адресуемую модель, где подчиненные устройства даны окно 20 мс, чтобы ответить. Master UC выбирает подключенные устройства для обновлений, и они отвечают соответствующим образом. Я нанял контрольные суммы и принимаю необходимые меры предосторожности для обеспечения того, чтобы подключенные устройства не отвечали на злобные сообщения. Этот метод оказался эффективным примерно в 99% ситуаций, но я теряю пакет, если во время сеанса связи вводится новое устройство. Подключение нового устройства «Горячая» будет негативное воздействие на сигнал, контролируемый подчиненными устройствами, если только для чрезвычайно короткого времени. Я на работе программного обеспечения техники, но как я могу смягчить эту ситуацию, не пытаясь воссоздать TCP? Мы используем модель опроса, потому что она быстро и работает хорошо для нашего приложения, нет необходимости в функциональности RTOS. У меня есть изобилие циклов на каждом процессоре, подумайте в основных условиях.

Это было полезно?

Решение

Отправка пакетов на RS485 не является надежной коммуникацией. Вам придется обращаться с потерянными пакетами в любом случае. Конечно, вам не придется изобретать TCP. Но вам придется обнаружить потерянные пакеты с помощью мониторинга тайм-аута и номеров последовательности. В простых приложениях это можно сделать на уровне приложений, что удерживает вас от сложности TCP. Когда ваша модель опроса отбрасывает все пакеты с помощью недействительной контрольной суммы, это может быть интегрировано с меньшими усилиями.

Если вы хотите проверить наличие столкновений, которые могут быть вызваны горячими заглушками или неправильными поведениями устройства, вероятно, некоторые улучшения. Некоторое оборудование позволяет прочитать собственную передачу. Если вы найдете разницу между отправленными данными и получать данные, вы можете взять на себя столкновение и повторить пакет. Это также потребует своего рода нумерация последовательности.

Другие советы

Возможно, я что-то пропустил в своем вопросе, но вы не можете просто написать мастер так, чтобы если ответ не виден с устройства в пределах допускаемого времени, он перезаписывает это устройство?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top