代码模块是一种程序模块,如Microsoft Windows动态链接库或LabVIEW VI等,其中包含用于执行特定测试或其他操作的一个或多个函数。 用户可以在支持开关操作的多种编程环境中构建代码模块,并能够在TestStand中调用这些模块。
图1:在插入选板(Insertion Palette)中插入一个新步骤
图2:在步骤设置的模块(Module)选项卡中指定要执行的代码模块
用户可以创建代码模块,使用NI-SWITCH应用程序编程接口(API)控制NI开关模块。 虽然在传统应用中NI-DAQmx API已用于开关操作,但现在不建议在新设计中使用NI-DAQmx开关功能,并且它也不再支持所有NI开关模块。关于两种API的区别,请参阅:
知识库43CFNUAY:用于开关应用的NI-SWITCH和NI-DAQmx开关API的区别
图3:LabVIEW中的NI-SWITCH API
如需控制第三方开关,可为开关创建包含仪器驱动程序函数调用的代码模块。 有关仪器驱动程序网络,请访问www.ni.com/idnet,在该页面,还可了解有关仪器驱动程序的详细信息并可查找和下载与NI软件兼容的仪器驱动程序。
如果开关模块符合IVI规范,可创建包含IVI开关类驱动程序调用的代码模块。 所有NI开关模块均符合IVI规范。 关于IVI的详细信息,请访问www.ni.com/ivi。
注意:如果仪器不符合IVI类规范,或者不存在适用于仪器的IVI驱动程序,则必须使用仪器专用驱动程序来调用IVI开关类驱动程序所不支持的驱动程序函数。
除使用IVI开关类驱动程序外,如果开关硬件符合IVI规范,还可使用NI Switch Executive API对其进行编程。 关于NI Switch Executive的详细信息,请参阅:
开发者论坛中的教程:NI Switch Executive是什么?
图4:Switch Executive API
IVI开关步骤(如左图所示)为符合IVI开关类和NI Switch Executive虚拟设备规范的仪器提供了高级编程层。 在插入选板(Insertion Palette)中插入一个IVI开关步骤。
图5:插入IVI开关步骤
单击步骤属性对话框开关(Switch)选项卡上的编辑开关(Edit Switch)按钮。
图6:选择IVI开关步骤的“编辑开关...”(Edit Switch...)按钮。
此外,IVI开关步骤类型具有以下两种不同的模式:
选择的模式决定了使用IVI开关步骤类型时可用的操作。
IVI Switching模式支持使用符合IVI规范的开关驱动程序来控制NI和第三方开关。 该模式可用于连接和断开路径和连线、确定两个开关的连接或连线状态,以及查询开关模块或虚拟设备的状态。 如需了解IVI开关步骤类型的IVI Switching模式支持的IVI开关操作,请参阅:
NI TestStand帮助:编辑IVI开关步骤(Edit IVI Switch Step)对话框 - IVI Switching模式
图7:IVI开关步骤:IVI Switching模式
NI Switch Executive是一款基于IVI的智能开关管理与连线选择应用程序。 Switch Executive可帮助用户创建一个预配置的Switch Executive虚拟设备,该设备可包含一个或多个符合IVI规范的开关模块。 此外,用户还可以在点击式环境中创建通道别名并以图形化方式配置端到端连线(甚至涉及多个开关)。 关于NI Switch Executive功能的详细信息,请参阅:
开发者论坛中的教程:NI Switch Executive是什么?
购买和安装NI Switch Executive软件后,即可使用IVI开关步骤的Switch Executive模式。 在编辑IVI开关步骤(Edit IVI Switch Step)对话框中,可以选择一个预配置的NI Switch Executive虚拟设备来连接和断开为开关系统创建的连线/连线组。 此外,用户还可指定连线是在稍后手动断开连接后断开,还是在步骤、序列、线程或执行完成之后自动断开。
注意:如需了解IVI开关步骤类型的Switch Executive模式支持的IVI Switch操作,请参阅:
NI TestStand帮助:编辑IVI开关步骤(Edit IVI Switch Step)对话框 -Switch Executive模式
图8:IVI开关步骤:Switch Executive模式
购买并安装NI Switch Executive后,除了可以使用IVI开关步骤的Switch Executive模式,用户还可在步骤执行期间执行开关操作。 可以在步骤设置面板的属性(Properties)选项卡中配置开关操作。
图9:在插入选板(Insertion Palette)中插入一个步骤 步骤设置面板中属性(Properties)选项卡上的开关(Switching)面板
如本文档所述,在TestStand中控制开关的方法有多种。 下文将介绍每种方法的优缺点。
1) 代码模块
编写通过代码模块执行开关操作的测试序列,是在TestStand中控制开关的首选方法。 这种方法模块化程度高,因为测试开发者在修改用于执行开关操作的代码时,能够尽量减小对测试序列其他部分的影响。 在代码模块中使用仪器专用的驱动程序或Switch Executive API,都可以访问底层IVI会话以及其他方法无法提供的功能。 可使用NI Switch Executive简化和优化符合IVI规范的开关的配置与控制。
注意:使用NI Switch Executive API需要购买并安装NI Switch Executive软件。
使用这种方法存在的缺点在于,可能会增加出现用户错误的可能性。 测试开发者必须熟悉仪器驱动程序或NI Switch Executive API,并确保已采用适合的测试系统架构来创建可维护且可扩展的测试序列。 例如,在自动化测试系统中,应利用niSE Connect and Disconnect缩短开关时间并延长设备的使用寿命。
图 10:使用niSE Connect and Disconnect指定通过代码模块控制的连线/连线组
2) 步骤开关属性
安装NI Switch Executive软件后,测试开发者可以使用步骤开关属性向TestStand序列中的任意步骤添加开关功能。 步骤开关属性具有一个明显的优点,即可提高代码的可复用性。 例如,假设用户需要执行一项特定测试,测试过程中需要连接多条连线。 如需在多个不同的测试例程中执行此测试,可以简单地创建一个步骤模板,然后在其他序列中复用该步骤。 该步骤的所有属性(包括开关属性)都会纳入步骤模板中。 如需将步骤添加至模板列表,只需将该步骤从步骤(Steps)面板拖放至模板列表中即可。
图11:模板(Templates)列表是插入选板(Insertion Palette)面板的一部分。 将步骤从步骤(Steps)面板拖放至模板列表,即可将该步骤复用于其他序列。
使用步骤开关属性存在的缺点在于,可能会降低测试序列的可读性。 使用开关属性时,请务必记录TestStand序列。 当更改步骤属性的默认设置时,TestStand会自动在步骤(Steps)面板中记录这一更改。 例如,如果为LabVIEW操作步骤启用开关,TestStand将在步骤(Steps)面板中将开关(Switch)添加到该步骤的设置(Settings)类别下。
图12:已选中该LabVIEW操作步骤的启用开关(Enable Switching)选项 请注意,TestStand已在步骤(Steps)面板中将开关(Switch)自动添加至操作(Action)步骤的设置(Settings)类别下。
此外,用户还可使用步骤的备注(Comment)字段和Label步骤来记录序列。
图13:在步骤设置对话框Properties(属性)选项卡常规(General)面板的备注(Comment)字段中输入备注。
图14:使用前文所述的Label步骤和备注(显示在步骤名称上方)对步骤进行进一步记录
Switch Executive模式下的IVI开关步骤与步骤开关属性的功能非常类似。 IVI开关步骤相对于步骤开关属性的一项优势在于,能够查找连线并通过获取信息(Get Information)操作确定虚拟设备是否已去抖动。
图15:IVI开关步骤的获取信息(Get Information)操作:Switch Executive模式
测试开发者可为其他内置步骤类型指定相同的步骤属性(例如,前提条件和循环等)。
注意:步骤开关属性不适用于IVI开关步骤类型。
此外,IVI开关步骤具有能够自我记录的优点,用户一眼就能确定测试序列是否涉及开关操作。 然而,一般情况下更倾向于使用步骤开关属性,而非IVI开关步骤。 使用步骤开关属性时,请按照上一节讨论的记录方法创建可读的测试序列。
TestStand中Switch Executive方法(包括步骤开关属性和IVI开关步骤)的主要缺点在于,用户不具备对Switch Executive API的完全访问权限(例如,无法以编程方式导入/导出Switch Executive配置或生成XML报告)。 为了开发可定制性和可扩展性都非常高的测试序列,可使用能够调用NI Switch Executive API的代码模块。
IVI Switching模式下的IVI开关步骤可以访问IVI开关类驱动程序所支持的基本操作。 如需详细了解IVI Switching模式下IVI开关步骤可提供的功能,请参阅:
NI TestStand帮助:编辑IVI开关步骤(Edit IVI Switch Step)对话框 - IVI Switching模式
IVI开关步骤的IVI Switching模式也有缺点。 如果应用使用多个开关,则每个开关模块都必须使用唯一的步骤。 因此,这种方法不能用于创建涉及多个开关的完整连线。 此外,创建所需的开关配置需要使用多个步骤。 在一般情况下,更倾向于通过代码模块或Switch Executive方法控制开关,而不使用IVI步骤开关的IVI Switching模式。
注意:TestStand IVI步骤类型创建的仪器句柄不能用于使用相应开发环境执行的代码模块。基于C语言的底层句柄只能在TestStand进程中使用。如果测试序列包含了可调用IVI类和驱动程序专用VI或函数的代码模块,则NI不建议同时使用多个TestStand IVI步骤类型。