我正在使用M系列DAQ的两个计数器通道生成脉冲序列来控制两步电机,但是这两个通道不是完全独立的,当一个通道产生脉冲时,另一个通道也具有变化状态。 在此链接中,提到了一种方法,当一个通道产生有限脉冲时,使用paule触发来暂停另一个通道。 Link 我试图将其转换为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
以某种方式找不到“内部输出”。
如果有经验,请提供帮助。非常感谢你!