NI PCI 6713数字触发模拟输出配置报错求助(Python 3.7)
解决NI PCI 6713数字触发模拟输出的-89120错误
这个-89120错误(设备上未找到要路由的源终端)很常见,通常和DAQmx任务的配置顺序、终端名称写法有关。结合你的PCI 6713设备和代码,我给你几个针对性的解决思路:
1. 调整任务配置顺序(最可能解决问题)
DAQmx对配置顺序有严格要求——必须先配置定时(样本时钟),再配置触发。你的代码里先设置了启动触发,再配置采样时钟,这会导致DAQmx无法正确关联触发信号和定时引擎,从而抛出终端找不到的错误。
修改后的代码应该是这样的:
import nidaqmx # 用with语句自动管理任务生命周期,避免资源泄漏 with nidaqmx.Task() as task: # 第一步:添加模拟输出通道 task.ao_channels.add_ao_voltage_chan("Dev12/ao0") # 第二步:配置采样时钟定时,指定采样数(你要输出11个点) task.timing.cfg_samp_clk_timing( rate=1, samps_per_chan=11, sample_mode=nidaqmx.constants.AcquisitionType.FINITE ) # 第三步:配置数字边沿启动触发 task.triggers.start_trigger.cfg_dig_edge_start_trig("Dev12/PFI0") # 先把数据写入缓冲区,再启动任务(有限采样场景推荐这么做) task.write([1,2,3,4,5,6,7,8,9,10,0], auto_start=False) task.start() # 等待任务完成再结束 task.wait_until_done()
2. 简化终端名称写法
当你的任务已经关联了Dev12的通道时,DAQmx会自动绑定到该设备,所以触发源可以直接写PFI0,不需要加Dev12/前缀。你可以试试把触发配置改成:
task.triggers.start_trigger.cfg_dig_edge_start_trig("PFI0")
3. 确认NI MAX中的路由可用性
虽然手册说PFI<0..9>支持ao/StartTrigger,但还是要再核对一下:
- 打开NI MAX,找到
Dev12设备 - 查看它的终端路由表,确认
PFI0确实可以路由到ao/StartTrigger - 确保没有其他任务占用了PFI0引脚
如果以上步骤都试过还是不行,你可以在NI MAX里创建一个测试任务,手动配置触发,然后导出为Python代码,对比自己的代码差异——这是排查DAQmx配置问题的万能方法。
内容的提问来源于stack exchange,提问作者Rémi Baudoux
相关产品推荐
相关产品推荐

