当前位置: 首页 > news >正文

MODBUS RTU time_out实现

MODBUS RTU协议规定,一个MODBUS的帧结束是3.5倍字符的时间。

在实现上包括2种实现方式

1 uart芯片本身就提供 time_out功能

如 带有FIFO功能的芯片,为了保证在收到FIFO内容且没有达到FIFO中断的长度,设置了time_out中断。软件只需设置该中断,该中断发生时,就意味着MODBUS RTU协议的帧结束。需要注意的是,在FIFO中断时,不要把FIFO内容完全读完,保留1个字节在FIFO中,否则可能不会发生time_out中断。


如下面的芯片SC16IS762

2  芯片不提供FIFO功能,也不提供time_out功能,比如很多单片机

这时需要设置一个根据波特率的超时时间的表格和一个time_out的变量,每收到一个字符,time_out= 超时时间;而在定时中断里面 time_out--,如果 time_out减至0,则MODBUS RTU协议的帧结束。

或者直接设置一个定时器,中断时间= 定时器当前时间+  超时时间,一旦中断发生则MODBUS RTU协议的帧结束。

int  time_out

串口接收中断

time_out= 超时表 [ 波特率]

定时器中断

if( time_out )

{

  if (time_out==1 )  帧结束 处理

 else   time_out--

}

}

相关文章:

  • LLM中的N-Gram、TF-IDF和Word embedding
  • 从“数据孤岛”到“万物互联”,PLC组网重构工控边界
  • STM32 HAL库 DAC生成正弦波
  • 返工成本高,如何优化验收流程
  • MyBatis SqlSessionFactory 批量执行实战
  • Transformer编程题目,结合RTX 3060显卡性能和市场主流技术
  • 【差分隐私相关概念】瑞丽差分隐私(RDP)命题10
  • 每日算法(双指针算法)(Day 1)
  • docker多架构镜像构建
  • 大模型面经 | 请你介绍一下ReAct(Reasoning and Acting)?
  • FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现
  • 《白龙马购销存》软件分享
  • ElasticSearch中常用的数据类型
  • lustre共享存储是免费的吗
  • 案例:塔能科技驱动河南某市政照明智慧升级
  • 郑州工程技术学院党委书记甘勇一行莅临埃文科技调研交流
  • 适用于 HAL 的 AIDL
  • 第二十讲:SHAP 值与模型可解释性详解(附案例) [特殊字符]
  • 4种方法将文件映射到内存提升读写速度
  • 关于tomcat乱码和idea中控制台乱码的问题
  • 孙燕姿演唱会本周末开唱,小票根如何在上海释放大活力
  • 马上评丨从东方红一号到神二十,中国航天步履不停
  • 民政部党组成员、中国老龄协会会长刘振国任民政部副部长
  • 体坛联播|AC米兰挺进意大利杯决赛,弗雷戴特宣布退役
  • 航空货运三巨头去年净利合计超88亿元,密切关注关税政策变化和市场反应
  • 科普|结石疼痛背后的危机信号:疼痛消失≠警报解除