赞
踩
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。尽管串行通讯的比按字节传输的并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。
由于串口通信是异步的,所以端口能够在一根线上发送数据同时在另一根线上接收数据。简单的解释就是:两个人说话,一个人说,一个人听。
串口通信最重要的参数是端口(com)、波特率、数据位、停止位和奇偶的校验。对于两个需要进行串口通信的端口,这些参数必须匹配,共同遵守,这也是能够实现串口通讯的前提。
波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示。
比如波特率为9600bps;代表的就是每秒中传输9600bit,也就是相当于每一秒中划分成了9600等份。
因此,那么每1bit的时间就是1/9600秒=104.1666…us。约0.1ms。既然是9600等份,即每1bit紧接着下一个比特,不存在额外的间隔。两台设备要想实现串口通讯,这收发端设置的波特率必须相同,否则是没办法实现通讯的。
收发波特率一致可以实现通讯:
收发波特率不一致,导致RX端不能正常接收:
起始位:起始位必须是持续一个比特时间的逻辑0电平,标志传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步。
数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定。传输数据时先传送字符的低位,后传送字符的高位。
奇偶校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。
停止位:停止位可以是是1位、1.5位或2位,可以由软件设定。它一定是逻辑1电平,标志着传输一个字符的结束。
空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充。
2、RS232串口通信协议
最初数据是模拟信号输出简单过程量,后来仪表接口出现了RS232接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能,这就促生了RS485。
我们知道串口通信的数据传输都是0和1,在单总线、I2C、UART中都是通过一根线的高低电平来判断逻辑1或者逻辑0,但这种信号线的GND再与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。所以差分通信、支持多机通信、抗干扰强的RS485就被广泛的使用了。
RS485通信最大特点就是传输速度可以达到10Mb/s以上,传输距离可以达到3000米左右。大家需要注意的是虽然485最大速度和最大传输距离都很大,但是传输的速度是会随距离的增加而变慢的,所以两者是不可以兼得的。
RS232,RS485通信协议实际是一种标准,我们可以直接使用这种标准进行通信,完全没有任何问题。我们还可以自定义通信协议,自定义通信协议是基于需求编写的,符合RS232等标准的协议就可以通信了。
串口通讯的物理层有很多标准,例如上面提到的。这里我们主要接收RS232标准,RS232标准主要规定了信号的用途、通讯接口以及信号的电平标准。
在上面的通讯方式中,两个通讯设备的"DB9接口"之间通过串口信号线建立起连接,串口信号线中使用"RS232标准"传输数据信号。由于RS232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个"电平转换芯片"转换成控制器能识别的"TTL校准"的电平信号,才能实现通讯。
芯片和PC机相连,通常PC机使用的是RS232接口(9针)。如果要使芯片与PC机的RS232接口直接通信,需要将芯片的输入输出端口也电平转换为RS232类型,再交叉连接,二者的电平标准不同:
单片机的点评标准(TTL电平):+5V表示1,0V表示0;
RS232电平标准:+15/+13V表示0,-15/-13表示1;
因此单片机与PC机进行串口通信应该遵循:在单片机串口与上位机给出的RS232口之间,通过电平转换电路实现TTL电平与RS232电平间的转换。
下图为DB9标准串口通讯接口:
DB9引脚说明:
上表中的是计算机端的DB9公头标准接法,由于两个通讯设备之间的收发信号(RXD与TXD)应交叉相连,所以调制调解器端的DB9母头的收发信号接法一般与公头的相反,两个设备之间连接时,只要使用"直通型"的串口线连接起来即可。
串口线中的RTS、CTS、DSR、DTR及DCD信号,使用逻辑 1表示信号有效,逻辑0表示信号无效。例如,当计算机端控制DTR信号线表示为逻辑1时,它是为了告知远端的调制调解器,本机已准备好接收数据,0则表示还没准备就绪。
如果使用USB转串口也可以实现串口通讯,USB转串口电路图如下所示:
3、远程串口使用
要想在办公室的电脑上连接生产线上的串口设备,如智能模块、仪表、PLC等,直接拉一条长距离串口线肯定是不行的,因为中间的距离实在太长了,对于这段不可跨越的距离,我们可以借助以太网来实现,即工厂的局域网,解决方案如下图示(以PLC连接为例说明)。
实现方法:
在PLC端增加一个串口服务器,实现串口转网口功能。串口服务器有一个网口和一个串口。
远程电脑主机和串口服务器分别通过网线接入局域网,获得IP地址,建立网络连接。
在电脑端运行虚拟串口软件,目的是将远程串口服务器上的串口虚拟成本机串口,效果是可以把远端的串口当作本地串口来使用。方法是先通过网络搜索串口服务器,找到后再分配一个空闲的串口号当作本机串口,如下图:
此时电脑端的PLC编程软件就可以使用刚才指定的串口号来连接远程的PLC,效果就像本地连接一样方便。连接其它串口设备也同样的道理。
注意:
串口服务器的IP地址最好设置为固定IP,这样可减少因动态IP变动导致的通讯故障。
串口服务器在跨网段应用时,一定要设置好网关地址。
代码下载:studydome: 1221211232023032032030320
————————————————
原文链接:https://blog.csdn.net/qq_35029061/article/details/130717375
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。