用操纵杆控制XY工作台

更新 Sep 20, 2021

环境

硬件

  • PCI-7334

软件

  • LabVIEW

驱动

  • NI-Motion

本文档包含有关创建使用操纵杆移动X / Y平台的运动控制系统的分步说明。本练习的目的是强调National 734x系列运动控制器的实际应用,并介绍板载编程。本课程的目的不是作为机载编程培训课程,而是您将了解机载编程的概念和好处。本文档假设您已经了解LabVIEW的基本概念,因此主要关注特定于运动控制的VI。

本届会议分为两部分。在第一部分中,您将为National Instruments PCI-7334运动控制器构建完整的LabVIEW VI。 PCI-7334是National Instruments的低成本仅步进运动控制器,它具有FlexMotion控制器系列所具有的灵活性和易用性。在第二部分中,您将为PCI-7344控制器编程,其中添加了一些高级功能,包括运行板载程序的能力。您创建的VI使用PCI-7344运动控制器的板载编程功能来执行与第一个程序相同的基本功能,但是具有更高的可靠性和确定性。

一般操作理论

一般操作理论

为什么要用操纵杆?
游戏杆通常作为训练程序的一部分在工业中使用。操纵杆使您可以手动将平台或其他机械系统移动到所需的位置,可以将其记录下来,以供将来生成运动。对于许多系统而言,此方法比数学上确定所需的位置和轨迹参数要有效得多,并且用户友好。通常,在您的应用程序需要手动控制并且像LabVIEW这样的图形用户界面不实用时,操纵杆是一种很好的使用方法。

连接性

将操纵杆连接到运动系统的两种主要方法是通过游戏端口和运动控制器。

第一种方法使用大多数消费类PC上可用的标准游戏端口。此方法不涉及自定义电缆,但是需要一些Windows编程来使运动控制器能够读取操纵杆值。此外,使用这种方法无法进行板上编程,这意味着可靠性降低到了主机操作系统的可靠性。

第二种连接方法是通过使用NI运动控制器上的通用模拟输入来实现的。您还可以通过将操纵杆输入连接到运动控制器的任何外围运动I/O或通用数字I/O线来访问操纵杆输入。本示例练习使用高速捕获输入作为通用数字输入。该方法允许控制器直接读取操纵杆值,并且还便于使用板载编程。

对于本练习的两个部分,操纵杆都是通过运动控制器上的模拟和高速捕获输入连接的。需要一些简单的自定义电缆。

游戏杆连接器信息

一个标准的操纵杆插头如下所示:



必要的引脚连接如下:

游戏杆输出运动控制器输入
引脚1,+ 5V+ 5V(在UMI或驱动器上可用)
针脚2,按钮1(顶部按钮)触发1
销3,棍子1模拟输入1(操纵杆轴1)
引脚4,GND地线
销6,杆2模拟输入2(操纵杆轴2)
针脚7,按钮2(触发按钮)触发2
5、8-15针没有连接

 

第一部分-基于主机的编程


基于主机的编程

1.启动LabVIEW,打开JoyStage_Host_Frame VI。

2.已经为您创建了前面板控件和指示器。打开VI图(Ctrl-E), 开始构建游戏杆应用程序。图1显示了启动图。

图1-主机程序模板


3.放置的第一个VI是Configure High-Speed Capture.flx。该VI将高速捕获输入配置为通用数字输入,以监控操纵杆按钮。该VI位于LabVIEW功能面板的运动与视觉>> FlexMotion >> Motion I / O >>高速捕获下。如图2所示连接输入,并为Capture Mode和Axis Control创建一个常数。
提示:要创建常数,请使用接线工具右键单击VI端子,然后选择创建>>常数。

放置其中两个VI,一个用于轴1,另一个用于轴2。请注意,它们可以共享捕获模式常量。

图2-添加了Configure High-Speed Capture.flx


4.接下来,填写案例结构。案例结构用于确定游戏杆是否
将会进行校准。

  • 对于True情况,请插入名为CalibrateJoy.vi的预编程子VI。要插入子VI,请在功能面板中单击标记为选择VI的项目。如图3所示,连接子VI。
图3-真实案例

 

  • 对于False情况,只需将Board ID和Error从一侧连接到另一侧,并将默认的X / Y值连接起来,如图4所示。
图4-错误案例


5.使用设置操作模式.flx设置运动控制器操作模式,该功能位于“运动与视觉 >> FlexMotion >“轨迹控制下的功能面板上。为轴输入和位置模式创建常数。再次注意,这两个VI可以共享位置模式常量。现在,将机箱结构,电路板ID和错误线中的默认X / Y值连接到while循环中。确保添加所有必需的电线,如图5所示。

图5-添加的设置操作模式


