Ⅰ.什么是串行通信?
一次只能传输一行数据,使用串行通信一次只能传输一位。一个字节必须传输八次才能被接收。串行通信是指通过单根导线传输数据字符串,这就是它被称为串行端口的原因。
在速率要求不高的情况下,通过单线发送数据是极其方便实用的。
异步串行通信需要以下所示的格式,以便以正常方式发送和接收正确的数据。
图1
串口的通信参数中有多种参数,包括波特率、起始位、 数据位、奇偶校验位和停止位。
二.232\485\422通讯有什么区别?
串口通讯主要分为232、485、422三种通讯方式,这三种有什么区别呢?
01232 通讯
图2
RX、TX、 GND 是构成232通信的三根线。TX 连接到 RX,RX 连接到 TX, GND 连接到 GND,在这种情况下,发送和接收由单独的线路处理,允许同时传输和接收数据,这种技术称为全双工通信。
详细来说,全功能串行通信也称为标准串口,是串行通信的另一个功能。由于两个设备之间的数据流,某些设备处理数据的速度比其他设备更快。在RX和TX的基础上增加了几个控制引脚,以保证数据的正常传输,最后增加了9个引脚,即常见的DB9,如下图所示。
图3
现在很多控制器、人机界面、PLC等设备都不再使用传统的串口进行串行通信,而是使用RX、TX、 GND三根线。
02485 通讯
图4
485是为了解决232通讯距离短的问题而诞生的。
- 和 - 两条线,通常称为 A 和 B 线,是 485 通信所需的全部。作为数据信号,传送两条线路A和B的差分电平信号。由于这两根线同时用于发送和接收,因此它们一次只能用于其中一种功能。因此,485 是一种半双工通信模式。
这就是232全双工如何牺牲效率来实现其远传输距离的代价。
03422 通讯
422的出现是为了实现232的全双工通信方式,同时也将传输距离增加到485。422也称为485-4,而485则称为485-2。下图是422的示意图,因为485-2是两线,485-4是四线。
图5
422是把232的RX分成两根线, RX+ 和RX-,TX分成TX+和TX-的结果 。这允许您同时发送和接收数据,并且具有长达 485 的更长传输距离。但是,这种有益的通信策略很少使用。232 和 485 是最常用的。
三.有关串行通信的常见问题
1、电脑使用USB转串口可以与设备通讯,但换成屏幕就无法与设备通讯?
1)有可能电脑的 USB 转串口是使用常规串口功能链接到设备的,也就是说除了RX、TX、GDN之外还使用了其他引脚。例如,欧姆龙 和 三菱PLC上的某些引脚 必须短路才能与屏幕通信。
2)计算机与控制器或PLC通讯时扫描波特率参数,自适应屏通讯可能参数比设备少。在 Mitsubishi 和Keyence等 PLC 中,有一个更改通信交互波特率的程序 。
3)另一种可能是使用的接线方法不当。因为某些 DB9 需要公头和母头。不注意的话会有TX与TX相连、RX与RX相连的位置,所以要注意。
- 需要注意的是,有时可能会利用一些串行助手向控制器发送测试数据。请提醒我,因为某些串行助手的奇偶校验不起作用。
2、A家的屏幕可以与设备通信,B家的屏幕却无法通信?
-
检查接线是否正确,RX 和 TX 是否兼容。
-
检查地线是否连接。
3)除了RX、TX、 GND之外,还有其他引脚需要短接吗 ?
4)通讯协议是否齐全或不一致,以及波特率。
3、以前不需要地线就可以通讯。为什么需要更换另一台设备的地线?
由于某些设备采用隔离电源,因此该问题与上一问题类似。以前不用接地也可以通讯,但有可能已经接了地线,可以通讯了。可以更换为隔离电源,并且由于两个设备的地是隔离的,所以串口上的地线必须连接。
4、一个设备是232,另一个是422,没有转换设备,怎么办?
因为这两个是全双工的,接收和发送是分开的,而422只是作为差分信号来传输,所以刚才也提到了422和232的接线。
将422的RX+连接 到232的TX,将422的RX-连接到232的 GND,
将422的TX+连接到232的RX,将422的TX-连接到232的GDN。
如果 422 设备想要传送数据,可以通过将其发送到 232 的 RX 来实现。由于TX和 GND 对422产生差分信号,232的TX发送数据后422即可接收数据。
5、232通讯没问题,485通讯没问题,用232转485后,通讯不稳定?
232和485在通信概念上最大的区别就是全双工和半双工的区别。另一方面,应用层以全双工或半双工模式发送和接收数据。
但是,485必须处理。由于它是半双工的,因此必须确保只有发送或接收的数据才能通过该路径。如果同时启用发送和接收,数据将会发生冲突。因此,主站设备或者主动指挥方必须严格管理数据命令的发送频率。当然,某些232到485的设备比较好,这个可以改进,但是主站还是要控制,改变通讯速率比较迟缓。
- 实现两屏或两个主站通过485访问Modbus设备的最佳方式是什么?
485通信本质上是一个主站和多个从站。另一方面,一些客户在实践中更喜欢使用两个屏幕来访问 Modbus 设备。目前没有可行的选择。
- 串行通讯的缺点?
-
处理信号干扰时,最好使用绝缘电缆并遵守严格的接线准则,例如接地。在某些 485 通信中还考虑连接终端电阻以进行匹配。如果号码是 232,请保持简短。通信协议中尽量避免大消息的数据交换。
-
波特率匹配问题 由于使用的不同晶振会导致某些设备(尤其是控制器)计算的波特率不准确。因此,在某些波特率下,例如 9600 波特,会出现错误。错误的存在会产生什么影响?因为接收方是进行逐位计算的。如果消息太长,就会出现错误累积,计算就会出现偏差。因此,有些地方串行通信不可靠,应注意防止传输数据很长的数据包。
-
在某些可能存在干扰的情况下,您可能需要考虑使用奇校验或偶校验,因为虽然出错的可能性较低,但如果添加奇偶校验,至少可以过滤掉错误的数据包。失去。就好像没有验证,然后通讯数据不正确,我就不知道该怎么办了。为了避免数据错误,请尝试使用带有校验和的协议。
4)串行通信本来就很慢;因此,请限制数据响应要求,因为串行传输比 以太网慢。另外,与CPU不同,串行传输不是多线程的。即使应用到软件上,如何利用多线程来处理数据,最底层也只有一个端口,由于数据是从一个端口发出来的,一次只能传一位和一个字节。和一行。因为有的客户采用9600波特率通信,多少毫秒可以处理多少数据?
然而,串行通信必须是现实的,因此透彻理解该协议有利于应用程序的开发、测试和通信。
- 为什么不使用同步通信?
如前所述,同步通信取决于时钟信号。谁发起这个时钟信号是一个问题。在同步通信中,主设备经常需要发起时钟信号,以便读取从模块的数据。实际中有读屏PLC和读屏数据。异步串口通信没有主从关系;双方角色平等,可以互相传输和接收数据。CPU使用同步通信来读取一些模块,CPU开始时钟信号,比如读取SD卡模块(可以通过 SPI完成 )和一些传感器模块。