“串口”是串行通信接口的简称,所谓“串行通信”是指数据按位依次发送的通信方式。常见的串口有:RS232和RS485。虽然串口通信诞生的时间较早,但它仍然活跃在当今工业自动化控制领域。今天这篇文章,我们来深入介绍下RS232串口。本文包括如下几个主题:
1、RS232的历史
2、RS232的接口
3、RS232的电气信号
4、RS232的电平转换芯片
5、RS232的数据传输
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设备,如下图所示:
实物如下图所示:
针脚定义见下面的表格:
编号 | 名称 | 缩写 |
---|---|---|
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)两种,如下图所示:
针脚定义见下面的表格:
编号 | 名称 | 缩写 |
---|---|---|
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其串口为公头,如下图所示:
对于DTE和DTC的通信,可以使用直连的方式,如下图所示:
对于两个DTE(比如PLC和扫码枪)之间的通信,应采用交叉连接的方式。可以将所有引脚相互连接,如下图所示:
可以采用最小连接的方式,仅使用三根线,将双方的TxD和RxD互连,GND互连,如下图所示:
这种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,则帧和逻辑值如下图所示:
接下来我们做一个计算。
假设某RS232通信设置波特率=9600,数据位=8,无校验(=0),停止位=1。请问该通信参数下,每秒钟可传输多少个字节的数据?
答:根据参数可知,该通信的帧长度=1+8+1=10 位(bit),在该帧中传输了一个字节(8位)。因此对于9600的波特率,每秒钟最多可传输实际数据=9600/10=960字节。
关于数据传输还有流控制等内容。本文实在有点长,就留到后期介绍吧。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》通信部分也对RS232有比较详细的介绍,感兴趣的话可以扫描下面的二维码查看:
来源:本站| 大小:1222 KB| 下载次数:1688次
发表评论