首页 > 编程语言 >485通讯抗干扰,超时重发,不断重连的程序架构

485通讯抗干扰,超时重发,不断重连的程序架构

时间:2024-07-12 23:26:00浏览次数:16  
标签:超时 接收 校验 发送 重发 计时 485 重连

485通讯抗干扰,超时重发,不断重连的编程思路

在工程中会遇到一种情况,当通信受到干扰之后,数据超时重发多次,无法被成功发出去,当恢复干扰后,之前发送的指令就被报错清掉了,相当于串口掉线之后,即使短暂时间内通信连上,掉线之后发出的指令也不生效。

为了确保受到干扰的这段时间里,发出的所有指令在干扰结束之后仍然可以立即起作用。

有如下设计思路

  1. 帧结束计时 (Modbus_RTU.CmdTimeStart == 1):
    • 如果在设定的时间内(例如10ms)没有接收到数据,则认为帧接收完成。
    • 已经接收到了一个字节之后才会开启帧结束计时功能
  2. 超时重发计时 (Modbus_RTU.CmdTimeStart == 2):
    • 如果在设定的时间内没有接收到响应,则开始超时重发逻辑。
    • 如果重发次数小于4次,则重置超时计时并增加重发次数。
    • 如果重发次数达到或超过4次,则设置错误码
  3. 逻辑处理函数
    • 如果出现重发失败,挂起当前发送,并且将重发重置。下次进入逻辑时,依旧会进行重发测试。这里的重发包括超时重发和crc校验错误重发。一个是发不出去导致的发送失败,一个是发送成功收到消息但是crc校验不通过的发送失败。
    • 主站发送函数发送完之后,会自动开启重发计时功能。
    • 主站接收函数接收回传的确认信息,进行CRC校验,如果校验错误,执行CRC校验错误重发
  4. <

标签:超时,接收,校验,发送,重发,计时,485,重连
From: https://blog.csdn.net/qq_40828914/article/details/140379584

相关文章

  • 串口电平多种,TLL、232、485、422到底应该如何选择?
    串口通信是电子设备之间进行数据交换的重要方式,其中常见的电平标准包括TTL电平、RS-232电平、RS-485电平和RS-422电平。本文将详细介绍这些电平的由来、原理、特点、优缺点、应用、实现方式及接线方式,帮助各位同学或工程师更好地理解这些通讯基础。TTL电平TTL(Transistor......
  • 【STM32】RTT-Studio中HAL库开发教程二:RS485-DMA串行通信
    文章目录一、前期准备二、实验步骤1.使用STM32CubeMX配置初始化代码2.常用函数解析3.相关程序4.实验效果三、参考文章一、前期准备开发环境:基于RT-ThreadStudio软件的开发辅助软件:STM32CubeMX初始化代码生成调试软件:串口助手使用芯片:STM32F407VET6硬件环......
  • java使用Netty实现TCP收发消息的例子,多线程并且含断线自动重连
    需求:有一个TCP的服务,需要使用Netty开发一个TCP连接并收发消息的程序。要求多线程并且含断线自动重连能力。组织结构,使用JavaMaven编程方式功能还包含读取配置文件和log4j2写日志部分 完整代码:App.javapackagecom.LSpbxServer;importorg.slf4j.Logger;import......
  • TTL RS232 RS485电平协议的电压区别
    TTLRS232RS485电平协议的电压区别1.TTL(双晶体管门电路):oTTL全称为Transistor-TransistorLogic,即双晶体管门电路。oTTL电平是数字电路中常见的一种信号电平,用于表示逻辑“0”和逻辑“1”。o在TTL集成电路中,逻辑“1”对应的电压范围是2.4V5V,而逻辑“0”对应的电压范围......
  • 学习笔记485—Excel技巧:一键将文本数字转换为数值
    Excel技巧:一键将文本数字转换为数值在使用Excel进行数据处理时,经常会遇到数据格式不匹配的问题。特别是当从外部导入数据或手动输入数据时,数字可能会被误识别为文本格式,这在进行数据计算和分析时会带来诸多不便。幸运的是,Excel提供了一些便捷的方法,可以帮助我们一键将文本转换为......
  • TTL、RS232、RS485电平协议
    目录目录TTL、RS232、RS485电平协议详解TTL(Transistor-TransistorLogic)原理和作用:RS232RS485总结TTL、RS232、RS485电平协议详解TTL(Transistor-TransistorLogic)原理和作用:原理:TTL是一种数字逻辑家族,使用双极型晶体管(transistor)作为主要的开关元件。逻辑电平分为高电平(通......
  • 浅谈前置处理器之取样器超时
    浅谈前置处理器之取样器超时取样器取样器超时设置决定了JMeter等待取样器完成并接收响应的最大时间长度。如果在这个时间内未收到响应,取样器将标记该请求为超时错误。参数说明●在取样器超时的配置界面找到“Sampletimeout(inmilliseconds)进行设置。●超时值以毫秒......
  • Nginx超时重试、保护机制
    1.超时配置http{upstreambackend{serverbackend1.example.com;serverbackend2.example.com;serverbackend3.example.com;}server{location/{proxy_passhttp://backend;proxy_connec......
  • CH5XX串口中断接收超时
    1.串口1初始化:/*配置串口1:先配置IO口模式,再配置串口*/GPIOA_SetBits(GPIO_Pin_9);GPIOA_ModeCfg(GPIO_Pin_8,GPIO_ModeIN_PU);//RXD-配置上拉输入GPIOA_ModeCfg(GPIO_Pin_9,GPIO_ModeOut_PP_5mA);//TXD-配置推挽输出,注意先让IO口输出高电平U......
  • TTL、RS2323、RS485电平协议的区别
    目录TTL、RS2323、RS485电平协议的区别定义电气特性应用场景其他特点总结TTL、RS2323、RS485电平协议的区别定义TTL(Transistor-TransistorLogic):是一种电平标准,主要用于描述数字电路中的逻辑电平。TTL电路使用晶体管来实现逻辑功能,通常用于计算机和其他数字电子设备中的内部......