该程序是基于 NI LabVIEW 平台开发的 CAN(Controller Area Network,控制器局域网)通讯测试程序。主要功能是对 CAN 通讯过程进行模拟、数据传输与验证,确保 CAN 通讯的正常运行和数据的准确传输。
程序详细说明
接口选择(步骤 1)
功能:通过 “Select Interface” 和 “Select 2nd Interface” 控件,用户可以选择 CAN 通讯所使用的接口。这是整个 CAN 通讯的起始设置,决定了后续数据在哪个物理通道上进行传输。
原理:LabVIEW 通过与 NI 的硬件设备(如 CAN 接口卡)进行交互,识别并配置用户选择的接口,为后续的通讯操作做准备。
创建队列帧会话(步骤 2)
功能:分别创建 “Frame In Queued” 和 “Frame Out Queued” 的 XNET 会话。这两个会话分别用于输入队列帧和输出队列帧,相当于在 CAN 通讯的发送端和接收端建立数据缓冲机制。
原理:基于 NI 的 XNET(NI-XNET 是 NI 公司用于汽车网络通讯测试的软件工具包)技术,在 LabVIEW 环境中构建虚拟的帧队列,按照一定的规则管理和调度要发送和接收的 CAN 帧数据。
终端配置(步骤 3)
功能:通过 “Termination?” 布尔控件,用户可以选择是否在 CAN 通讯卡上启用终端电阻。当通讯电缆没有自带终端电阻时,启用此功能可以避免信号反射等问题,保证信号传输的稳定性。
原理:CAN 通讯中,终端电阻是为了匹配总线阻抗,防止信号在总线末端反射。NI 的 CAN 接口卡支持通过程序控制内部终端电阻的开启与关闭,以适应不同的硬件连接情况。
启动输入会话监听(步骤 4)
功能:启动输入会话,使其开始监听 CAN 总线上的数据。这一步是接收数据的准备工作,让程序处于随时接收总线上传输过来的 CAN 帧的状态。
原理:利用 NI-XNET 提供的驱动和接口函数,在选定的 CAN 接口上设置监听模式,实时捕获总线上的 CAN 帧信号,并将其转换为 LabVIEW 能够处理的数据格式。
数据发送(步骤 5)
功能:将 “Frame Out Queued” 中的 2 个 CAN 帧数据发送到 CAN 总线上。这是数据传输的主动操作,把预先准备好的数据发送出去,供接收端接收和处理。
原理:通过调用 NI-XNET 相关的发送函数,将存储在队列帧中的数据按照 CAN 通讯协议的格式,逐帧发送到 CAN 总线上,实现数据的物理传输。
数据读取(步骤 6)
功能:读取输入会话在 CAN 总线上接收到的数据。在发送数据后,接收端需要获取总线上的数据,以便后续进行验证和分析。
原理:基于 CAN 通讯的接收机制,NI-XNET 的接收函数会不断扫描 CAN 总线,一旦检测到有符合接收条件的 CAN 帧,就将其读取并存储到程序的内存空间中,供后续处理。
数据比较与测试验证(步骤 7)
功能:将发送的数据和接收到的数据进行比较,判断通讯过程中数据是否完整、准确。如果数据一致,则 “Test Passed?” 输出为 True,表明 CAN 通讯测试通过;否则为 False。
原理:通过 LabVIEW 的比较函数,对发送前存储的原始数据和接收后的数据进行逐字节或按帧结构比较,依据比较结果输出测试是否通过的逻辑判断。
CAN 通讯的用途、特点和特征
用途
汽车电子领域:CAN 通讯广泛应用于汽车内部的电子控制系统,如发动机控制单元(ECU)、车身控制模块(BCM)、防抱死制动系统(ABS)等之间的数据交换,实现车辆各部件之间的信息共享和协同工作。
工业自动化:在工业生产线上,用于连接传感器、执行器、控制器等设备,实现设备之间的实时数据传输和控制指令传递,提高生产过程的自动化程度和效率。
智能交通系统:用于车辆与车辆(V2V)、车辆与基础设施(V2I)之间的通讯,为自动驾驶、智能交通管理等提供数据交互基础。
特点和特征
多主架构:CAN 总线允许多个节点同时作为主节点发送数据,不存在传统总线结构中的主从之分,每个节点都有权在总线空闲时发送数据,提高了通讯的灵活性和可靠性。
非破坏性仲裁:当多个节点同时竞争总线发送数据时,采用非破坏性仲裁机制。优先级高的消息会优先发送,而优先级低的消息在仲裁失败后会自动停止发送,并等待总线空闲后重新发送,避免了总线冲突,保证了通讯的高效性。
错误检测与处理:CAN 协议具备强大的错误检测功能,包括位错误、填充错误、CRC 错误等。一旦检测到错误,节点会自动发送错误帧通知其他节点,并进行错误处理,如重发数据等,提高了数据传输的准确性和可靠性。
高实时性:CAN 通讯的数据传输速率较高,在不同的应用场景下可配置不同的波特率(如 125Kbps、250Kbps、500Kbps 等),能够满足实时性要求较高的应用场景,确保数据及时传输和处理。
NI 可用的 CAN 相关产品
NI CAN 接口卡:如 NI PCIe - 8512/8514 等,这些接口卡可以直接插入计算机的 PCIe 插槽,提供高速稳定的 CAN 通讯接口,支持多种 CAN 协议标准(如 CAN 2.0A、CAN 2.0B 等),并且与 LabVIEW 等 NI 开发工具高度集成,方便用户进行二次开发和应用。
NI CompactDAQ 机箱搭配 CAN 模块:NI CompactDAQ 是一种便携式、可重新配置的数据采集系统。搭配 CAN 模块(如 NI 9845 等),可以在工业现场、实验室等环境中灵活搭建 CAN 通讯测试和数据采集系统,实现对 CAN 总线上数据的采集、分析和控制。
