硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4336|回复: 1
收起左侧

[有问必答] modbus 3.5 个字符时间的空闲间隔区分 问题,是不是多写了一个0

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2019-5-8 17:27:36 | 显示全部楼层 |阅读模式

关于这个报文帧由时长至少为 3.5 个字符时间的空闲间隔区分  这个timeout = 35000000 / g_tModbus.Baud=9600;          是不是多了一个0 ,应该是3500000  应该是5个0吧。


        timeout = 35000000 / g_tModbus.Baud=9600;                /* 计算超时时间,单位us */


void MODBUS_ReciveNew(uint8_t _byte)
{
        /*
                3.5个字符的时间间隔,只是用在RTU模式下面,因为RTU模式没有开始符和结束符,
                两个数据包之间只能靠时间间隔来区分,Modbus定义在不同的波特率下,间隔时间是不一样的,
                所以就是3.5个字符的时间,波特率高,这个时间间隔就小,波特率低,这个时间间隔相应就大

        4800  = 7.297ms
        9600  = 3.646ms
        19200  = 1.771ms
        38400  = 0.885ms
        */
        uint32_t timeout;

        timeout = 35000000 / g_tModbus.Baud;                /* 计算超时时间,单位us */

        /* 硬件定时中断,定时精度us 定时器4用于Modbus */
        bsp_StartHardTimer(4, timeout, (void *)MODBUS_RxTimeOut);

        if (g_tModbus.RxCount < MODBUS_RX_SIZE)
        {
                g_tModbus.RxBuf[g_tModbus.RxCount++] = _byte;
        }
}

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2019-5-8 17:37:44 | 显示全部楼层
不要重复发帖子了。

此贴已经回复了。
modbus报文帧由时长至少为 3.5 个字符时间的空闲间隔区分是不是多写了一个0
https://forum.anfulai.cn/forum.p ... 3624&fromuid=58
(出处: 安富莱电子论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-16 15:15 , Processed in 0.034238 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表