硬汉嵌入式论坛

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

[有问必答] 关于计算modbus一帧发送时间计算问题

[复制链接]

6

主题

12

回帖

30

积分

新手上路

积分
30
发表于 2023-5-23 17:04:59 | 显示全部楼层 |阅读模式
    ( void ) memcpy( ( void * )pxUsartCtrl->xTxBuf.ucData, (const void * )pData, ( size_t ) Size );
    pxUsartCtrl->xTxBuf.ucLen = Size;
    pxUsartCtrl->ucTxFrameEndTimer = 0;//发送帧结束判断计时
    //计算本帧数的发送时间
    time = (uint32_t)Size * 10 /35 + 2;   
    time *= cucFrameEndTime[pxUsartCtrl->eUsartBaudSet]; //帧结束间隔的3.5字符时间 0.4ms
    time /= 5;
    pxUsartCtrl->ulTxTime = time + 1;//可能有余数,多算1ms


有没有大哥能给我讲解下这个时间处理的操作

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
发表于 2023-5-23 17:23:11 | 显示全部楼层
这个是我们的。

[C] 纯文本查看 复制代码
/*
Baud rate	Bit rate	 Bit time	 Character time	  3.5 character times
  2400	    2400 bits/s	  417 us	      4.6 ms	      16 ms
  4800	    4800 bits/s	  208 us	      2.3 ms	      8.0 ms
  9600	    9600 bits/s	  104 us	      1.2 ms	      4.0 ms
 19200	   19200 bits/s    52 us	      573 us	      2.0 ms
 38400	   38400 bits/s	   26 us	      286 us	      1.75 ms(1.0 ms)
 115200	   115200 bit/s	  8.7 us	       95 us	      1.75 ms(0.33 ms) 后面固定都为1750us
*/
typedef struct
{
	uint32_t Bps;
	uint32_t usTimeOut;
}MODBUSBPS_T;

const MODBUSBPS_T ModbusBaudRate[] =
{	
    {2400,	16000}, /* 波特率2400bps, 3.5字符延迟时间16000us */
	{4800,	 8000}, 
	{9600,	 4000},
	{19200,	 2000},
	{38400,	 1750},
	{115200, 1750},
	{128000, 1750},
	{230400, 1750},
};
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2023-5-23 17:47:17 | 显示全部楼层
eric2013 发表于 2023-5-23 17:23
这个是我们的。

[mw_shl_code=c,true]/*

好的🆗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 00:34 , Processed in 0.160861 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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