当前位置:首页 >> 编程语言 >> 【RS485 - 为什么要接收端计算时间偏移量】,海尔手机w718

【RS485 - 为什么要接收端计算时间偏移量】,海尔手机w718

cpugpu芯片开发光刻机 编程语言 1
文件名:【RS485 - 为什么要接收端计算时间偏移量】,海尔手机w718 【RS485 - 为什么要接收端计算时间偏移量】

我以前一直以为计算机等的信号传输速率都是非常快的,不用计算时间差。 然而在实际应用中发现信息是需要传输时间的,而这些时间somehow是可以计算的。

前提信息

波特率 9600; 控制器和执行器通过RS485通信; 控制器发出同步的命令为sync; RS485: 1 bit start bit, 8 bits length, 1 bit stop bit, no parity check; 所以传输一次需要 10 bits的时间;

情景

控制器Control Unit 通过RS485与执行器Actuator通信,控制器在SyncTimeMark这个时间点发出一个命令,说我需要在SkewTime之后进行某个动作,而这个动作根据实际工况可能200ms就需要做一次。

执行器收到这个命令的时候已经在SyncTimeMark之后又过了一个信息传输时间,我们称这个传输时间为TransferTime,开始接到这个信号的时间点为ReceiveTime。而一条信息可能长这样: 0x00 0x11 0x22 0x33 0x44 0x55 0x7F。这样起始位为0x00,结束位为0x7F,一条信息总共占7个character,也就是7个bytes, 也就是需要传输7次,因为RS485一个数据帧有效数据只有8个bits。而传输一次需要加上起始位,也就是需要10 bits时间。总共需要70 bits的时间。

time of 1 bit = 1/baud rate = 1/9600 = 0.104 ms;time of 70 bits = 70 * 0.104 = 7.3 ms;

在一个200ms的动作周期里延迟7ms其实是很大的一个延迟了, 所以我们才需要计算信号延迟时间。

如何计算 BaudSkew = 1/BaudRate;SkewWidth = SkewWidth + BaudSkew * 10 bits; //从接到信息开始信号就开始计算SyncTimeMark = ReceiveTime - SkewWidth; summery

在实际应用里,这个计算肯定会再稍微复杂一些,但是原理就差不多。 这里有一个名词:

“Overrun time" is to represent the additional time that need to process a received character.

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接