channels in Re error out √An9,√ Single Channel國5 ngle Sample / Wavefor Multiple Channels Multiple Samples DBL Unscale 图4-15 DAOmx读取Ⅵ 模拟输入 图4-16程序完成了模拟信号的连续采集,与上一讲中使用DAQ助手快速Ⅵ不同,这里我 们使用的都是 DAQmx的底层驱动Ⅵ Continuous Samples ample Rate status 图4-16模拟信号的连续采集 连续采集的流程图如图4-17所示,首先创建虚拟通道,设置缓存大小,设置定时,(必要 时可以设置触发),开始任务,开始读取。由于我们是连续采集信号,于是我们需要连续 地读取采集到的信号。因此我们将 DAOmX读取Ⅵ放置在循环当中,一旦有错误发生或 者用户在前面板上手动停止采集时程序会跳出 while循环。 之后使用 DAOmx停止任务来释放相应的资源并进行简单错误处理。 设定定时和缓存 从缓存中返回数据 开始数据采集 停止数据采集 完成? YES 显示错误 SD
9 图 4-15 DAQmx 读取 VI 模拟输入 图 4-16 程序完成了模拟信号的连续采集, 与上一讲中使用 DAQ 助手快速 VI 不同,这里我 们使用的都是 DAQmx 的底层驱动 VI, 图 4-16 模拟信号的连续采集 连续采集的流程图如图 4-17 所示,首先创建虚拟通道,设置缓存大小,设置定时,(必要 时可以设置触发) ,开始任务,开始读取。由于我们是连续采集信号,于是我们需要连续 地读取采集到的信号。因此我们将 DAQmx 读取 VI 放置在循环当中, 一旦有错误发生或 者用户在前面板上手动停止采集时 程序会跳出 while 循环。 乊后使用 DAQmx 停止任务来释放相应的资源并迚行简单错误处理。 显示错误 完成? NO YES 设定定时和缓存 从缓存中返回数据 开始数据采集 停止数据采集
图4-17模拟信号的连续采集流程 在连续采集当中,我们会使用一个环形缓冲区,这个缓冲区的大小由 DAQmx定时Ⅵ中 的 SAMPLES PER CHANNEL每通道采样来确定 如果该输入端未进行连接或者设置的数值过小,那么 NI DAQmx驱动会根据当前的采样率 来分配相应大小的缓冲区,其具体的映射关系可以参考 DAQmx帮助。 同时,在WHLE循环中 DAQmx读取的输入参数 SAMPLES TO READ(每通道采样数) 表示了,每次循环,我们从缓冲中读取多少个点数的数据。 为了防止缓冲区溢出,我们必须保证读取的速率足够快。一般我们建议 SAMPLES TO READ的值为PC缓冲大小的1/4。 三.模拟输出 对于AO,我们需要知道输出波形的频率,输出波心的频率取决于两个因素,更新率以及 缓冲中波形的周期数。我们可以用以下等式来计算我们输出信号的频率 信号频率=周期数x更新率÷缓冲中的点数 举例来说,我们有一个1000点的缓冲放置了一个周期的波形,如果要以1kHz的更新率来 产生信号的话,那么,1个周期乘以每秒一千个点更新率除以总共一千个点等于1HZ。 如果我们使用2倍的更新率。那么,一个周期乘以每秒2000个点除以总共1000个点 得到2HZ的输出。 如果我们在缓冲中放入两个周期的波形,那么,两个周期乘以1000个点每秒的更新率除 以总共1000个点,得到输出频率为2Hz。 也就是说我们可以通过增加更新率或者缓冲中的周期数来提高输出信号的频率。 DAQmx中产生连续模拟波形的流程如图4-18所示 设定定时和缓冲 向缓冲写数据 写出采样值 开始输出 仓 停止输出 继续写出采样? s Task doneⅥ 显示错误 用于连续操作中 图4-18 模拟信号的连续产生流程 SD
10 图 4-17 模拟信号的连续采集流程 在连续采集当中,我们会使用一个环形缓冲区, 这个缓冲区的大小由 DAQmx 定时 VI 中 的 SAMPLES PER CHANNEL 每通道采样来确定。 如果该输入端未迚行连接或者设置的数值过小,那么 NI DAQmx 驱动会根据当前的采样率 来分配相应大小的缓冲区,其具体的映射关系可以参考 DAQmx 帮助。 同时,在 WHILE 循环中 DAQmx 读取的输入参数 SAMPLES TO READ(每通道采样数) 表示了,每次循环,我们从缓冲中读取多少个点数的数据。 为了防止缓冲区溢出,我们必须保证读取的速率足够快。一般我们建议 SAMPLES TO READ 的值为 PC 缓冲大小的 1/4。 三.模拟输出 对于 AO,我们需要知道输出波形的频率,输出波心的频率取决于两个因素,更新率以及 缓冲中波形的周期数。我们可以用以下等式来计算我们输出信号的频率: 信号频率= 周期数 × 更新率 ÷ 缓冲中的点数 举例来说,我们有一个 1000 点的缓冲放置了一个周期的波形,如果要以 1kHz 的更新率来 产生信号的话,那么,1 个周期乘以每秒一千个点更新率 除以总共一千个点 等于 1HZ。 如果我们使用 2 倍的更新率。那么,一个周期乘以每秒 2000 个点除以总共 1000 个点 , 得到 2HZ 的输出。 如果我们在缓冲中放入两个周期的波形,那么,两个周期 乘以 1000 个点每秒的更新率除 以总共 1000 个点,得到输出频率为 2HZ。 也就是说 我们可以通过增加更新率 或者 缓冲中的周期数来 提高输出信号的频率。 DAQmx 中产生连续模拟波形的流程如图 4-18 所示 图 4-18 模 拟 信 号 的 连 续 产 生 流 程 显示错误 Yes 设定定时和缓冲 停止输出 向缓冲写数据 开始输出 继续写出采样? 写出采样值 No Is Task Done VI 用于连续操作中 判断操作的状态