NI-DAQmx python syn c аналоговые входы - PullRequest
0 голосов
/ 11 января 2020

Я использую NI cDAQ 9189 со следующими картами:

  • NI 9232
  • NI 9213

Теперь я хотел бы измерить температура и ускорение. Измерение должно начинаться с того же триггера и с разными частотами дискретизации.

Я написал следующий код:

import nidaqmx
from nidaqmx import constants
from nidaqmx import stream_readers
import numpy as np

deviceName = 'cDAQ9189-1DC2683'
measTime = 5 # measurement time in seconds

# tasks
rateTemp = 100 # sampling rate in Hz
rateAcc = 1000 # sampling rate in Hz

with nidaqmx.Task() as taskTemp, nidaqmx.Task() as taskAcc:
    # add channels to task
    taskTemp.ai_channels.add_ai_thrmcpl_chan(deviceName+'Mod6/ai0:1',name_to_assign_to_channel='temp', min_val=0.0,
                                     max_val=100.0, units=nidaqmx.constants.TemperatureUnits.DEG_C,
                                     thermocouple_type=nidaqmx.constants.ThermocoupleType.K)

    taskAcc.ai_channels.add_ai_accel_chan(deviceName+'Mod1/ai0:2', name_to_assign_to_channel='acc',\
                                          units=constants.AccelUnits.METERS_PER_SECOND_SQUARED,sensitivity=1, \
                                          sensitivity_units=constants.AccelSensitivityUnits.VOLTS_PER_G)

    # set sampling rate
    taskTemp.timing.cfg_samp_clk_timing(rate = rateTemp,  sample_mode=constants.AcquisitionType.CONTINUOUS, \
                                        samps_per_chan = measTime * rateTemp)
    taskAcc.timing.cfg_samp_clk_timing(rate = rateAcc, source='taskTemp/SampleClock', \
                                       sample_mode=constants.AcquisitionType.CONTINUOUS, \
                                       samps_per_chan = measTime * rateAcc)

    # start tasks
    taskTemp.start()
    taskAcc.start()

    taskTemp.wait_until_done()
    taskAcc.wait_until_done()

    # measure
    reader = stream_readers.AnalogMultiChannelReader(taskTemp.in_stream)  
    t_data = np.zeros((1,measTime * rateTemp))    
    reader.read_many_sample(t_data,measTime * rateTemp)

    reader = stream_readers.AnalogMultiChannelReader(taskAcc.in_stream)  
    a_data = np.zeros((1,measTime * rateAcc))    
    reader.read_many_sample(t_data,measTime * rateAcc)

Я получаю следующую ошибку:

DaqError: Requested sample clock source is invalid.
Property: DAQmx_SampClk_Src
Corresponding Value: taskTemp/SampleClock

Device: cDAQ9189-1DC2683

Task Name: _unnamedTask<3A>

Status Code: -200414

Я что-то упустил, но не могу найти это. Кто-нибудь знает, что мне не хватает?

Я нашел это , но не могу прибить к python код:

...