Счетчик серии NI DAQ M с триггером - PullRequest
0 голосов
/ 04 ноября 2018

Я использую двухканальный канал DAQ серии M для генерации последовательности импульсов для управления двухступенчатым двигателем, но эти два канала не являются полностью независимыми, когда один канал генерирует импульс, а другой канал также с измененным состоянием. В этой ссылке упоминается способ использования триггера paule для приостановки другого канала, когда один канал генерирует конечный импульс. Ссылка Я попытался преобразовать его в код 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

как-то не может найти "Внутренний выход".

пожалуйста, помогите, если у кого-то есть опыт. Большое спасибо!

...