我正在使用 M 系列 DAQ 的两个计数器通道产生脉冲串来控制两个步进电机,但这两个通道不是完全独立的,当一个通道产生脉冲时,另一个通道也改变状态。在此链接中,它提到了一种在一个通道产生有限脉冲时使用 paule trigger 暂停另一个通道的方法。链接 我尝试将其转换为 python 代码,如下所示:
outputchannel = "Dev1/Ctr0"
gatechannel = "Dev1/Ctr1"
frequency = 1000
samples = 1000
def GenerateFinitePulse(outputchannel, gatechannel, pulsecount, frequency):
with nidaqmx.Task() as pulse_task:
pulsechannel = pulse_task.co_channels.add_co_pulse_chan_freq(
counter=outputchannel,freq=frequency, duty_cycle=0.5)
pulse_task.timing.cfg_implicit_timing(
sample_mode=nidaqmx.constants.AcquisitionType.CONTINUOUS,
samps_per_chan=1000)
pulse_task.triggers.pause_trigger.trig_type = nidaqmx.constants.TriggerType.DIGITAL_LEVEL
pulse_task.triggers.pause_trigger.dig_lvl_src = gatechannel + "InternalOutput"
pulse_task.triggers.pause_trigger.dig_lvl_when = nidaqmx.constants.Level.LOW
pulse_task.start()
with nidaqmx.Task() as gate_task:
gatechannel = gate_task.co_channels.add_co_pulse_chan_time(
counter=gatechannel, low_time= 1, high_time= pulsecount/frequency)
gatechannel.co_pulse_term = " "
gate_task.start()
time.sleep(10)
一个问题是,即使设置 co_pulse_term = " ",我仍然可以从示波器中获取通道的脉冲输出。这是我得到的一个错误:
nidaqmx.errors.DaqError:在设备上找不到要路由的源终端。
确保终端名称对指定设备有效。有关有效的终端名称,请参阅 Measurement & Automation Explorer。属性:DAQmx_DigLvl_PauseTrig_Src 属性:DAQmx_DigLvl_PauseTrig_When 源设备:Dev1 源终端:Dev1/Ctr1InternalOutput
不知何故,它找不到“内部输出”。
如果有人有经验,请帮助。非常感谢!