티스토리 뷰



ANSI C기반 DAQ 샘플 속도 변경 방법


LabVIEW와 ANSI C 기반의 DAQ 수집 과정은 동일하지만 설정하는 방법이 조금 다른 점이 있습니다. 이 부분에 대한 설정 방법을 알려드리도록 할께요.


1) LabVIEW 코드

LabVIEW의 전압 연속 샘플링 코드를 수행할 때 샘플 속도/읽을 갯수를 지정하게 되면 문제없이 동작을 하게 됩니다. 

 


기존의 코드 값인 1000/100도 문제가 없이 동작을 하고, 3600/360으로 변경을 해도 아래의 그림과 같이 동일하게 동작을 하게 됩니다.

 


2) Ansi C 기반의 코드


하지만 Ansi C에서 샘플 속도와 읽을 갯수를 변경하여 지정을 하게 되면 아래와 같은 에러가 발생을 합니다. 아래의 에러코드는 샘플 속도/읽을 샘플 갯수의 지정이 잘못되어 발생하는 문제가 아닌 Buffer의 크기 설정이 잘못되어 발생을 합니다. LabVIEW에서는 Buffer의 크기를 샘플 속도와 읽을 샘플 갯수를 통해 자동적으로 지정을 하시면 C언어에서는 이 크기를 수동으로 지정을 하기 때문입니다.


기존의 예제는 초기 설정 값이 샘플 속도 : 10000, 읽을 샘플 갯수 : 1000, 버퍼 사이즈 : 1000으로 설정이 되어 있습니다. 여기에서 LabVIEW의 예제와 같이 샘플 속도와 읽을 갯수만 3600, 360으로 변경한 경우 버퍼사이즈의 오류로 인해 데이터를 수집하다가 1초정도 후에 에러가 발생합니다. 


이러한 경우 버퍼 크기를 변경해줘야 합니다.  버퍼의 크기 변경을 위해서는 DAQmxRegisterEveryNSamplesEvent 함수의 3번째 인자의 값을 변경해야 합니다.



기존 코드는 아래와 같습니다. 


DAQmxErrChk (DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,NULL));


아래와 같이 변경해야 합니다. 샘플 속도가 10000에서 3600으로 읽을 샘플 갯수가 1000에서 360으로 줄었기 때문에 이에 대한 버퍼 사이즈도 1000에서 100으로 변경을 해줘야 합니다. 상황에 따라 샘플 속도와 읽을 샘플 갯수를 기준으로 변경을 하시면 됩니다. 


DAQmxErrChk (DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,100,0,EveryNCallback,NULL));


위와 같이 적절히 수정이 된다면 아래와 같이 수집이 정상적으로 동작하는 것을 확인 할 수 있습니다.



<추가팁>


1) 텍스트언어에서 샘플 속도 변경하는 방법


샘플 속도 변경을 위해서는 DAQmxCfgSampClkTiming 함수의 3번째 인자(빨간색) 부분을 수정할 수 있습니다. 


DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",3600,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000));


2) 텍스터언어에서 읽을 갯수 변경하는 방법


읽을 샘플 갯수의 변경은 DAQmxReadAnalogF64의 2번째 인자의 값(빨간색)을 변경하면 됩니다. 추가적으로 수집하는 채널의 갯수가 1개에서 3개로 늘어났다면 지정하는 읽을 샘플 갯수 * 채널 갯수 이상으로 배열 크기를 늘려줘야 합니다. 배열 크기 설정에 대한 부분은 노란색 텍스트로 변경된 부분입니다.


float64     data[1080];


/*********************************************/

// DAQmx Read Code

/*********************************************/

DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,360,10.0,DAQmx_Val_GroupByScanNumber,data,1080,&read,NULL));


이 글에서는 Ansi C 기반의 DAQ 연속 수집에 대한 설정 방법을 알아보았습니다.


이 글이 도움이 되셧나요?

그렇다면 아래의 그림을 클릭해주세요.



댓글