我写在分布式系统中的串行通信的简单多分支RS485协议。我使用的,其中从设备给出20毫秒的一个窗口,响应的寻址模式。主的uC轮询更新所连接的设备,他们作出相应的反应。我已经使用校验并采取必要的超限预防措施,以确保连接的设备不会对畸形的消息作出响应。这种方法已经证明是有效的情况约99%,但我输分组,如果一个新的设备的通信会话过程中引入。在一个新的设备插入“热”将对信号由所述从设备,监测如果只为极短的时间的负面影响。我对工程的软件方面,但我怎么能缓解这种状况,而不试图重新TCP?我们使用轮询模式,因为它是快速和没有工作以及我们的应用程序,不需要RTOS功能。我对每个CPU周期的丰度,认为在基本术语

有帮助吗?

解决方案

在RS485发送的数据包的是不是一个可靠的通信。你将不得不反正来处理数据包的丢失。当然,你不会有机会再创造TCP。但是,你将不得不超时监控和序列号的方式来检测丢失的数据包。在简单的应用中,这可以在应用层面上,是什么让你不远了从TCP的复杂性来完成。当您轮询模型废弃通过校验和无效的所有数据包,这可能以较少的努力相结合。

如果您要检查的碰撞,可以通过热插头或行为不端的设备引起的有可能是一些改进。有些硬件允许回读自己的transmissing。如果您发现发送的数据之间的差异和接收数据,你可以假设冲突和重复数据包。这还需要一种顺序编号的。

其他提示

也许我已经错过了你的问题的东西,但你不能只写主这样,如果响应没有从允许的时间内装置看出,它重新调查该设备?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top