采用NI SoftMotion函数模块开发运动轮廓并进行仿真

采用NI SoftMotion函数模块开发运动轮廓并进行仿真,第1张

概览

使用带有NI扫描引擎的NI SoftMoTIon

结合您的硬件使用NI SoftMoTIon函数模块或轴界面节点,您必须在LabVIEW项目中创建轴、坐标系和表格。这些项与运动I/O资源相关,在使用NI SoftMoTIon函数模块或轴界面节点创建运动控制应用程序时使用。使用轴管理器对话框将您的硬件与NI SoftMoTIon轴关联在一起。轴包含轨迹生成器、比例积分微分(PID)控制循环或步进输出以及监督控制。您可以将NI SoftMotion轴与仿真硬件或实际硬件关联在一起。伺服轴需要编码器反馈资源。开环步进轴不需要 *** 作反馈。

您可以根据与NI SoftMotion轴进行关联的硬件,创建以下类型的轴:

NI 951x轴(扫描界面模式)

仿真轴

固态工作轴

无限制轴

采用NI SoftMotion函数模块开发运动轮廓并进行仿真,采用NI SoftMotion函数模块开发运动轮廓并进行仿真,第2张

图1:NI SoftMotion轴管理器对话框

使用配置坐标空间对话框将轴在坐标系中进行组织。坐标系是轴的逻辑组合,用来作为可以使用坐标系资源的NI SoftMotion函数模块的输入。使用坐标系,您可以指定多个轴运动,确保所有的轴在相同的时间开始和结束。这与在同一时刻开始并非坐标系组成部分的独立轴不同——轴开始运动是同步的,但停止运动却不是同步的。

采用NI SoftMotion函数模块开发运动轮廓并进行仿真,第3张

图2:NI SoftMotion配置坐标系空间对话框

采用NI SoftMotion函数模块开发运动轮廓并进行仿真,第4张

图3:含有完成配置的运动轴与坐标系空间的LabVIEW项目

所有运动控制I/O和执行信息都被加入全局扫描引擎内存映射,并在每个扫描周期进行更新。在同一个扫描周期中执行的函数模块在相同的扫描周期进行同步,其中包括线性、停止、调速和凸轮系统。这意味着您可以在同一个扫描周期中开始轴、坐标系、调速 *** 作或是凸轮系统 *** 作。然而,以同步方式开始的轴并不同步地结束。为了同步结束这些运动,您必须在同一时间计算结束所有轴运动的约束条件,或是配置坐标系从而能够自动计算这些数值。

由于函数模块执行是在扫描引擎周期内的,因此可能在响应外部事件时或是同步不同轴类型时等,会有较小的延迟。表1定义了最小延迟与最大延迟。

采用NI SoftMotion函数模块开发运动轮廓并进行仿真,第5张

使用NI SoftMotion函数模块

LabVIEW NI SoftMotion模块提供了函数模块,用于构建使用函数模块编程模型的确定性运动控制应用程序。

LabVIEW具有基于IEC 61131-3工业控制系统编程国际标准的函数模块。这些函数模块为实时应用而设计,能够将其参数作为共享变量,用于人机界面(HMI)编程和状态监视中。您可以利用这些熟悉的工业函数模块和LabVIEW中的所有VI与函数,开发简单和复杂的工业测量与控制应用程序。

在Windows平台下安装了LabVIEW和LabVIEW实时模块后,您可以使用LabVIEW函数模块,它们与LabVIEW实时模块一起进行安装。LabVIEW NI SoftMotion安装附加的函数模块,提供运动控制函数,并且让您使用LabVIEW项目来配置并测试您的运动轴设置,调节伺服电机。LabVIEW NI SoftMotion包含在LabVIEW的平台DVD中。您可以安装模块的30天试用版或使用限制功能的免费版模块。

函数模块使用LabVIEW编写,设计用于非阻塞确定性执行的实时应用中,使得它们适用于对时间确定性要求非常严格的代码中。函数模块的每个实例都有唯一的名称和可重入执行的内存空间。因此,您可以在应用程序中独立使用这些函数模块。举例而言,您可以使用PID函数模块的每个实例控制一个独立的系统。

在应用中使用的函数模块在LabVIEW项目中可见,并且能够远程访问每个终端中的共享变量。您可以在函数模块的属性页面中配置这些终端和变量。

在默认设置下,终端变量被配置为单线程实时FIFO的共享变量,因此您可以在实时应用中使用,从而避免访问变量值时的抖动。您可以配置每个终端,从程序框图的终端中接收数值,或是从对应的共享变量或是常量中远程接收数值。

您可以将终端变量配置为网络发布共享变量,为HMI编程和远程监视提供远程参数数值访问。对于HMI编程,您可以在台式机或工业触摸屏计算机的LabVIEW应用程序中使用共享变量。NI分布式系统管理器可以用于监视在网络上的系统和管理发布数据。对于系统管理员,您无需LabVIEW开发环境就可以查看函数模块参数数值。通过配置函数模块终端接收变量数值,您还可以通过系统管理器写入参数数值,举例而言,您可以远程调节PID函数模块。

NI SoftMotion函数模块还包含其他用于监视和维护每个函数模块状态的附加参数。用于NI SoftMotion函数模块的API是非阻塞、异步的API,您可以用来与您的运动控制硬件进行通信。

下表提供了运动控制函数模块的概述。

选板对象 选板符号

描述

直线

使用轴或坐标系资源完成直线运动。直线运动使用一条或多条轴连接两点。运动行为随着直线运动模式的设置而变化。

弧线

完成圆形、圆弧或螺旋线运动。弧线运动使用您所指定的半径生成圆形运动。弧线运动的类型随着圆弧运动模式的设置而变化。

曲线

