可以使用定时器进行计时,在发送后,主机等待人机返回数据,长时间收不到时就超时,这个时间是可以自己在软件上设置的,一般是30s内的时间。
如果超时,则要进行上报并记录超时设备与时间。
1、检测超时,一般是主机进行检测;从机不做2、检测超时原理,主机发送一个数据帧之后,在等待一段时间,从机必须应答,如果如果从机不应答,可以重发1-2次,从机如果一直不应答,则主机判断超时。有一种特殊情况:在MODBUS驱动器(驱动器为从机),为了安全,驱动器也要检测总线超时,避免意外断开了总线,从机还在执行运动指令。
有两种办法,
1uart外设自带超时检测功能,可以通过寄存器设置,具体放大网上插的到
2通过定时器超时检测,定时器中断对计数值变量++有数据接收就清零变量,没有数据接收当++到一个数值就认为接收完成
基本上所有的超时检测都和定时器有关,在通信时,
理论上持续的通信都是在有限时间内保持链接的,
所以可以设置一个时间阀值,作为一个定时器参数,
在开始一个通信时置位计时,如果没有明确的后续
信号来不停的除非其定时复位,则会计数到零,从而
触发通信超时处理。
检测超时一般是指的从机应答超时,这里如果是STM32做主机,那它可以在发出一条信息之后,开启一个软件计时,时间一到,它可以看一下是否有应答数据过来,没有的话就是超时了
STM32做从机就没有超时这种说法,因为它不知道主机什么时候会下发命令的