|
|
我们最近挂载30台从机,进行modbus通信测试时,主机偶尔会收不到某条回复(随机某个从机的温度数据的应答,或者其他参数应答),挂载数量低于30台时,主机都能正常接收到数据;原来从机的modbus数据处理是放在while循环里面的,这时单独2台从机,主机有时也接收不到某个应答;后来我把modbus接收数据处理放在定时器里每5ms处理一次,从机接到30多台才出问题;
1.我修改在定时器中断里这样处理5ms一次
if(++time_5ms_conter >= 5)
{
time_5ms_conter = 0;
if(modbus.receive_flag == 1) //接收数据完成标志
{
modbus_slave_handle();
}
}
1.我第二次在定时器中断里这样处理的,1s就轮询一次
if(modbus.receive_flag == 1)//接收数据完成标志
{
modbus_slave_handle();
}
请问软件还需要朝什么方向改进,能改善通信效果
|
|