NI DAQ M系列带触发器的计数器

时间:2018-11-04 05:25:21

标签: python nidaqmx

我正在使用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

以某种方式找不到“内部输出”。

如果有经验,请提供帮助。非常感谢你!

0 个答案:

没有答案