6.现在,您将开发While循环,该循环连续监视操纵杆位置并适当地移动轴。放置读取高速捕获Status.flx VI,该报告报告所有轴的状态。要仅隔离两个轴(对应于我们的两个操纵杆按钮),请使用按名称解除捆绑操作。
提示:要轻松取消捆绑数据,请右键单击输出终端,然后选择群集工具 >>按名称取消捆绑。

您将需要通过使用指针工具单击并拖动图标的角来展开unbundle运算符。该VI将使用按钮1确定轴是应以正常速度还是以快速速度移动,随后将使用按钮2终止程序。连线VI,如图6所示。

图6-添加的读取高速捕获状态.flx


7.放置Joy Read&Scale.vi VI,该VI读取ADC值并适当缩放它们。此外,添加选择正常或快速速度的选择操作。在功能面板上的比较下可以找到选择功能。连接所有输入,如图7所示。

图7-添加了Joy_Read&Scale.vi


8.下一步是加载VI在上一步中计算出的速度。放置两个Load Velocity.flx VI。这些位于调色板上的运动与视觉 >> FlexMotion >>轨迹控制下。创建必要的常数并接线,如图8所示。

图8-添加的Load Velocity.flx


9.放置Start Motion.flx VI以使用加载的参数启动移动。在运动与视觉 >> FlexMotion >>开始和停止运动下可以找到它。创建轴控制和轴/ VS映射常量,然后适当地接线。像往常一样,通过右键单击适当的端子并选择Create >> Constant来创建常数。参见图9。

图9-添加了Start Motion.flx


10.为了防止while循环永远运行,您必须有一种方法来停止它。使用前面板上的STOP按钮和操纵杆按钮之一可以完成此操作。如果VI遇到错误,您也希望循环终止。要检查错误,请右键单击Start Motion.flx VI上的Error Out端子,然后选择簇工具 >> 按名称取消捆绑。将错误输出连接到该非捆绑运营商。接下来,放置一个布尔运算符以监视所有三种情况以停止循环。使用在布尔选项板上找到的复合算术运算符。您需要将运算符扩展为三个输入,然后右键单击并选择Change Mode >> OR。当用户按下操纵杆上的按钮,按下VI前面板上的按钮或发生错误时,这将导致循环终止。将所有输入连接到OR,如图10所示。

图10-添加的循环控制元素


11.在while循环中最后添加的内容是一个延迟。良好的编程习惯是在任何循环中都放置一个小的延迟,以防止主机系统不堪重负,并通过来自主机的连续消息不必要地攻击控制器。在函数选板上的时间与对话框下可找到等待下一个毫秒多个 VI。 100毫秒的延迟应该足以避免主机出现问题,同时仍然对操纵杆的移动非常敏感。添加VI,如图11所示。

图11-添加了等待下一个ms,使循环延迟变得更加复杂


12.现在添加Stop Motion.flx VI(运动和视觉>> FlexMotion >>开始和停止运动),一旦退出while循环,它将停止舞台。
图12显示了该VI添加在While循环的右侧。注意,您可以从Start Motion.flx VI重用Axis Control和Axis / VS Map常量。

图12-添加了Stop Motion.flx


13.最后,添加VI运动错误Handler.flx。最好始终使用错误处理程序VI结束程序,这是一种好的程序惯例。这样做会在运行时提醒您-
检测到错误情况的时间。您可以在Motion&Vision \ FlexMotion \ Error&Utility下找到Motion Error Handler.flx VI。您的完整程序应如图13所示。

图13-添加了运动错误Handler.flx。完成课程


运行VI:

1.确保连接到MID-7604电源驱动器的电缆是标有 PCI-7334的电缆。

2.验证是否在前面板上输入了正确的Board ID。使用Measurement&Automation Explorer(MAX)查找PCI-7334的板卡ID。

3.确保在前面板上启用了校准操纵杆,或手动运行VI CalibrateJoy并将报告的值复制到默认X / Y限制
控件。

4.您可以调整慢速,快速和死区的值。速度以步数/秒为单位加载,代表级电机的最大速度。 DeadBand是一个阈值,以便在操纵杆发出一个刚好接近零的值时,将命令电动机以恰好为零的速度运行。

当操纵杆处于中心位置而不是精确地位于校准的中心值时,这将防止平台”爬行“。

5.如果通过将平台移动到极限运动范围来达到限位开关,则相应的轴将停止。您可能需要在限制开关的相反方向上握住操纵杆的同时重新启动程序。最好避免将舞台一直移动到极限。

 

第二部分-机载编程


板载编程

在本节中,您将构建一个程序,该程序执行与第一部分相同的功能,但是它将作为一个板载程序运行。板载编程是一项高级功能,仅在高性能7344系列控制器上可用。

1.启动LabVIEW,打开名为JoyStage_Onboard_Frame.vi的VI。已经为您创建了前面板控件和指示器。打开该图以开始构建您的板载操纵杆应用程序。您的图应如图14所示。

图14-机载程序模板


