modbus协议中的3.5个字符时间怎么计算 点击:7035 | 回复:14



紫色的线

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2004年4月23日
发表于:2004-10-31 15:51:00
楼主
麻烦各位大虾: modubs协议里面的3.5个字符时间是怎么计算的,我现在被这个困住了,请帮忙。



上知天文

  • 精华:3帖
  • 求助:0帖
  • 帖子:37帖 | 1265回
  • 年度积分:0
  • 历史总积分:1667
  • 注册:2005年9月05日
发表于:2006-11-06 11:38:00
1楼
好象没人懂这个问题。

1314310

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 9回
  • 年度积分:0
  • 历史总积分:27
  • 注册:2003年7月29日
发表于:2006-11-09 22:45:00
2楼
我的回答:这跟你选择的串行通信波特率有关(Modbus是采用串行通信的),在每个信号波形包含一个二进制位的情况下,波特率是等于比特率的,即1baud=1bit/s。这样你就明白了吧:1个字符在RTU模式下是以8位二进制形式传输的,故3.5个字符时间就是3.5*8个bit传输的时间。假设你选择的波特率为9600baud(又满足每个信号波形包含一个二进制位),即9600bit/s,那么1bit所需的传输时间就是1/9600秒,这样3.5个字符时间=3.5*8*1/9600秒。

1314310

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 9回
  • 年度积分:0
  • 历史总积分:27
  • 注册:2003年7月29日
发表于:2006-11-09 22:47:00
3楼
我只是假设9600baud。实际中Modbus采用的是RS485,这要看具体你所选择的485总线的传输速率了。

club

  • 精华:0帖
  • 求助:0帖
  • 帖子:47帖 | 739回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2007-03-30 08:51:00
4楼
学习中

xiaonawu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2007年3月27日
发表于:2007-04-23 22:54:00
5楼
如果我选择是RS485,那么它的计算和上面说的一样的吗?
谢谢!

东北电

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 261回
  • 年度积分:0
  • 历史总积分:689
  • 注册:2003年3月31日
发表于:2007-05-17 17:02:00
6楼
1314310说的对,必须有3.5个字符(字节)做RTU的开始和结束

ladder

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 653回
  • 年度积分:0
  • 历史总积分:1491
  • 注册:2007年1月04日
发表于:2007-09-15 22:21:00
7楼
下面引用由1314310在 2006-11-9 22:45:00 发表的内容:
  我的回答:这跟你选择的串行通信波特率有关(Modbus是采用串行通信的),在每个信号波形包含一个二进制位的情…
--------------------------------------------------------------------------------------------
没错,就是这样的算法

heidai

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 1835回
  • 年度积分:0
  • 历史总积分:2824
  • 注册:2007年5月23日
发表于:2007-09-15 23:03:00
8楼
学习中

WONDERFULLY

  • 精华:0帖
  • 求助:2帖
  • 帖子:16帖 | 240回
  • 年度积分:1
  • 历史总积分:465
  • 注册:2003年5月30日
发表于:2007-11-19 13:42:00
9楼
算这个时间做什么用?

hilson65

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2005年9月24日
发表于:2011-11-24 18:17:57
10楼
谢谢!

吴尚业

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2010年9月16日
发表于:2011-11-24 18:48:31
11楼

学习了           

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2011-11-24 18:56:00
12楼

为何在通讯设置中,还可设置7位数据传输,而通常一个字符就占8位,那么剩余的1位,是在下一次再传送?

银山金山

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 195回
  • 年度积分:0
  • 历史总积分:1026
  • 注册:2011年9月19日
发表于:2011-11-24 19:15:53
13楼
MODBUS 的帧头就是地址,所以为了区分 帧与帧之间使用时间来区分。

EBN战略军团-棋影

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:727帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2012-06-27 14:26:36
14楼

1个字符包括1位起始位、8位数据位(一般情况)、1位校验位(或者没有)、1位停止位(一般情况下)
这样说起来一般情况下1个字符就包括11位
那么3.5个字符就是3.5*11=38.5位
波特率含义是每秒传输的二进制位的个数
比如9600bps,意思就是说每1秒(也就是1000毫秒)传输9600个位,
反过来说传输9600个二进制位需要1000毫秒
那么传输38.5个二进制位需要的时间就是:
38.5/9.6=4.0104167毫秒
MODBUS RTU要求一帧数据起始和结束至少有大于等于3.5个字符的时间
在波特率为9600的情况下,只要大于4.0104167毫秒即可!


热门招聘
相关主题

官方公众号

智造工程师