В этом примере показано, как сгенерировать ширину импульса модулируемый сигнал управлять шаговым двигателем.
Используйте daq
создать DataAcquisition. Используйте addoutput
чтобы добавить встречный выход образовывают канал с PulseGeneration
тип измерения и addinput
чтобы добавить аналоговый вход образовывают канал, чтобы контролировать импульс, сгенерированный встречным выходным каналом. В данном примере используйте шасси NI c9178 CompactDAQ и модуль NI 9402 с ID cDAQ1Mod5 для импульсной генерации и NI 9205 с ID 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);