使用轴或坐标系资源完成曲线运动。曲线运动由软件插值得到光滑曲线时所使用的一系列位置来描述。这些位置存储在表格中。 运动中的每个点以绝对位置进行表示,使用运动的开始点作为暂时的“零点”位置。曲线运动的类型根据曲线模式的设置而变化。

参考

完成参考运动,例如在轴资源上定位初始点或极限位置。参考移动用来初始化运动控制系统,建立可重复的参考位置。移动根据参考移动模式的设置而变化。

捕捉

根据例如传感器状态等外部输入记录编码器位置。您可以使用采集得到的位置来完成相对于采集位置的运动,或是仅仅是在采集事件发生的时候记录编码器位置。

比较

将电机与外部活动和指定的编码器位置进行同步。当达到指定位置时,能够得到用户可配置的脉冲。位置比较 *** 作根据比较模式的设置而变化。

调速

配置指定轴进行调速 *** 作。调速将从轴的运动与主轴的运动进行同步,主轴运动可以是编码器或是另一个轴的轨迹。从轴运动可以相对于主轴以更高或更低的转速比进行。例如,主轴每转一次,从轴可能转动两次。调速 *** 作根据调速模式设置的变化而变化。

凸轮

为指定轴配置凸轮 *** 作。这些比例由NI SoftMotion自动进行管理,从而能够对调速比例进行精确切换。凸轮用于从轴速度与主轴速度比不是线性关系的应用中。这个类型的凸轮 *** 作根据凸轮模式设置而变化。

读取

从轴、坐标系、反馈和其他资源中读取状态和数据信息。使用可用的读取方法获取不同资源的信息。

写入

向轴、坐标系或反馈资源写入状态和数据信息。使用可用的写入方法向不同资源写入信息。

重置位置

在指定轴或坐标系上重置位置。

停止

在轴或坐标系上停止当前运动。移动行为根据停止模式的设置而变化。

电源

在指定轴或坐标系资源上开启或关闭轴和驱动器

清除默认值

清除NI SoftMotion默认值。

以下技巧可能会在您使用LabVIEW中的NI SoftMotion函数模块进行编程时起到帮助:

使用函数模块的VI必须存在于LabVIEW项目中。

函数模块必须在循环中运行。根据您应用需求的不同,您可以选择使用等待下一个整数倍毫秒函数进行定时的while循环,或是如果您的应用需要函数模块以一定扫描周期执行,也可以使用与NI扫描引擎同步的定时循环。

使用函数模块状态输出判断函数模块执行的顺序,这并不是标准的LabVIEW编程方法。举例而言,不要将函数模块放在条件分支中。

您必须在应用循环外初始化所有的矩阵输出,以便让函数模块不进行内存分配。这可以减少系统的漂移和抖动。

为了确定函数模块执行的顺序,运动控制函数模块提供了状态参数。下表提供了函数模块状态参数行为的简介。

执行、错误输出、完成、中止、忙碌和活动参数根据以下内容执行:

输出状态 完成和中止输出在执行的下降沿重置。但是,执行的下降沿并不停止或影响实际函数模块的执行。必须确保在每个循环中对对应的输出进行配置,如果这些状态中的一个会发生——即便执行在函数模块完成之前被重置。如果函数模块实例在完成之前收到新的执行(作为同一实例下的一系列指令),函数模块不会为函数模块的前一执行,返回例如完成或中止等任何状态输出。

输入参数 函数模块的输入参数与执行输入的上升沿一起使用。要修改任何参数,必须修改输入参数并且重新执行函数模块。

未连接的输入参数 如果函数模块有未连接的输入,将使用这个函数模块上一次执行时的参数值。在函数模块的首次执行时,使用默认值。

符号规则 加速、减速、加加速度、减加速度输入总是正值。目标位置和距离可以为正数也可以为负数。除了使用速度方法完成直线运动之外,速度在所有情况下为正数。

错误处理行为 所有函数模块都包含错误输出簇,对执行函数模块中可能发生的错误进行处理。这些输出描述如下:

在函数模块执行中发生错误时,状态变为真。在错误发生之后,状态输出仅在第一个循环执行中保持真。如果您希望将错误状态保持为真,必须使用移位寄存器将错误信息传递到之后的循环执行中。

代码是错误代码或警告代码。如果状态为真,代码是非零错误代码。如果状态为假,代码为0或警告代码。

源描述了错误或警告的来源,在大多数情况下,是产生错误或警告的函数模块名称。

如果在函数模块中发生了错误,执行时间可能会增加。

完成输出行为 完成输出在指令行为完成的时候被置位。如果有多个函数模块顺序对同一个资源进行 *** 作,在一个资源上的运动被同一资源上的另一个运动中断而没有达到终点时,第一个函数模块的完成并不会被置位。

中止输出行为 在一个指令被另一个指令中断时,中止被置位。中止行为与完成行为相似。在中止发生时,其他输出信号被重置。

在您使用另一个在不同资源上的另一个函数来中断执行时,中止并不返回真。举例而言,执行坐标系中一条轴上的直线运动并不会中止运行中的坐标系运动。实际上,弧线运动被设置为真,并且停止执行。

输入超过应用程序限制 如果一个函数模块的输入参数违反应用程序限制,这个函数模块实例将会产生一个错误。

忙碌输出行为 每个函数模块都含有忙碌输出,表明函数模块执行还没有完成。忙碌在执行的上升沿被置位,在完成、中止或错误输出被设置的时候重置。建议不要在忙碌输出为真的时候停止应用程序,否则软件可能会处于未定义的状态中。

输出活动 在函数模块得到指定资源控制权、所有属性被设置并且函数模块开始执行时,活动输出被设置为真。一旦活动输出为真,函数模块在下一个扫描周期生效。

责任编辑:gt

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2515163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存