簡體   English   中英

自定義RS485協議

[英]Custom RS485 Protocols

我正在為分布式系統中的串行通信編寫一個簡單的多點RS485協議。 我正在使用一個可尋址的模型,其中從設備被給予一個20ms的窗口來響應。 主uC輪詢連接的設備以​​進行更新,並相應地做出響應。 我使用了校驗和並采取必要的超限預防措施,以確保連接的設備不會響應格式錯誤的消息。 事實證明,這種方法在大約99%的情況下都有效,但如果在通信會話期間引入了新設備,則會丟失數據包。 插入新設備“熱”將對從設備監控的信號產生負面影響,如果只是在極短的時間內。 我是工程的軟件方面,但是如何在不嘗試重新創建TCP的情況下緩解這種情況? 我們使用輪詢模型,因為它很快並且對我們的應用程序來說工作得很好,不需要RTOS功能。 我在每個cpu上有很多周期,用基本術語來思考。

通過RS485發送數據包不是可靠的通信。 無論如何,你將不得不處理丟失的數據包。 當然,您不必重新發明TCP。 但是你必須通過超時監控和序列號來檢測丟失的數據包。 在簡單的應用程序中,這可以在應用程序級別完成,這使您遠離TCP的復雜性。 當您的輪詢模型丟棄所有具有無效校驗和的數據包時,可能會以較少的工作量進行集成。

如果您想檢查可能由熱插拔或行為不當設備引起的碰撞,可能會有一些改進。 某些硬件允許回讀自己的傳輸。 如果發現發送數據和接收數據之間存在差異,則可以假定發生沖突並重復發送數據包。 這還需要一種序列編號。

也許我在你的問題中遺漏了一些東西,但你不能只是寫主人,這樣如果在允許的時間內沒有看到設備的響應,它會重新輪詢該設備嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM