新闻动态   News
你的位置: > 技术

串口通信及其常见问题

时间:2024-10-31 00:07:36  来源:  作者: 点击统计:

串口通信及其常见问题[复制链接]什么是串口通信    串口通信,就是传数据只有一根线传输,一次只能传一个位,要传一个字节就需要传8次。

串口通信就是把数据串在一根线上传输,所以就叫串口吧。

    在对速率要求不高的情况,使用一根线发送数据是带来大大的方便和实用价值的。

为了能正常发送和接收正确的数据,那异步串口通信就需要如下图的格式。

 在串口的通信参数上,就有了波特率、起始位、数据位、校验位、停止位这几个参数。

    串口通信主要为分232,485,422三种通信方式,这三种有什么区别呢?232  232通信主要是由RX、TX、GND三根线组成。

    RX接TX,TX接RX,GND接GND。

这里发送和接收分别是由不同的线处理的,也就是能同时发送数据和接收数据,这就是所谓的全双工通信。

    在这里扩展一下,串口通信还有一个功能叫做全功能串口通信,也叫标准串口。

因为在两个设备间进行数据传输,有些设备处理速度比较快,有些数据比较慢。

为了保证数据能正常传输,在RX、TX的基础上,还增加了几个控制引脚,最后成了9个引脚,也就是常见的DB9这个东西,如下图所示。

 但是,如今很多控制器、人机界面、PLC等使用串口通信中一般不使用标准串口,而是直接使用RX、TX、GND三根线来通信的。

485    485的出现,是为了解决232通信距离受限的问题。

    485通信只需要+、-两根线,或者也叫A、B两根线。

A,B两根线的差分电平信号就是作为数据信号传输。

由于发送与接收都是用这两根线,也就是说每次只能用作发送或者只能用作接收。

所以,485是半双工通信。

 485就是这样牺牲了232全双工的效率来达到自己传输距离远的代价。

422    422的出现,是为了既实现232的全双工通信方式,又能像485这样提高传输距离。

422也常被标注为485-4,而485被标注为485-2。

因为485-2是2根线,485-4是4根线,下图是422的示意图。

   422就是把232的RX分成两根线,RX+,RX-,把TX分成TX+,TX-。

这样就可以同时发送和同时接收了,还可以像485这样,有较远的传输距离。

可是这样一种很有优势的通信方式,却用的不多,最常用到的是232跟485。

串口通信常见问题电脑使用USB转串口可以和设备通信上,换成屏与设备就通信不上了1)有可能电脑USB转串口接到设备上,使用的是标准串口功能,也就是除了RX,TX,GDN外,还使用了其它引脚。

比如像欧姆龙PLC,三菱PLC,在实际与屏的通信中,就需要接某些引脚短接的情况。

2)电脑与控制器或PLC通信时,是扫描波特率参数,自适应的,屏通信可能参数没有设备好。

在三菱,基恩士等PLC,就存在变化波特率进行通信交互的过程。

3)也有可能是接线方式不对。

因为有些DB9,还需要公头,母头。

如果不注意的话,也会存在把TX接到TX上,把RX接到RX上,这样需要注意的地方。

4)在这里补充一下,有时候可能会使用一些串口助手发送测试数据与控制器通信,有些串口助手的奇偶校验是不起作用,这个要提醒一下。

这A家的屏可以和设备通信,换成B家的屏就通信不上了1)首先确认一下接线是否正确了,RX和TX是否兼容。

2)地线是否没有接。

3)除了RX,TX,GND,是否还有其它引脚需要短接的。

4)通信协议是否一致或不完善,波特率是否一样。

以前不接地线可以通信,换个设备为什么需要接地线了    这个问题和上一个类似,因为有些设备使用了隔离电源。

以前不接地可以通信,有可能实际上地线已经接了,所以才可以通信。

可能换了个带隔离电源的,两个设备的地是隔离的,就需要在串口上把地线接起来。

这个我是自身经历过的,有个客户老说他的设备通信不上,后来拍个照我给我,他地线没有接,他说以前不接地线可以通信的。

于是我就给他科普了一下。

一个设备是232,另一个设备是422,没有转换设备,怎么办    这个情况我遇到过,客户的设备是422通信的,但是我手上并没有422设备,只有232通信可以测试。

因此就需要把422转成232进行通信。

    刚才也讲了422和232的接线,因为这两个都是全双工的,接收和发送都是分到的,而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就可以接收到数据了。

用232通信没问题,用485通信没问题,使用232转485之后就通信不稳定    232和485从通信原理上,最大一个差别是全双工和半双工的区别。

可是应用层发送数据和接收数据才不管底下是全双工还是半双工。

    但是485就得管了。

因为既然是半双工,就得严格保证通路上只能有发送或只能有接收的数据,一旦同时有发送和接收,数据就会冲突了。

所以解决的办法就是主站设备,也就是主动命令的一方就需要严格控制好发送数据命令的节奏了。

当然有些232转485的设备做的比较好了,可以优化这个,但是主站还是要控制,比较把通信速率调节慢一些。

要想实现两个屏或两个主站通过485访问modbus设备,有什么好的办法 在485通信中,基本上是一主多从。

但是遇到一些客户实际使用中,有客户想用两个屏来访问一个modbus设备的。

目前暂时还没有好的办法。

等这个功能出来后,再来给大家演示操作吧。

串口通信的弱点1)信号干扰的问题    建议使用带屏蔽线,接线要严格,比如要接地。

有些485通信上,还考虑接上终端电阻来匹配。

如果是232,尽量不要让线太长。

通信协议上尽量避免长报文的数据通信。

2)波特率匹配的问题    因为有些设备的计算的波特率是存在误差的,特别是一些控制器,由于使用的晶振不一样。

因此在一些波特率比如9600波特率就存在误差。

存在误差带来的影响是什么呢。

因为接收方是通过时间来计算一个位的。

那么如果一个报文过长,就会存在误差积累的问题,算着算着就偏了。

所以,这也是串口通信不稳定的一些地方,在使用上应注意避免发送太长数据的包。

3)在一些可能会存在干扰的情况,可以考虑使用奇校验或者偶校验。

因为虽说出现错误的可能性不大,但既然存在干扰,如果加了校验,至少可以把错误的报文过滤掉。

总好比没有校验然后通信数据错了不知道。

或者尽量使用一些带校验的协议,防止数据出错。

4)串口通信本来就比较慢,请降低对数据响应的要求    因为串口通信本身就比以太网慢。

而且,串口通信并不是能像CPU那样多线程处理。

因为就一个口一个线数据出去,即便你应用到程序再怎么用多线程处理数据,但是最底下也只有一个口出去,一次也只能传一个位,一个字节过去。

因为有客户在使用9600的波特率通信,但是又希望多少的数据可以在多少毫秒内得到响应。

但是串口通信还是要事实求是,所以正确认识串口通信对应用,对开发,对沟通都有着很大的帮助的。

为什么不用同步通信  刚才提到,同步通信需要依赖于时钟信号。

这就存在一个问题,这个时钟信号是谁来发起呢。

在同步通信中,往往需要一个主设备发起时钟信号读从模块的数据。

在实际中,有屏读PLC,有屏读屏的数据。

而单纯地从异步串口通信来说,是没有主从之说,双方都是平等的角色,都可以互发信息,互收信息。

而同步通信一般是应用于CPU读一些模块,由CPU发起时钟信号,比如读SD卡模块,就可以通过SPI方式,还有一些传感器模块。

 丨 整理文章为传播相关技术,版权归原作者所有丨丨如有侵权,请联系删除丨  此帖出自综合技术交流论坛

  • DCDC输入端电容波形
    DCDC输入端电容波形[复制链接] 今天测试电源输出纹波,心血来潮测试了一下输入端的波形,用的IC是LM5007,电路和数据手册的推荐电路一样。 发现输入端电容的波形如图所示,之前有测过别的DCDC输入端的波形,印象中是一条直线。 想请教一些各位这个波形是和具体的IC特性有关吗? 此帖出自电源技术论坛|||输入滤波电容的容量不足。 |||...
  • 今日直播:第三代 TI C2000™ 新特性资源更新
    今日直播:第三代TIC2000™新特性资源更新[复制链接]点此参加>>>直播时间今天上午10:00-11:30直播主题第三代TIC2000™新特性资源更新直播内容对比于第二代C2000™,第三代芯片新增的性能,对传统电机和电源应用提供强有力的支持;更加丰富的功能和计算能力,帮助客户优化产品设计,提升产品性能。 直播流程■ 新特性介绍■ 特性详解与...
  • PL2733C带CC恒流3A车充IC,单口和双口快充方案
    PL2733C是颗输入6V-30V宽电压输入范围的DC-DC降压转换器,可实现持续3A的连续电流输出。 通过1脚FB端的R1和R2阻值来调节输出电压,可以调节1.8V-28V之间的输出电压。 PL2733C具有CC恒流和CV恒压特性,开关频率130KHZ,具有良好的EMI特性。 还带有线材电压的线电压补偿。 PL2733C具有输入过压保护,输入电压超过30V,将关闭输出,低于30V恢...