2.与基于主机的编程一样,首先放置一些VI来配置控制器。放置配置高速Capture.flx并设置操作
如图15所示的Mode.flx VI,并创建必需的常量。注意,您可以共享多个常量,并在某些VI中使用资源不足。

图15-初始配置-添加了配置高速捕获.flx和设置操作模式.flx


3.现在,将将实际执行的VI放置在控制器上。进行板载编程时,必须使用开始程序启动程序
Storage.flx VI。这向软件发出信号,表明剩余的VI将是板载程序,可以下载到板上。该VI可在面板上的Motion&Vision >> FlexMotion >>板载编程中找到。如图所示放置VI并接线。您将需要为程序号创建一个常数。参见图16。

图16-添加了Begin Program Storage.flx


4.接下来,放置Load_Consts.vi。该VI将常量加载到用于缩放操纵杆值的板上变量。如图17所示放置并连接VI。

图17-添加了Load_Consts.vi


5.放置一个标签,作为执行循环的开始。稍后,您将放置一个跳转VI来实现完整循环。这将执行与主机编程中使用的while结构相同的功能。要放置标签,请使用调色板上的插入标签.flx VI,位于运动与视觉 >> FlexMotion >>板载编程下。标记标签 ”1“,如图18所示。

图18-添加的Insert Label.flx


6.现在,您进入了循环,将放置可重复监视操纵杆并命令平台移动的VI。 Read_ADC&Move.vi读取ADC,执行必要的缩放,并以命令的速度启动移动。该VI完成了编写机载程序所涉及的大部分基本的底层工作。双击VI并按Ctrl-E以显示该图,可以查看其内容。

图19-添加了读取ADC和Move.vi


7. Read High Speed Capture Status.flx VI确定是否在操纵杆上按下了STOP按钮。放置它,如图20所示。注意Return Vector为1,这意味着数据将返回到板载变量1而不是主机。

图20-添加了读取高速捕获状态.flx


8.读取按钮状态后,您的VI必须将读取高速捕获状态.flx返回的值与您先前存储在板载变量2中的已知空闲状态进行比较。使用板载“板载编程”中的板载AND Variables.flx VI >> Data Operations选板,如图21所示。请注意,您可以共享上一个VI的Variable Number常量。

图21-添加和Variables.flx


9. Condition.flx VI上的跳转至标签是仅在未按下操纵杆STOP按钮时执行的跳转语句。该VI可在板载编程选板上找到。如图22所示放置并连接它。再次,您可以共享Label Number常数。这是一个好习惯,特别是在较大的机载程序中,这时可能很难跟踪所有标签号。

图22-在Condition.flx上添加了跳转到标签的功能


10.现在,您跳出循环了。如果用户在移动平台时停止了程序,则必须停止平台。为此,请如图23所示,在开始和停止运动面板中放置Stop Motion.flx VI,然后为停止类型和轴映射创建常量。

图23-添加了Stop Motion.flx


11.该程序的板载部分现已完成,因此如图24所示放置End Program Storage.flx VI。该VI可在Onboard Programming选板上找到。 Begin Program Storage.flx和End Program Storage.flx之间的所有内容都下载到控制器并独立于主机运行。与标签号一样,程序号常量应尽可能共享。

图24-添加的最终程序Storage.flx


12.您的板载程序现已完成,执行VI时将下载到运动控制器。您放置的最终VI会告诉软件在下载后立即执行板载程序并检查错误。从Onboard Programming面板放置Run Program.flx VI,从Error&Utility面板放置Motion Error Handler.flx。使用来自终端存储VI的资源输出终端作为运行程序VI的程序号。有关完整的VI,请参见图25。

图25-添加了Run Program.flx和Motion Error Handler.flx。完成课程


运行VI

1.确保连接到MID-7604电源驱动器的电缆是标有 PCI-7344的电缆。

2.验证是否在前面板上输入了正确的Board ID。使用Measurement&Automation Explorer(MAX)查找PCI-7344的板卡ID。

3.运行VI CalibrateJoy.vi并确认所报告的值与机载程序前面板上的X和Y限制相匹配。

4.您可以像在基于主机的程序中一样调整慢速,快速速度和“DeadBand的值。

5.如果在运行内置程序时到达了限位开关,则程序将暂停并且必须重新启动。避免将舞台移动到极限运动范围。

6. MAX具有内置功能,可以更轻松地使用板载程序。例如,您可以查看板上当前有哪些程序,启动,停止或暂停程序,甚至将程序保存到闪存中以进行永久存储。您可以从我的系统>>设备和接口>> PCI-7344 >>设备资源面板下的“板载内存管理器”选项卡访问这些功能。

7.请注意,您可以关闭LabVIEW,并且操纵杆控制的平台继续运行。实际上,整个程序现在独立于Windows环境执行。

恭喜,您的机上程序已完成!

Attachments