티스토리 뷰

DAQmx를 이용하여 디지털 출력하는 방법에 대해서 알아볼까 해요.

DAQmx 함수를 이용하면 AI, AO, DIO, Counter의 연동이 가능한데요.

이번 글에서는 DO에 대한 부분을 설명을 드리려고 합니다.

 

이 글의 목표는 3개의 Boolean 배열을 이용하여 7개의 DO 중 특정 DO에 출력을 하게끔 해보겠습니다.

말로 하면 좀 어려운데요.

3개의 불리언은 2진수, 출력되는 DO는 2진수의 10진수 값으로 변환한 값의 해당 포트가 출력이 되게끔 하고자 하는 거에요

(말이 어렵나요 ㅠㅠ)

 

아래의 코드는 DAQmx에서 제공하는 소프트웨어 타이밍 출력의 코드를 조금 변경한 것입니다.


NI 예제는 참 잘 만들어져 있기 때문에 자신이 원하는 코드만 일부분 변경하여 사용하는 것이 

LabVIEW 프로그래밍을 잘하는 하나의 방법이 아닌가 싶습니다.

 

코드를 부면 출력배열의 값을 받아와서 10진수로 변환하고, 변환된 10진수의 값에 맞는 Port에 출력을 하게끔 구현해보았습니다.

 

출력배열의 값을 1D 배열 뒤집기를 통해서 배열의 순서를 변경하고, 이를 숫자로 만들었습니다.

예를 들어 F,F,T라는 출력배열이 있다고 가정한다면 이를 001로 변경하고 2진수를 10진수로 변형하여 1이 되게끔 하는 것이죠.

T,F,F라면 100이기 때문에 4가 나오게 됩니다.


 

위의 코드의 사용자 인터페이스는 아래와 같습니다.

위의 배열이 사용자가 원하는 이진수를 지정하는 부분이고, 아래의 배열이 출력되는 값입니다.

 

 

실질적으로 실행을 해보았습니다.

010 이라고 출력배열을 설정하면 값이 2가 나와서 출력배열의 2번째에 출력이 됩니다.


위의 그림을 보면 DO 출력하는 라인을 Dev2/port0/line0:7으로 해놓았습니다.

따라서 line0은 1일 때, line1은 2일 때, line7은 8일 때 출력이 되게끔 해놓은 것이죠.

 

 

011로 설정을 하면 3번째의 배열에 불이 들어오는 것을 볼 수 있습니다.

 

 

이 글에서는 2진수의 값을 받아와서 10진수 변경하고, 이에 맞는 Line에 디지털 출력하는 방법을 알아보았습니다.

그럼 이만 줄이겠습니다.

 

이 글이 도움이 되셨으면, 아래의 하트를 눌러주세요.


댓글