文章目录
- 常用串口规范
- 同步/异步通信
- LabVIEW串口通信的实现
常用串口规范
RS232C、RS422、RS485区别
标准 | RS232 | RS422 | RS485 |
---|---|---|---|
工作方式 | 单端 | 差分 | 差分 |
节点数 | 1发1收 | 1发10收 | 1发32收 |
最大传输电缆长度 | 15m | 1219m | 1219m |
最大传输速率 | 20Kb/s | 10Mb/s | 10Mb/s |
传输线数量 | 9(DB9/DB25) | 5 | 2/4 |
RS232C/RS422/RS485标准只是在连接件的接口电气特性方面有所差别,不涉及插件、电缆或协议,所以在用它们进行串行通信时,软件编程也非常相似。
RS232用的是单端接地信号,常用于连接鼠标、打印机、调制解调器、工业仪器仪表等,仅限于计算机串口与设备间的点对点连接。
RS422用的是差分电信号,使用两根线同时传输和接收信号。
RS485最多允许将32个设备连接到一个端口上,并定义了必要的电气特性,以确保在最大负载时的信号电压足够大。可应用于将许多分布式仪器与控制器联网,实现数据采集或其他工业程序。
同步/异步通信
串行通信有同步和异步两种常用的数据传输方式。
同步通信指在约定的通信速率下,发送端和接收端以同步的时钟频率和相位传输数据。
串行同步通信把多个数据字符组成信息帧,并在数据开始传送前,先用同步字符指示(约1-2个)时钟实现发送端和接收端同步。即,检测到规定的同步字符后,继续按顺序传送信息帧中的数据直到传送完毕。
一般情况下,同步通信会在信息帧后边加循环冗余校验(CRC)。
同步通信传送信息位数不受限制,效率高,但要求严格的时钟同步,多数情况下要求发送端和接收端使用同一时钟源。
同步通信一般用于对传输速率要求较高的场合。
异步通信以ASCII码字符为单位进行传输,字符间无固定时间间隔要求,每个字符中的各位以固定时间进行传送。
异步通信规定字符由起始位、数据位、奇偶校验位、停止位组成。收发双方由起始位和停止位同步。即,在一个有效字符正式发送前,先发送一个起始位,然后发送有效字符位,字符结束后再发一个停止位;从起始位到停止位构成一帧。停止位到下一个起始位之间为不定长空闲位,并规定起始位为低电平,停止位和空闲位都是高电平。
异步通信中每接收一个字符,收发双方都要重新同步一次,所以发送端和接受端可以由各自的时钟控制数据的发送和接收,无需严格同步,只要在一个字符的传输时间范围内可以同步就行。
异步通信一个字符大概增加20%的附加信息位,传输效率较低,但是简单可靠、容易实现。
LabVIEW串口通信的实现
Virtual Instrument Software Architecture,VISA是一个可调用的操作函数集,作为一个高层API,它本身不提供仪器编程能力,通过调用低层驱动程序实现对GPIB/RS232/USB/VXI等不同类型的仪器编程。
用VISA进行仪器控制的时候,一般是有进行设备配置-写信息-读信息-关闭设备这几个步骤。
先写再读一个端口
先写一个端口,再从另外一个端口读响应。
通过属性节点在每次发送完信息后自动添加结束字符。当然,也可以通过连接字符串的函数在发送信息后面增加终结字符串。设置ASRL End Out 为TermChar,TermChar En为True,并由TermChar指定终结字符。
如果只设置TermChar En位True,并由TermChar指定终结字符,则终结字符只对接收过程有效。
连续读写一个端口。这个是包含软件流控制的,用属性节点设置软件流控制机制中的XON/XOFF来控制字符的值。
常用的流控制方法含硬件流控制和软件流控制。
硬件流控制又有RTS/CTS(请求发送/清除发送)和DTR/DRS(数据终端就绪/数据设置就绪)。
硬件流控制需要将串口端子相应的电缆线连上。数据终端设备(计算机等)使用RTS启动调制解调器或其他通信设备的数据流,而数据通信设备(调制解调器等)需要用CTS启动和暂停来自计算机的数据流。
在程序中,可以根据接收端的缓冲区大小设置一个高位界限和一个低位界限,缓冲区内数据量到达高位界限时,在接收端将CTS置为低电平,在发送端检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位界限,再将CTS置为高电平。RTS则用来标明接收端设备有没有准备好接收数据。文章来源:https://uudwc.com/A/Dz1yB
软件流控制通过XON/XOFF(传送继续/传送停止)字符实现。当接收端的输入缓冲区内数据量高于高位界限时,就向数据发送端发出XOFF字符,发送端收到XOFF后立即停止发送数据,当接收端的输入缓冲字符串内数据量低于设定的低位时,向数据发送端发出XON字符,发送端收到XON后立即开始发送数据。文章来源地址https://uudwc.com/A/Dz1yB