You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Matlab数据采集工具箱实现NI数字输出硬件最大采样率?

NI CompactDAQ 9178 + NI 9401 时钟配置解决方案(Matlab环境)

问题背景

使用NI CompactDAQ 9178机箱搭配NI 9401数字I/O卡,该卡在双通道配置下最大信号切换频率为20MHz,依赖机箱80MHz内部时钟(可降频至20MHz/100kHz)。但在Matlab数据采集工具箱中,9401无法直接引用机箱时钟,必须添加NI 9215模拟通道才能正常输出,却被模拟卡235294.117Hz的采样率上限限制。


问题1:是否可不借助模拟通道让9401引用机箱时钟?

可以实现,核心是通过Matlab直接调用NI-DAQmx的配置接口,手动绑定机箱内部时钟,无需依赖模拟通道。具体操作步骤:

  1. 创建NI数据采集会话:
    s = daq.createSession('ni');
    
  2. 添加9401的数字输出通道(根据实际模块编号调整,示例中为cDAQ1Mod2):
    addDigitalChannel(s, 'cDAQ1Mod2', 'port0/line0:1', 'OutputOnly');
    
  3. 手动指定机箱内部时钟为数字输出的时钟源,并设置目标速率:
    s.Rate = 20000000; % 20MHz,按需调整
    s.DigitalClockSource = '/cDAQ1/InternalClock';
    
  4. 生成输出数据并启动输出:
    data = randi([0 1], 2, 100000); % 示例输出数据
    startForeground(s, data);
    

如果部分Matlab版本的工具箱默认隐藏了DigitalClockSource选项,可以直接调用NI-DAQmx的底层API强制配置:

sessionHandle = s.SessionHandle;
% 设置时钟源为机箱内部80MHz时钟
DAQmxSetDOClkSrc(sessionHandle, '/cDAQ1/InternalClock');
% 设置分频后的输出速率
DAQmxSetDOClkRate(sessionHandle, 20000000);

注:需确保已安装NI-DAQmx驱动,Matlab会自动加载对应的MEX接口。


问题2:若不可,能否用外部时钟为9401定时输出数据?

完全支持,且不受模拟卡采样率限制,最高可达到9401的20MHz上限。配置步骤:

  1. 创建会话并添加数字输出通道(同问题1步骤1-2)
  2. 指定外部时钟源(示例为机箱PFI0端子,可根据实际外部信号接入位置调整):
    s.DigitalClockSource = '/cDAQ1/PFI0';
    
  3. 设置输出速率与外部时钟频率匹配:
    s.Rate = 20000000; % 需与外部时钟频率一致
    
  4. (可选)配置触发条件(比如上升沿触发):
    s.DigitalStartTriggerType = 'Edge';
    s.DigitalStartTriggerSource = '/cDAQ1/PFI1';
    s.DigitalStartTriggerEdge = 'Rising';
    
  5. 准备数据并启动输出:
    startForeground(s, data);
    

内容的提问来源于stack exchange,提问作者user3308082

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:40:10