Frage

Ich schreibe ein einfaches Multi-Drop-RS485-Protokoll für die serielle Kommunikation innerhalb eines verteilten Systems. Ich bin mit einem adressierbaren Modell, in dem Slave-Geräten ein Fenster von 20 ms zu reagieren gegeben sind. Der Master uC fragt die angeschlossenen Geräte für Updates und sie entsprechend zu reagieren. Ich habe Prüfsummen verwendet und den notwendigen Schub Vorsichtsmaßnahmen, die angeschlossenen Geräte, um sicherzustellen, reagiert nicht auf fehlerhafte Nachrichten. Diese Methode wird in etwa 99% der Situationen wirksam erwiesen, aber ich verliere das Paket, wenn ein neues Gerät während einer Kommunikationssitzung eingebracht wird. Anstecken in einem neuen Gerät „heiß“ wird negative Auswirkungen auf dem Signal durch die Slave-Geräte überwacht werden, wenn auch nur für eine extrem kurze Zeit. Ich bin auf der Software-Seite der Technik, aber wie kann ich diese Situation mildern, ohne zu versuchen TCP neu zu erstellen? Wir verwenden ein Abfragemodell, weil es schnell und macht den Job gut für unsere Anwendung, keine Notwendigkeit für RTOS Funktionalität. Ich habe eine Fülle von Zyklen auf jeder CPU, denkt in grundlegenden Begriffen.

War es hilfreich?

Lösung

Senden von Paketen über die RS485 ist keine zuverlässige Kommunikation. Sie werden die verlorenen Pakete sowieso umgehen müssen. Natürlich werden Sie nicht TCP neu erfinden. Aber Sie müssen verlorene Pakete mittels Timeout-Überwachung und Sequenznummern erfassen. Bei einfachen Anwendungen kann dies auf Anwendungsebene durchgeführt werden, was Sie weit weg von der Komplexität der TCP hält. Wenn Ihre verwirft Polling Modell alle Pakete mit ungültigen Prüfsumme könne dies mit weniger Aufwand integriert werden.

Wenn Sie auf Kollisionen prüfen wollen, die von Zündkerzen oder misbehaving Geräte verursacht werden können, gibt es wahrscheinlich einige Verbesserungen. Einige Hardware ermöglicht die eigene transmissing zurück zu lesen. Wenn Sie einen Unterschied zwischen gesendeten Daten und Empfangen von Daten zu finden, können Sie eine Kollision übernehmen und das Paket wiederholen. Dies wird auch eine Art von Sequenznummerierung erforderlich.

Andere Tipps

Vielleicht habe ich etwas in Frage verpasst, kann aber nicht einfach in den Master schreiben, so dass, wenn eine Antwort nicht von einem Gerät innerhalb der erlaubten Zeit zu sehen ist, ist es wieder Umfragen, dass das Gerät?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top