RTSI使用方法



硬件: Multifunction DAQ (MIO)>>M Series

问题: 如何使用RTSI同步?

解答:

1. 什么是RTSI
RTSI是Real-Time System Integration的缩写。这种总线接口存在于多种NI设备上,包括DAQ,Motion,Vision,和CAN设备等等。使用RTSI总线,可以在多块板卡之间共享和交换时钟以及触发信号,通常被用做同步。
RTSI支持PCI/PCIe和PXI/PXIe设备,但不支持USB设备。
在PCI/PCIe系统中,RTSI总线包括一个RTSI接口以及34针带状RTSI线缆,需要手动将RTSI接口连接起来,可以支持最多五个DAQ,Motion,Vision,或CAN设备。
在PXI/PXIe系统中,RTSI总线包括一个RTSI接口以及PXI触发信号,这个RTSI接口通过PXI背板已经连接,通过PXI触发总线实现,不需要手动连接。
2. 设备连线
在PCI/PCIe设备和PXI/PXIe设备中,RTSI接口的名称是不一样的。PCI/PCIe设备上,有专用的RTSI线缆引脚插槽,如图1所示;而在PXI/PXIe设备上,对应的是PXI触发总线。

 

图1 RTSI接口

对于RTSI接口名称,可以参考图2和图3,分别是PCI-6229和PXI-6229的设备连线图。

 

图2 PCI-6229设备连线图

图3 PXI-6229设备连线图

从图中可以看到,在PCI设备中标注为RTSI的接线端,在PXI设备中对应为PXI_Trigger。这些接线端并不都是外部可见的端口,有一些是高级接线端,包括某些内部接线端。
可以通过软件来配置这些接线端,分为两种情况:
1)由上面的设备连线图可以看到,绿色方块表示直接连线,也就是说,硬件内部已经做好了相应接线端之间的连线,无需占用其他资源,我们所要做的只是一个手动配置工作,通过软件来实现接线端之间的连通。在DAQmx驱动中,已经写好了这样的驱动程序。
2)黄色方块表示通过子系统间接连线。也就是说,所要实现的接线端之间的路由并没有在硬件上直接连好,需要占用第三方资源来完成,这里的第三方资源也就是连线图中所说的子系统。这个路由的实现也是可以手动配置的,需要用到上面提到的DAQmx驱动函数。不同的是,除了这个软件配置过程之外,还需要占用其他资源。
查看MAX中的设备连线,当鼠标移到黄色方块上的时候,可以看到左下角“被使用的子系统”框列出了被使用到的子系统。一般来说,被用到的子系统包括计数器0、计数器1和触发总线。一旦某些子系统被用来路由信号,那么这个子系统就被保留了,不能再用作其他的任务[4]
需要注意的一点是,设备连线图中的上述两种连线类型是板卡硬件上已经定义好的,无法软件更改,软件所实现的功能只是让接线端之间由默认的未连通更改为连通状态,而无法配置“直接连线”与“通过子系统间接连线”类型的转换。同时,与RTSI总线连接的信号类型是有方向的,因此,当一个接线端与RTSI总线连接时,该接线端是用作源端还是目标端是有区别的。如果该接线端用作源端,则RTSI接线端为输入端,否则RTSI接线端为输出端。
这也就可以解释这样一个疑问,大家可以看到PCI-6229设备连线图中,源RTSI0到目标PFI6是直接连通的,但源PFI6到目标RTSI0是通过子系统间接连接,同样的两个接线端之间的连通,连线类型确实是不同的。这是由于信号接线端有方向性,所以板卡在硬件连接的时候分别为RTSI总线用作输入和输出做了单独的定义。因此,出现这种情况是正常的,是硬件系统的定义,我们在使用的时候不必关心为什么这样定义,只需要记得在连线的时候遵循连线类型就可以了。
3. 实现方法
要使用RTSI路由信号,对于PCI/PCIe设备,首先需要在硬件上用RTSI线缆将所要同步的板卡连接起来。RTSI线缆如图4所示[5],可以根据需要选择线缆的端口数目,最多支持五块PCI板卡。

 

图4 RTSI线缆

然后需要在MAX中注册RTSI线缆并配置RTSI线缆连接的设备(PXI/PXIe设备已经由机箱背板连接好,就不需要这一步配置了),否则在LabVIEW中无法正确识别到RTSI线缆连接的设备。
右键“设备和接口”,选择“新建”,弹出如图5所示的对话框,可以看到有“NI-RTSI连接线”这一选项,点击完成,会在“设备和接口”产生一个RTSI Cable。 

图5 注册RTSI线缆

右键这个产生的RTSI Cable,向该RTSI线缆添加已经连接的板卡,在图6的最右侧,有对于RTSI线缆操作的详细说明,可以参照这些说明。

 

图6 配置RTSI线缆连接的设备

硬件上配置好了RTSI线缆后,可以使用LabVIEW来实现RTSI同步,有两种实现方式:
1)LabVIEW中,可以使用DAQmx Export Signals.vi或DAQmx Connect Terminals.vi来实现。
这两个VI的路径分别为:
        DAQmx Export Signals.vi:测量I/O>>DAQmx >>DAQmx高级>>DAQmx高级任务选项>>DAQmx导出信号
        DAQmx Connect Terminals.vi:测量I/O>>DAQmx >>DAQmx高级>>DAQmx信号连线>>DAQmx连接接线端
这两个VI其实还是有一些区别的[6],其中DAQmx Export Signals.vi针对的是信号,并且是基于任务的,也就是说当任务被确认的时候连接才被确认,而且路由会一直有效直到任务被清除。而DAQmx Connect Terminals.vi使用立即路由的方法,这种连接会在数据流经过DAQmx Connect Terminals.vi后立即有效,而且它能保持路由的建立,由于和任务没有关系,需要使用DAQmx Disconnect Terminals.vi来断开这种路由。
另外一点需要注意的是,使用DAQmx Export Signals.vi,可以路由的信号中,并不是每种信号都有对应的端口,如图7所示的计数器输出事件,查看设备连线中,发现并没有对应的接线端,这种情况下,就无法使用DAQmx Connect Terminals.vi来替代。

 

图7 DAQmx Export Signals.vi可路由的信号类型

但这并不是说DAQmx Export Signals.vi的功能就更多,相反,这个VI可以路由的信号类型是有限的,查看即时帮助可以看到,它支持大部分信号,但对于某些不在列表中的信号是不支持的。
DAQmx Connect Terminals.vi是基于端口的,也就是说所有设备连线中列出的端口都可以使用这个VI来路由。当创建一个需要路由的接线端时,默认的接线端是常用接线端,可以右键选择过滤I/O,如图8所示,勾选高级接线端,就可以路由一些包括内部接线端和计数器接线端在内的高级接线端了[7]

 

图8 DAQmx Connect Terminals.vi选择高级接线端

从上述分析可以看到,这两个VI的功能相似,但又存在一些区别,需要根据路由的类型来判断。
2)文本语言,可以使用DAQmxExportSignal函数或DAQmxConnectTerms函数。这两个函数对应上述LabVIEW中的两个VI,函数原型可以参考NI-DAQmx C Reference Help。
下面给出一个LabVIEW范例[8],该范例使用计数器0创建一个脉冲序列,然后输出该信号到RTSI1接线端上。计数器1用来测量该信号的频率,RTSI1就是它相应的物理通道。文本语言的使用可以参考附件中的范例。



相关链接:


附件:
DAQmxRTSIConnect.vi




报告日期: 02/03/2013
最近更新: 02/04/2013
文档编号: 662JBD0X