В этом примере показано, как генерировать широтно-импульсный модулированный сигнал для приведения в действие шагового двигателя.
Использовать daq для создания DataAcquisition. Использовать addoutput для добавления выходного канала счетчика с PulseGeneration тип измерения, и addinput добавление аналогового входного канала для контроля импульса, генерируемого выходным каналом счетчика. В этом примере для генерации импульсов используйте корпус CompactDAQ NI c9178 и модуль NI 9402 с идентификатором cDAQ1Mod5, а для ввода напряжения - NI 9205 с идентификатором cDAQ1Mod1.
dq = daq("ni"); addinput(dq,"cDAQ1Mod1", "ai0", "Voltage"); ctr = addoutput(dq,"cDAQ1Mod5", "ctr0", "PulseGeneration"); dq.Channels
ans =
Index Type Device Channel Measurement Type Range Name
_____ ____ ___________ _______ _________________ __________________ ________________
1 "ai" "cDAQ1Mod1" "ai0" "Voltage (Diff)" "-10 to +10 Volts" "cDAQ1Mod1_ai0"
2 "co" "cDAQ1Mod5" "ctr0" "PulseGeneration" "n/a" "cDAQ1Mod5_ctr0"
Для подключения выходного сигнала к соответствующей клемме проверьте Terminal свойство канала счетчика. Терминал определяется аппаратными средствами.
ctr.Terminal
ans =
'PFI0'
Используйте выходной канал счетчика 0 для генерации модулированного сигнала фиксированной длительности импульса на терминале PFI0. Запустите двигатель через 0,5 секунды с 75% рабочим циклом.
ctr.Frequency = 10; ctr.InitialDelay = 0.5; ctr.DutyCycle = 0.75; % StartForeground returns data for input channels only. The data variable % will contain one column of data. start(dq, "Duration", seconds(1)); while dq.Running pause(0.1); end data = read(dq, seconds(1)); plot(data.Time, data.Variables);
