什么是串口通信

串口,一般指异步串行接口(Serial Port),主要用于串行式逐位数据传输。串口对于处于嵌入式行业的我们来说,是必不可缺的一部分,在刚开始学习单片机时,我们最先学习的通信接口就是USART(Universal Synchronous/Asynchronous Receiver/Transmitter)——通用同/异步串行接收/发送器。其中最常见的串口通信的时序如下图:有起始位、数据位、校验位、停止位、波特率等几个通信参数。

232 / 485/ 422通信

串口通信主要可分为232、485、422三种通信方式。

232通信
232通信主要是由RX、TX、GND三根线组成。RX接TX,TX接RX,GND接GND。发送和接收由不同的线路处理,所以能够同时进行发送和接收数据,因此232是全双工通信。

485通信

为了解决232通信距离受限问题,于是有了485通信。
485通信只需要+、-两根线(也叫A、B两根线),A、B两根线的差分电平信号就是作为数据信号传输。发送和接收都用这两根线,每次只能发送数据或者接收数据,因此485是半双工通信。

422通信
422通信兼具232与485的特点,既能实现全双工通信,又能增大传输距离。422也常被标注为485-4,而485被标注为485-2。因为485-2是2根线,485-4是4根线,下图是422的示意图。

串口通讯常见问题分析及解决办法插图1

422将232的RX分成RX+和RX-,把TX分成TX+和TX-,实现同时发送和接收。

串口通讯常见问题分析及解决办法插图3

串口通信常见问题及解决

串口作为工程师日常开发时的非常重要的一个角色,也时常会碰到很多问题,深受各种折磨,接下来笔者就来说说平时串口通信中常见的问题以及解决方法。
通常我们调试串口通信碰到问题时,需要用到一个USB转TTL、杜邦线(导线)等工具,首先我们应当保证自己的工具是正常的,可以通过以下方法自测:
1、将USB转TTL中的TX、RX使用杜邦线或是跳线帽短接。打开串口调试工具,例如XCOM、SSCOM等,将波特率、停止位、校验位等参数调至即将需要通信的模块的参数,再去随意发送一些数据,通常笔者是更倾向于使用16进制发送和接收,以此来保证数据中间或者结尾出现一些不可使用ASCII值直观看到的数据,例如数据的结尾多了0x00,0x0a等。若确保自己的工具以及导线没有问题后,即可继续排查通信问题。

2、发现使用USB转TTL与模块之间明明已经反接了TX、RX,发指令给模块之后却没有任何反应。

解决方法:当碰到如上问题时,应当首先自检工具,再检查是否双方共地,GND提供了一个基准0电平,如果没有共地的话,那极有可能会出问题,其次是检查双方的串口参数是否一致,串口通信是一个易于开发并且速度可调的一个的通信协议,其中我们大部分都会使用UART——通用异步传输接收/发送器,串口异步通信也可称为起止式异步通信,是直接以字符为单位进行传输的,字符之间没有固定的时间要求,每个字符中的每一位以固定的时间传送。这就意味着,如果你使用一个较为高的波特率的速度去与一个较为低的波特率的速度去通信的话,那极大可能会导致低波特率设备无法读取到通信时的空闲信号的跳变信息。

在这里笔者用一个比较极端例子进行说明:当双方串口的参数的数据位都为8bit,停止位为1bit,校验位为0bit时,但是A设备的波特率为9600,B设备为921600,就会出现以下情况:当B设备向A设备发送一个字节的数据时,B设备从发送到结束所需用的时间为1/921600*(8+1+1)=10.8us,而相同的A设备发送/接收一个字节的时间为(8+1+1)/9600=1.04ms,试问,像这种相差数倍的时间,当高波特率发送给低波特率设备时,很有可能低波特率设备压根就不会认为发送过来的数据流是一串数据,因为压根没法解析到。

*收发波特率一致

串口通讯常见问题分析及解决办法插图5

*收发波特率不一致

串口通讯常见问题分析及解决办法插图7


因此串口通信一定要保证双方波特率、停止位等参数一致。反之,低波率向高波特率发送数据就会被认为是错误的数据,也就是所谓的乱码。


3、发现双方已经使用了相同的参数进行通信,但是通信依旧有问题,例如收到乱码等。

解决方法:首先应该降低波特率,先确保模块与USB转TLL均无问题,也要确保模块没有处于透传等特殊情况下,也可以使用逻辑分析仪等工具进行排查,现在的很多逻辑分析仪是自带数据分析的,可以由此来确保模块正常。其实大部分碰到这种问题的时候,更建议优先查看USB转TLL是否支持当前的工作模式。

其他问题:

电脑使用USB转串口可以和设备通信,为何换成屏就无法与设备通信?


电脑使用USB转串口连接设备,可能使用的是标准串口功能(除RX,TX,GDN外,还使用了其它引脚);检查接线方法是否正确;电脑与控制器或PLC通信时,扫描波特率参数,是自适应,屏通信可能参数没有设备好。另外,还需注意,有时可能会使用一些串口助手发送测试数据与控制器通信,有些串口助手的奇偶校验会不起作用。
一个设备是232,另一个设备是422,没有转换设备,怎么办?

