北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章528 浏览8062622

深入理解RS232串口

“串口”是串行通信接口的简称,所谓“串行通信”是指数据按位依次发送的通信方式。常见的串口有:RS232和RS485。虽然串口通信诞生的时间较早,但它仍然活跃在当今工业自动化控制领域。今天这篇文章,我们来深入介绍下RS232串口。本文包括如下几个主题:

1、RS232的历史

2、RS232的接口

3、RS232的电气信号

4、RS232的电平转换芯片

5、RS232的数据传输

cover.png

1、RS232的历史

RS232是美国电子工业协会(Electronic Industries Association ,EIA)于1962年颁布的通信标准,其全称是:DTE和DCE的电气/机械接口标准。“DTE”是英文“Data Terminal Equipment ”的缩写,翻译为“数据终端设备”,比如计算机;“DCE”是英文“Data Circuit-terminating Equipment”的缩写,翻译为“数据电路端接设备”。也有将其写作“Data Communication Equipment”,翻译为“数据通信设备”,比如调制解调器。“RS232”名称中的“RS”是“Recommand Standard”的缩写,表示“推荐标准”。“232”是标识号。早期的RS232是为了实现计算机、程控电话、调制解调器之间通信而制定的标准,后来经过多次改版,成了一种通用的串行通信标准。RS232的改版信息如下:

  • 1969年C版本(RS232-C);

  • 1986年D版本(RS232-D);

  • 1991年E版本(RS232-E);

  • 1997年F版本(RS232-F);

目前,在工业自动化领域,RS232多用于触摸屏、读卡器、扫码枪、打印机等设备与PLC之间的通信。

2、RS232的接口

在F版本之前,RS232使用25针串行接口,分为公头(Male)和母头(Female)两种,公头用于DTE设备,母头用于DCE设备,如下图所示:

25pin-1.png

实物如下图所示:

25pin-2.jpg

针脚定义见下面的表格:

编号
名称
缩写
1

Shield/

屏蔽


2

Transmitted Data/

发送数据

TxD
3

Received Data/

接收数据

RxD
4

Request To Send/

请求发送

RTS
5

Clear To Send/

允许发送

CTS
6

DCE Ready/Data Set Ready

数据集就绪

DSR
7

Signal ground/common return

信号接地

SG
8
Received line signal detector

9

Reserved for data set testing/

保留


10

Reserved for data set testing/

保留


11

Unassigned/

未分配


12
Secondary received line signal detector

13
Secondary Clear To Send
(S)CTS
14
Secondary Transmitted Data
(S)TxD
15
Transmission signal element timing

16
Secondary Received Data
(S)RxD
17
Receiver Signal Element Timing(DCE)
18
Local Loopback

19
Secondary Request To Send
(S)RTS
20
DTE Ready/Data Terminal Ready
DTR
21

Remote Loopback/

Signal Quality Detector


22
Ring Indicator
RI
23
Data Signal Rate Selector

24
Transmit signal element timing (DTE)

25
Test Mode

25针串口针脚太多,用起来比较繁琐。为了简化RS232串口,在F版本中定义了9针串口,同样包括公头(用于DTE)和母头(用于DCE)两种,如下图所示:

9pin-1.png

针脚定义见下面的表格:

编号
名称
缩写
1

Data Carrier Detect/

数据载波监测

DCD
2

Received Data/

接收数据

RxD
3

Transmitted Data/

发送数据

TxD
4

Data Terminal Ready/

数据终端就绪

DTR
5

Ground/

接地

GND
6

Data Set Ready/

数据集就绪

DSR
7

Request To Send/

请求发送

RTS
8

Clear To Send/

允许发送

CTS
9

Ring Indicator/

振铃提示

RI

PLC被视为DTE设备,其RS232串口为公头。比如S7-1200的串口模块CM1241 RS232其串口为公头,如下图所示:

CM1241-RS232.png

对于DTE和DTC的通信,可以使用直连的方式,如下图所示:

direct-link.PNG

对于两个DTE(比如PLC和扫码枪)之间的通信,应采用交叉连接的方式。可以将所有引脚相互连接,如下图所示:

full_crosss.png

可以采用最小连接的方式,仅使用三根线,将双方的TxD和RxD互连,GND互连,如下图所示:

min-link.png

这种DTE直接连接,不经过DCE的连接也称为“ null modem”连接,这类电缆称为“null modem”电缆或交叉电缆。

3、RS232的电气信号

RS232接收-发送端的电信号是相对于公共地线(GND)的电压信号。当电压差值在+3V~+15V之间表示逻辑“0”,当电压差值在-3V~-15V之间表示逻辑“1”,电压差值在-3V~+3V之间没有定义。3V是最小的可检测电压信号,实际使用时期望电压差的绝对值在5V~15V之间,即:发送数据时,发送端驱动器输出正电压信号+5V~+15V,表示逻辑“0”;负电压信号-5V~-15V表示逻辑1。接收数据时,只要是检测到大于3V的电信号,即将其视为有效信号。

4、RS232的电平转换芯片

单片机的引脚输出的是TTL电平,需要使用专用的转换芯片(TI公司的MAX3232或者ST公司的ST3232等)将其转换为RS232电平。详细内容请看我之前的文章:RS232电平和TTL电平有什么不同?如何转换?

5、RS232的数据传输

数据传输涉及的第一个概念是波特率。我们知道串行通信的传输是一位接着一位的,其传输单位为:位(bit)。因此,波特率的定义就是在单位时间内传输的位的个数。国际公用的单位时间为秒(s),因此波特率的单位为:bit/s(b/s),也写作bps(bit per second)。

波特率有一定的选择范围(并非任意值),常见的波特率有:9600,38400,56000,115200等。还有很多其它的值,通信双方约定好相同的波特率即可。

RS232是一种点对点的通信,其数据帧由起始位、数据位、校验位、停止位四部分组成。

  • 起始位:长度1,数据值等于逻辑0,表示开始发送数据;

  • 数据位:长度8或7,表示实际发送的数据;

  • 校验位:长度0(无校验)或1(奇校验或偶校验);

  • 停止位:长度1、1.5或者2,数据值等于逻辑1,表示数据帧发送结束;


假设某RS232通信设置数据位=7,奇校验,停止位=2,则帧和逻辑值如下图所示:

frame.png

接下来我们做一个计算。

假设某RS232通信设置波特率=9600,数据位=8,无校验(=0),停止位=1。请问该通信参数下,每秒钟可传输多少个字节的数据?

答:根据参数可知,该通信的帧长度=1+8+1=10 位(bit),在该帧中传输了一个字节(8位)。因此对于9600的波特率,每秒钟最多可传输实际数据=9600/10=960字节。

关于数据传输还有流控制等内容。本文实在有点长,就留到后期介绍吧。

我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》通信部分也对RS232有比较详细的介绍,感兴趣的话可以扫描下面的二维码查看:


深入理解RS232串口

来源:本站|   大小:1222 KB|   下载次数:706次

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论