NI9401 Pulse Generation and Digital Output same time

조회 수: 12 (최근 30일)
Tugrul Öztürk
Tugrul Öztürk 2023년 3월 18일
답변: MULI 2024년 10월 10일
Hey all,
I want to drive a stepper controller (TRINAMICS) using the NI 9401. I know that NI 9401 is capable of generating pulse which can be used for the "CLK" resp. "STEP" signal for the stepper controller. Beside the CLK signal I also have to provide digital signals for "DIR" (direction) and "EN" (enable). Is it possible to generate pulsed signal and "constant" digital output signals same time using the NI 9401 ?
My recent approach is attached below, which is not working.
Thank you !
close all;
clear;
clc;
devID_NI9401="cDAQ1Mod1";
daqObj=daq('ni');
chCLK=addoutput(daqObj,devID_NI9401,"ctr0","PulseGeneration");
chCLK.Frequency = 1000;
chCLK.DutyCycle = 0.5;
chDO=addoutput(daqObj,devID_NI9401,"port0/line2","Digital");
write(daqObj,ones(500,1));
start(daqObj,"continuous")
  댓글 수: 2
Pooja Kumari
Pooja Kumari 2023년 8월 28일
What is the error you were facing?
Pietro Mele
Pietro Mele 2024년 7월 5일
Hi @Tugrul Öztürk did you finally solved the problem? I'm currently facing the same issue, emoploying the NI 9401 for controlling a step motor with Simulink. Is it possible to use multiple ports for DO ?

댓글을 달려면 로그인하십시오.

답변 (1개)

MULI
MULI 2024년 10월 10일
Hi Tugrul,
I understand that you need to control a stepper motor using a TRINAMICS stepper controller with the NI 9401 module which involves generating a pulse signal for the "CLK" and simultaneously providing constant digital signals for the "DIR" (direction) and "EN" (enable) inputs.
To achieve this, you can use the NI 9401's counter output for pulse generation and its digital I/O lines for setting constant signals.
  • Use the counter output for generating a continuous pulse signal which is suitable for the "CLK" signal.
  • Use digital output lines for "DIR" and "EN". These should be set to constant high or low levels as needed.
Here's an example of how you can set this up:
close all;
clear;
clc;
devID_NI9401 = "cDAQ1Mod1";
daqObj = daq('ni');
% Configure the pulse generation for the CLK signal
chCLK = addoutput(daqObj, devID_NI9401, "ctr0", "PulseGeneration");
chCLK.Frequency = 1000; % Set the desired frequency
chCLK.DutyCycle = 0.5; % Set the duty cycle
% Configure digital outputs for DIR and EN signals
chDIR = addoutput(daqObj, devID_NI9401, "port0/line0", "Digital");
chEN = addoutput(daqObj, devID_NI9401, "port0/line1", "Digital");
% Set the DIR and EN signals
write(daqObj, [1 1]); % Set DIR and EN to high; adjust as needed
% Start the pulse generation
start(daqObj, "continuous");
For more detailed information, you can refer to the following documentation:

카테고리

Help CenterFile Exchange에서 Digital Input and Output에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by