232和422都是全双工通信,422以一种差分信号传输。可以将422的Rx+与232的TX对接,422的RX-与232的GND对接;将422的TX+与232的RX对接,422的TX-与232的GDN对接。422设备发送数据时可以发送到232的RX上;232的TX发送数据后,由于TX和GND也形成了差分信号给到422,422就可以接收到数据。
能否实现两个主站通过485访问ModBus设备?

485通信基本上是一主多从,现阶段还不能实现两个主站访问一个ModBus设备。
换屏后无法再跟设备通信,怎么解决?首先需要确认接线是否正确,RX和TX是否兼容;其次检查是否有接地线;除了RX,TX,GND,是否还有其它引脚需要短接;查看通信协议、波特率是否相同。

以上就是笔者总结的串口通信常见问题及解决方法,文中如有出错之处,望指正,希望大家共同进步!

相关新闻

  • MODBUS设备智能音箱对接网关使用说明

    MODBUS设备智能音箱对接网关使用说明

    可以把MODBUS RTU、自定义RS-485协议设备接入智能音箱语音声控,目前支持小爱同学、天猫精灵、小度音箱、若琪等(推荐使用小度音响,设备名称灵活性比较高) 如何使用? 1、将语音网关接入路由器,然后通电。2、语音网关会连接google服务器校对时间,大概2,3分钟后,你会听到欢迎使用智能联动语音播报中心,并播报本机IP地址。 3.登陆语音网关网页后台,http://xxx.xxx.xxx.xxx:6521,默认密码admin,admin (注意:xxx.xxx.xxx.xxx需要替换为播…

    Modbus技术文档 2024年4月7日
  • 工业自动化控制领域常见概念的详细解释

    工业自动化控制领域常见概念的详细解释

    摘要 工业自动化控制领域涉及大量的测量、控制和处理工作,其中开关量、数字量、模拟量、离散量、脉冲量等概念是基础知识。本文将对这些概念进行详细解释,并探讨它们之间的区别和联系,以帮助读者更好地理解工业自动化控制系统的运作原理。 1. 概念定义 1.1 开关量 开关量描述的是触点的“开”与“关”状态,常见于计算机设备中,用“0”或“1”来表示这两种状态。开关量又进一步细分为有源开关量信号和无源开关量信号。 1.2 数字量 数字量是在时间和数量上均呈现离散特性的物理量,其表达形式为数字信号。数字量是由…

    Modbus技术文档 2024年3月1日
  • RS-485总线优化指南:解决不同设备通讯中的电平不稳定问题

    RS-485总线优化指南:解决不同设备通讯中的电平不稳定问题

    RS-485总线应用中,时常会遇到不同的RS-485设备之间通讯,不同的设备间兼容性存在不同,有的设备很稳定,有的设备却时常收到异常数据,这是什么原因导致的呢?又应如何避免呢? RS-485应用异常 某储能客户在使用ZLG的全隔离RS-485收发芯片SM4500过程中,时常会出现数据不稳定情况,如下图 1,客户设备与不同的RS-485设备通讯时,有的设备通讯稳定,有的设备则时不时会收到异常电平。 图1 SM4500应用简图经过测试发现客户板卡RS-485通道在空闲时,总线电平处于0电位。如图 1…

    Modbus技术文档 2024年2月20日
  • Modbus Poll 异常功能解释与详细说明

    Modbus Poll 异常功能解释与详细说明

    Modbus Poll是一种广泛用于Modbus通信协议的测试工具,它允许用户模拟主设备(通常是客户端)与从设备(通常是服务器)之间的通信,以验证通信的正常性。在Modbus Poll的使用中,用户可能会遇到各种异常功能,这些异常功能对于故障诊断和问题解决至关重要。本文将深入探讨Modbus Poll中的异常功能,为用户提供详细的解释和说明。 Modbus Poll 异常功能的概述 Modbus Poll异常功能是指在使用该工具时可能出现的不正常行为或错误情况。这些异常功能是用户了解问题并采取适…

    Modbus技术文档 2023年11月3日
  • Modbus异常相应代码说明

    Modbus异常相应代码说明

    Modbus通信协议是工业自动化中常用的协议,它允许主设备(通常是客户端)与从设备(通常是服务器)之间进行数据交换。在Modbus通信中,服务器(从设备)必须生成适当的响应来处理请求,并在必要时发送异常响应。本文将深入探讨Modbus响应的生成和异常处理。 Modbus响应类型 Modbus通信中,根据请求的处理结果,可以生成两种类型的响应: Modbus异常响应的目的 Modbus异常响应的主要目的是向客户端提供与请求处理过程中检测到的错误相关的信息。它帮助客户端了解通信问题的具体原因,从而采…

    Modbus技术文档 2023年11月3日
  • 在Modbus通讯中发送时间戳的参考方法

    在Modbus通讯中发送时间戳的参考方法

    在Modbus协议中嵌入时间戳需要一些谨慎考虑,因为Modbus本身没有定义专门的时间戳对象。以下是如何在Modbus(RS485)通信中发送时间戳的一些建议方法和步骤: 如何在Modbus (RS485)通信中发送时间戳 在工业自动化和远程监测应用中,时间戳对于确切的数据关联至关重要。尤其是在Modbus通信中,没有内置的时间戳机制,因此需要特别关注如何嵌入时间戳。以下是实现这一目标的方法和步骤: 步骤1:选择时间戳格式 首先,您需要选择适当的时间戳格式。常见的时间戳格式之一是使用POSIX(…

    Modbus技术文档 2023年10月31日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部