LabVIEWCompactRIO 开发指南第六章42 点击:15 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:552帖 | 36回
  • 年度积分:703
  • 历史总积分:1294
  • 注册:2008年8月14日
发表于:2023-05-30 18:07:13
楼主

LabVIEWCompactRIO 开发指南第六章42

要使用用户控制的I/O示例方法进行编程,请按照以下步骤操作,这些步骤引用了图6.9中的示例程序。

初始化进程

1.调用重置I/O函数。此调用完成后,模块已准备好使用用户控制的I/O采样函数执行采集。必须首先调用复位I/O函数,以准备NI9223以使用其他用户控制的I/O采样函数。

2.将停止的布尔值设置为false。此布尔值在最后一个序列帧中的While循环之间提供同步。如果任何循环停止,则会导致其他循环也停止。

3.使用中断向主机发出信号,表明FPGA已准备好开始采集数据,并等待开始采集,直到主机确认。这对于确保在获取数据之前启动DMAFIFO是必要的。

循环1

4.调用生成I/O采样脉冲函数以开始采集数据。调用此函数的速率决定了采集的采样速率,因此使用循环计时器来强制执行所需的采样周期。

循环2

5.调用读取I/O函数以读取从模块获取的数据。此功能配置为从模块上的每个通道读取单个样本。由于此函数等待数据可用,因此提供了大量但非无限的超时。对于默认的40MHz顶级时钟,超时为1秒。

6.将采集的数据写入DMAFIFO。

7.如果在等待来自模块的数据或等待将数据写入DMAFIFO时发生超时,则向主机报告超时并停止VI。

循环3

8.调用“获取读取I/O状态”函数的速率与调用“生成I/O采样脉冲”函数的速率相同。这将检查获取的每个样品的状态。如果发生“覆盖”或“样本门控”(输出=true),则向主机报告状态并停止VI。在此示例中,此循环包含在关系图禁用结构中,以使其易于从应用程序中移除。调用“获取读取I/O状态”函数对于开发和调试很有用,但如果应用程序中没有可变计时,则对于部署不是绝对必需的。在图6.9示例中,除非顶部循环的采样周期小于模块支持的最小采样周期,否则无法获取样本门控状态。但是,如果主机VI无法足够快地从DMAFIFO读取,则此应用程序可能会产生覆盖状态。

Δ-Σ调制

表6.2.具有Δ-Σ调制的同步模块示例

许多专为高速、动态测量而设计的C系列模块都使用三角积分(Δ∑)转换器。为了更好地了解这些模块的工作原理,必须首先了解Δ-Σ调制的基础知识。希腊字母delta和sigma分别是差和和的数学符号。Δ-Σ转换器的调制电路比较所需电压输入V输入与已知基准电压V参考之间的差值和。比较器的输出变为比特流,送入数字滤波器和1位DAC。由于这种负反馈,差值在0V或地附近振荡。数字滤波器有效地跟踪差异高于0V的次数,并根据该计数和基准电压确定输入电压。该调制环路的运行频率远高于转换器的实际输出频率。

带有Δ-Σ转换器的C系列模块具有运行调制电路的过采样时钟。过采样时钟以12MHz或更快的频率运行,会影响时序、同步和编程范例。以下列表提供了对使用三角积分调制的C系列模块的具体挑战的见解。

需要同步脉冲复位—过采样时钟在使用前需要“复位”。这就是为什么有一个LabVIEW FPGAI/O节点来向模块发送“开始”事件的原因。

数据就绪时间不为零-启动”事件和数据可用性之间的时间指定为“首次数据的时间”。这个时间在不同的基于增量西格玛的模块之间可能略有不同,而在其他类型的模块之间可能有很大的不同。按需模块的“首次数据时间”为零。可以参考:KnowledgeBase4DAEUNNQ: How Do I Compensate for Different Group Delays With C Series Modulesin LabVIEW FPGA? and KnowledgeBase53CHLD6C: What Is the Best Method to Synchronize Two Different DSA Modules inLabVIEW FPGA?

采样速率是离散且特定的由于过采样时钟和数字滤波器,Δ-Σ模块只能以离散采样速率运行。这些采样率是除数和过采样时钟的函数。这就是为什么增量西格玛模块的“速率”输入是预定采样率的枚举数据类型。如果尝试输入不支持的采样率,则会将其舍入到下一个可用的最高采样率。

最小采样率大于1kHz—Δ-Σ模块的最小采样率通常超过1kHz。使用平均、滤波或某种形式的抽取来进一步减少数据集,使其超出模块上数字滤波器输出的速率。

没有不规则或外部时钟—Δ-Σ模块无法“按需”报告数据,因此不能处理不规则定时的I/O节点调用,因为迭代过程必须完成大量循环才能返回准确的数据。增量西格玛模块的I/O节点始终阻塞模块设置为采集的确切(Δt)。间隔小于Δt的I/O节点调用必须等到完整采样周期完成。这为过采样电路提供了足够的时间来计算精确值。为了弥补这一点,在处理数据或在控制环路中使用数据之前,在FPGA上实施重采样算法。

 需要同步的两个增量Σ模块必须共享相同的过采样时钟。要同步模块,必须从右键点击属性菜单将一个模块的过采样时钟导出为LabVIEW项目中的“源”模块。它必须从其他“客户端”模块的同一菜单中导入。任何模块都可以是“源”或“客户端”模块—由程序员自行决定。请记住,从项目视图对模块属性窗口所做的更改会导致重新编译,并且无法在运行时更改。

可以在图6.10所示的示例程序NI9234 Getting Started.lvprj的框图中看到其中的许多警告。

图6.10.NI 9234 GettingStarted.lvprj的框图

可以在NI示例查找器中找到所有三角积分模块的示例程序。

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师