LabVIEW通讯-串口通信

本文介绍了串口通信中常用的RS232C、RS422、RS485标准的区别,对比了同步与异步通信的特点,并展示了如何利用LabVIEW进行串口通信的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用串口规范

RS232C、RS422、RS485区别

标准RS232RS422RS485
工作方式单端差分差分
节点数1发1收1发10收1发32收
最大传输电缆长度15m1219m1219m
最大传输速率20Kb/s10Mb/s10Mb/s
传输线数量9(DB9/DB25)52/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则用来标明接收端设备有没有准备好接收数据。

软件流控制通过XON/XOFF(传送继续/传送停止)字符实现。当接收端的输入缓冲区内数据量高于高位界限时,就向数据发送端发出XOFF字符,发送端收到XOFF后立即停止发送数据,当接收端的输入缓冲字符串内数据量低于设定的低位时,向数据发送端发出XON字符,发送端收到XON后立即开始发送数据。

### LabVIEW 中使用 RS485 进行通信 在 LabVIEW 中实现 RS485 通信可以通过 VISA(Virtual Instrument Software Architecture)库完成。VISA 是一种通用的串行通信接口,广泛应用于工业领域。以下是关于如何在 LabVIEW 中配置和实现 RS485 通信的具体说明: #### 配置硬件环境 为了支持 RS485 通信,在没有物理串口的情况下,可以借助 USB 转 RS485 的适配器创建虚拟串口[^3]。安装驱动程序后,操作系统会识别该设备并分配一个 COM 口编号。 #### 初始化 VISA 资源 通过 LabVIEW 提供的 VISA 函数节点初始化与目标设备之间的连接。具体操作如下: 1. 使用 **VISA Open** 函数打开指定的端口号。 2. 设置波特率、数据位、停止位及校验模式等参数以匹配目标设备的要求[^1]。 ```labview // 打开串口资源 VI = VISA Open("ASRL<port>::INSTR", accessMode, openTimeout); ``` #### 数据传输过程 发送和接收数据时需注意以下几点: - 发送前应构建完整的帧结构,包括起始符、地址码、功能码、数据域以及 CRC 校验值。 - 接收过程中要解析返回的数据包,并验证其合法性。 示例代码展示了基于 VISA 的写入命令函数调用方式: ```labview // 向设备发送指令 bytesWritten = VISA Write(VI, bufferToWrite[], timeout); // 读取响应消息 bytesRead = VISA Read(VI, readBuffer[], count, timeout); ``` #### 错误处理机制 考虑到实际应用中的不确定性因素,建议加入异常捕获逻辑以便及时发现错误来源并采取相应措施恢复运行状态。例如超时未收到预期回应或者接收到损坏的信息等情况都需要特别关注。 以上就是利用 LabVIEW 实现基本 RS485 通信的主要流程概述。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值