NI-XNET 故障排除指南

更新 Nov 27, 2023

环境

驱动

  • NI-XNET

我在使用 NI-XNET 驱动程序或兼容硬件时看到错误或不正确的数据。我可以做什么来缩小问题范围?

概述

XNET 系统的核心组件可以分为硬件或软件。硬件包括XNET网络接口、构成物理总线的电线和电缆以及总线上的其他设备。软件包括在硬件上运行的程序和应用程序。

当第一次遇到错误时,缩小错误来源的范围很重要,无论是硬件还是软件。对于硬件,一些步骤是运行范例、进行回环测试、观察总线上的流量以及在 NI MAX 中硬件自检测。当谈到 XNET 应用程序的软件时,主要的两个组件是 NI-XNET 驱动程序和您正在开发的代码。确保正确使用硬件和软件的一个很好的资源是参考和搜索NI-XNET 手册

本文档解释了使用 NI-XNET 驱动程序时的一些常见故障排除步骤。

确认问题的特征

当 XNET 程序出现错误时,首先确认硬件正常工作。为了测试硬件是否工作,我们必须通过控制软件到已知的工作状态来隔离这些组件。测试硬件的其他方法包括回环测试、观察总线上的流量以及 NI MAX 中的硬件自检测。

当谈到 XNET 应用程序的软件时,主要的两个组件是 NI-XNET 驱动程序和您正在开发的代码。在极少数情况下,安装错误或驱动程序损坏可能会阻止您执行 XNET 的功能。重新安装驱动程序通常可以解决此类问题。对于代码中的逻辑问题,可以使用断点、高亮执行等常见的调试方法来缩小代码中出现错误的范围。


故障排除方法:


确保接口正在监听

通过预先启动 XNET 会话,确保设备的接口已准备好接收帧。如果 Auto Start? XNET Session 属性已启用,执行读取或写入操作会将接口从“Stopped”转换为“Started” 。或者,如果 Auto Start?如果设置被禁用,您将需要使用 XNET Start 功能手动启动会话或接口。

您还可以使用XNET Read Comm State 功能随时查看接口状态。这包括通信状态、收发器的错误、故障和睡眠状态。

兼容性及驱动升级

评估是否可以升级驱动程序版本。 NI-XNET 的较新版本包含错误修复,可以解决您所遇见的问题。
  1. 使用 NI-XNET Driver and LabVIEW Compatibility 检查 NI-XNET 版本与您的 LabVIEW 版本
  2. 检查 NI-XNET 最新兼容版本的自述文件,看看您的 NI-XNET 硬件是否出现在支持的设备列表中
  3. 如果可能,请安装最新的兼容NI-XNET 驱动程序


范例

LabVIEW 查找范例中的代码已经过测试可以正常工作。如果您的 XNET 程序中出现错误,则可以很好地测试范例代码中是否也出现错误。如果您在范例代码中也看到错误,则可能是您的 XNET 驱动程序、XNET 硬件或物理层存在问题。如果范例代码没有显示任何错误,则可能存在特定于您的代码问题。


回环测试

回环测试是确认嵌入式网络不同部分有效性的常用方法。在回环测试期间,设备将已知的测试数据传输回自身。测试数据的成功发送和接收可以确认系统以下组件的正常运行:
  • XNET硬件
  • XNET 驱动程序
  • 测试中使用的物理层
通过确认这些组件的正常运行,您有证据可以排除它们作为您可能遇到的错误来源的可能性。

要进行回环测试,您必须拥有具有XNET接口的设备。将物理层连接到两个接口。然后,您可以使用 LabVIEW 或 XNET Bus Monitor 在其中一个接口上发送传输帧并在另一个接口上接收该帧。预构建的 XNET Loopback 测试范例随 XNET 一起安装,可以在 LabVIEW 查找范例中找到。

 


常见错误


内部驱动程序错误:

内部驱动程序错误是发生在驱动程序级别的错误。可能的原因有很多种,因此在排除故障时最好收集尽可能多的信息。

要问的问题:
  • 当错误开始出现时,您的应用程序上下文是否发生了任何变化?
  • 您采取了什么操作导致错误?每次运行代码时都会发生吗?
  • 运行 NI-XNET 范例时是否会出现错误?
  • 将代码部署到其他计算机时是否会导致相同的错误?

根据一些答案,您可以尝试通过测试部分代码来隔离问题和/或恢复到旧的代码集以继续进行故障排除。有时,内部错误只会发生在 NI MAX 或 LabVIEW 中。如果您在 LabVIEW 代码中看到错误,请尝试在 NI MAX 中自检 NI-XNET 硬件。自检还会重置设备的固件,因此有时,自检可以成为从内部错误中恢复的一种方法。

要进行自检,请在 NI MAX 中单击您的设备,然后在第一个选项卡下,顶部有一个自检选项。


意外数据、帧或无数据

如果您发现 NI-XNET 应用程序中传输或接收的数据不正确或缺少数据,最好的第一步是确定问题是由硬件还是软件引起的。使用常见的 LabVIEW 调试技术确保您的代码按预期执行。对数据线打上探针是确认传递到 NI-XNET 函数的数据是否符合您的预期的好方法。使用正确的错误处理来确保代码中的上游错误不会导致级联效应。此外,如果您发现启动会话后接口在第一次读取迭代期间丢失帧,请考虑提前执行一次 XNET Read 或 XNET Write 函数,以确保接口提前转换到 Started 状态。

确认硬件正常运行的一个好方法是使用已知的片段代码(例如 NI-XNET 范例)或使用 XNET Bus Monitor 执行回环测试。如果在这些测试中您没有看到预期的数据,您可能会收到总线错误帧,这表明总线存在问题。使用 XNET Bus Monitor 监视总线上的流量,并确保在接口和数据库设置中启用总线错误帧。您可能会看到总线错误帧,其帧类型为 ERR。您可以根据总线错误帧图表引用帧有效负载中的数据,以查看正在发生的总线错误的类型。

通常,总线错误可以通过总线上由于衰减、反射或噪声而导致电信号质量差来解释。衰减是信号强度随距离的减弱,如果您认为信号正在衰减,请测试较短的电缆长度。当电信号遇到电缆特性突然变化(例如在 ECU 的收发器处)时,就会发生反射。端接是减少信号反射的关键,可通过在总线两端添加电阻器来实现。某些设备具有软件可选择的 Termination 方式。有关总线终端的更多信息,请参阅终端指南


总线电源错误

确保总线已通电。建议在原型设计设置中使用分线盒来帮助检查电压或为总线供电。重要的是要记住,即使收发器可能被供电,它们也会将总线电压驱动到逻辑低电平,并且仍然需要在其他地方施加激励电压。


其他 NI-XNET 错误

当您的 NI-XNET 代码中遇到错误时,请务必阅读完整的错误描述。尝试在谷歌上搜索引用相同错误号的知识库文章。发布到NI 社区汽车和嵌入式网络讨论论坛。(此链接页面不支持中国大陆IP访问)