打印

如何确定Modbus的帧间隔

[复制链接]
1638|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zheng522|  楼主 | 2015-2-28 12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Modbus是我们最常用的协议之一,如何确定帧与帧之间的间隔呢,大家讨论下。
沙发
zheng522|  楼主 | 2015-2-28 12:51 | 只看该作者
    TIMSK &= ~(1<<TOIE2);
    TIFR |= (1<<TOV2);
#if 1
    switch(RxMode)
    {
        case 1: /* receive Addr only */
            //ErrorDisplay(ERRCODE_OnlyReceiveAddr);
            break;
        case 2: /* receive Addr and FunCode only */
            //ErrorDisplay(ERRCODE_ReceiveDataErr);
            break;
        case 3: /* receive All */
            if(RxFrame.Len < 2){
                //ErrorDisplay(ERRCODE_ReceiveDataErr);
                RxFrame.Data = RxArrayTemp + 2;
                break;
            }
            RxFrameComplete = 1;
            RxFrame.CRCL = *(RxFrame.Data - 2);
            RxFrame.CRCH = *(RxFrame.Data - 1);
            RxFrame.Data = RxArrayTemp + 2;
            break;
        default :
                    break;
            //ErrorDisplay(ERRCODE_ReceiveDataErr);


这是我见过的一种,大家可以看看。

使用特权

评论回复
板凳
zheng522|  楼主 | 2015-2-28 12:53 | 只看该作者
还有人接收一大堆数据,然后在其中找帧头,再算CRC这种方法,这种方法很浪费资源。

使用特权

评论回复
地板
huihui520| | 2015-2-28 12:55 | 只看该作者
硬件资源比较紧张的情况下,可以用楼上所说的第二种方法,比如说定时器不够用时,可以考虑,牺牲了运行速度。

使用特权

评论回复
5
huihui520| | 2015-2-28 12:57 | 只看该作者
常用的还是通过定时器进行定时,即楼主代码所显示的方法,通过每收到一个字符后,就进行定时,根根定时器的中断程序来确定帧与帧的间隔,Modbus规定帧与帧的间隔是每个字符发送时间的3.5倍,即:大于3.5倍一个字符的发送时间就为帧间隔的时间。

使用特权

评论回复
6
huihui520| | 2015-2-28 12:58 | 只看该作者
这是我对Modbus的理解,不知道其他人还有更好的办法吗,希望大家踊跃讨论

使用特权

评论回复
7
zhengbo7hui| | 2015-2-28 12:59 | 只看该作者
学习了,楼上说的那种方法确实不错,只用到一个定时器就可以完成,而且也比较的合理,学习了。

使用特权

评论回复
8
zhengbo7hui| | 2015-2-28 13:00 | 只看该作者
Modbus有好多种,有RTU Modbus  ASCII码的Modbus每一种Modbus协议都有它独有的魅力。

使用特权

评论回复
9
zb0830| | 2015-2-28 13:22 | 只看该作者
确实是这样,我在写Modbus的时候,也很纠结,不像其它的协议,人家包头和包尾,可以根据包头和包尾进行数据的解析分析,Modbus没有包头和包尾

使用特权

评论回复
10
zb0830| | 2015-2-28 13:22 | 只看该作者
谢谢楼主提出这个帖子,大家可以讨论常用的方法,可以更好的方便大家。

使用特权

评论回复
11
波越| | 2015-2-28 13:26 | 只看该作者
学习了,这种方法确实好用,而且不会影响主程序的判断,可以类似于不用管理的方式进行Modbus的收发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

821

帖子

3

粉丝