备注 本自动翻译仅为阅读便利而提供。请参阅英文版本以获取最新和最准确的信息。

CompactRIO 可重配置嵌入式机箱、集成控制器与机箱、以太网 RIO 机箱以及单板 RIO (sbRIO) 设备均具有扫描时钟 I/O 项。使用扫描时钟项可以监控 NI 扫描引擎在 FPGA VI 与 RT 主机 VI 之间传输数据的时间。

将扫描时钟项的信息与用户自定义 I/O 变量结合使用,可实现与 NI 扫描引擎的数据传输同步。将用户自定义 I/O 变量数据传输与扫描引擎同步,可以确保在 FPGA VI 与 RT 主机 VI 之间传输的数据集的一致性。

建议将应用程序设计为扫描引擎不传输数据时执行读写操作。如果在扫描引擎传输数据时读写用户自定义 I/O 变量,扫描引擎无法保证数据一致性,数据传输将会延迟至下一个机会。

下图说明了在扫描引擎高电平期间读写用户自定义 I/O 变量,以及当用户自定义 I/O 变量的读写操作错过扫描引擎下降沿时,扫描引擎的反应。

图 2. 扫描引擎对用户自定义 I/O 变量读取/写入操作的响应
Scan Engine Reactions to User-Defined I/O Variable Read/Write Operations

也可使用扫描时钟信息同步FPGA VI和与扫描引擎同步的RT主机VI。

使用下列扫描时钟 I/O 项、方法和属性监控扫描引擎的信息。

扫描时钟I/O项

使用FPGA I/O节点访问扫描时钟I/O项。

如需访问扫描时钟 I/O 项,可将扫描时钟 I/O 项从项目中的机箱 I/O文件夹拖放到 FPGA VI 的结构框图中。也可以在结构框图上放置一个 FPGA I/O 节点,单击 FPGA I/O 节点的元素部分,并从快捷菜单中选择机箱 I/O»扫描时钟

  • 扫描时钟 —当扫描时钟信号为高,且扫描引擎未在 FPGA VI 与 RT 主机 VI 之间传输数据时,扫描时钟返回 TRUE。 当扫描时钟信号为低,且扫描引擎在 FPGA VI 与 RT 主机 VI 之间传输数据时,扫描时钟返回 FALSE。
  • 扫描时钟方法:等待上升沿

    使用 FPGA I/O 方法节点访问扫描时钟 I/O 项的等待上升沿方法。

    等待上升沿方法会暂停 FPGA I/O 方法节点的执行,直到下一个扫描时钟信号上升沿,或直到超时发生为止。

  • 超时 —指定等待上升沿方法在下一个上升沿出现前等待的 FPGA 时钟滴答数。值为0时,方法即刻超时;值为负时,方法永不超时,等待时间无限长;值为正时,正值代表该方法在超时发生前等待的时钟滴答数。
  • 超时 —如发生超时,返回 TRUE。
  • 丢失的下降沿 —如果方法检测到自上次执行至本次执行期间出现了一个或多个扫描时钟信号下降沿,丢失的下降沿返回 TRUE。 方法第一次执行时,丢失的下降沿返回FALSE。 使用丢失的下降沿丢失的上升沿输出来监测FPGA VI是否和扫描引擎同步。
  • 丢失的上升沿 —如果方法检测到自上次执行至本次执行期间出现了一个或多个扫描时钟信号上升沿,则返回 TRUE。 方法第一次执行时,丢失的上升沿返回FALSE。 使用丢失的下降沿丢失的上升沿输出来监测FPGA VI是否和扫描引擎同步。
  • 高时间 —显示在上一个信号周期内扫描时钟信号为高的 FPGA 时钟滴答数。 在扫描时钟信号的第一个周期中,高时间返回 0。 等待上升沿方法的高时间输出与通过 FPGA I/O 属性节点访问的高时间属性功能相同。
  • 扫描时钟属性

    使用FPGA I/O属性节点访问扫描时钟I/O项的下列属性。

  • 启用 —如扫描引擎已启用,返回 TRUE。如扫描引擎未启动、正在重新配置或已停止,启用返回 FALSE。
  • 高时间 —显示在上一个信号周期内扫描时钟信号为高的 FPGA 时钟滴答数。在扫描时钟信号的第一个周期中,高时间返回 0。高时间属性的功能与等待上升沿方法的高时间输出相同。
  • 范例VI

    关于配合使用用户定义I/O变量和扫描时钟I/O项和“等待上升沿”方法的详细信息,请参考labview\examples\CompactRIO\NI Scan Engine\Advanced\Scan Engine Synchronization\Scan Engine Synchronization.lvproj下的User-Defined IOV Synchronized VI范例。

    关于配合使用用户定义I/O变量和扫描时钟I/O项、“等待上升沿”方法,以及高时间输出的详细信息,请参考labview\examples\CompactRIO\NI Scan Engine\Advanced\Scan Engine Synchronization - Advanced\Scan Engine Synchronization - Advanced.lvproj下的User-Defined IOV Advanced Sync VI范例。