ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    1

Áß¿äÇÔ¼ö    1

¾Æ³ª·Î±× ÀԷ°ú ±×·¡ÇÁ

ÇнÀ¸ñÇ¥

¾Æ³ª·Î±× ÀÔ·ÂÀÇ µ¥ÀÌÅÍ ¼öÁý°ú °¡½ÃÈ­ ¹æ¹ýÀ» ÀÍÈù´Ù.

ÇнÀÁÖÁ¦

º¸µå¸¦ ÅëÇØ ¾Æ³ª·Î±× µ¥ÀÌÅ͸¦ ¼öÁýÇÏ°í ±×·¡ÇÁ¿Í ÅØ½ºÆ®·Î Ç¥½ÃÇÑ´Ù.

ÇÁ·Î±×·¥Àº 1Çгâ C¾ð¾î ½Ã°£¿¡ ¹è¿î ±×·¡ÇÁ ÇÁ·Î±×·¥À» ÀϺΠ¼öÁ¤ Çϱâ·Î ÇÑ´Ù.

µ¥ÀÌÅÍ ºÎºÐÀ» º¸µå·Î ÃøÁ¤ÇÑ °ªÀ¸·Î ´ëü ÇÑ´Ù.

¿¹½À³»¿ë

µ¥ÀÌÅ͸¦ ÃøÁ¤Çϱâ À§Çؼ­´Â A/D Converter¿¡ ÃøÁ¤µÈ µ¥ÀÌÅ͸¦ PCÀÇ ¸Þ¸ð¸®¿¡ ÀúÀåÇß´Ù. À̸¦ È­¸é¿¡ Ç¥½ÃÇÑ´Ù. ÀÌ ¶§ A/D ConverterÀÇ ÃøÁ¤ ½Ã°£¿¡ ºñÇϸé È­¸é¿¡ Ãâ·Â¿¡´Â ¸¹Àº ½Ã°£ÀÌ ¼Ò¿äµÈ´Ù.

1.        ÇÑ Æ÷ÀÎÆ® ÃøÁ¤ : 1°³ÀÇ ÃøÁ¤ µ¥ÀÌÅͰ¡ »ý¼º µÉ ¶§¸¶´Ù À̸¦ È­¸é¿¡ Ç¥½ÃÇÑ´Ù. ÀÌ´Â ÃøÁ¤ ½Ã°£ °£°ÝÀÌ »ó´çÈ÷ Å©´Ù.

2.        Single Buffer : ÀÏÁ¤ °³¼öÀÇ µ¥ÀÌÅ͸¦ ¸Þ¸ð¸®¿¡ ÀúÀåÇß´Ù. È­¸é¿¡ Ç¥½ÃÇÑ´Ù. ±×·¯³ª ¸é ó¸® ½Ã°£ µ¿¾ÈÀº ÃøÁ¤À» ¸ØÃß°Ô µÈ´Ù.

3.        Duble Buffer : µÎ °÷ÀÇ ÃøÁ¤ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ¿© ÇÑ ¸Þ¸ð¸®¿¡¼­ È­¸é Ãâ·Â ½Ã°£¿¡µµ ´Ù¸¥ ¸Þ¸ð¸®¿¡ ÃøÁ¤ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°Ô ÇÔÀ¸·Î È¿À²ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÃøÁ¤ÇÒ ¼ö ÀÖ´Ù.¤Ó

´ÙÀ½Àº ¾Æ³ª·Î±×¸¦ ÃøÁ¤ÇÏ´Â ÇÔ¼öÀÌ´Ù. ´ÙÀ½ ÇÔ¼öÀÇ VariableÀÌ ÀǹÌÇÏ´Â °ÍÀ» ±â¼úÇϽÿÀ [°úÁ¦]

AI_VRead(iDevice, iChan, iGain, &dVoltage)

 

µµ½º»óÅ¿¡¼­ Àü¾ÐÀ» ÃøÁ¤ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º»´Ù.

 

¿¹½ÀÇÁ·Î±×·¥1

 

#include "stdafx.h"

#include "nidaqex.h"

 

int main(int argc, char* argv[])

{

i16 iStatus = 0;

    i16 iRetVal = 0;

    i16 iDevice = 1;

    i16 iChan = 0;

    i16 iGain = 1;

    f64 dVoltage = 0.0;

    i16 iIgnoreWarning = 0;

 

    iStatus = AI_VRead(iDevice, iChan, iGain, &dVoltage);

 

    iRetVal = NIDAQErrorHandler(iStatus, "AI_VRead", iIgnoreWarning);

   

    if (iStatus == 0) {

        printf(" The voltage at AI channel %d is %lf volts.\n", iChan, dVoltage);

    }

              return 0;

}

½Ç½À¹æ¹ý

¸ñ    Â÷

1.       ¹è¼±¿¬°á

¿ÜºÎÀÇ ³ôÀº Àü¾ÐÀÌ º¸µå·Î µé¾î °¡¸é º¸µå°¡ ¼Õ»óÀ» ÀÔÀ» ¼ö ÀÖÀ¸¹Ç·Î ¾Æ³ª·Î±×ÀÇ ÃøÁ¤Àº º¸µå¸¦ º¸È£ÇÏ´Â Signal ConditioningÀ» ÇØ¾ß ÇÑ´Ù. SCC-AI01À» J1Æ÷Æ®¿¡ ±×¸²°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù. ÀÌ´Â –40~40V±îÁö ÃøÁ¤ÇÒ ¼ö ÀÖ´Ù.

2.       ÇÑ Æ÷ÀÎÆ® ÃøÁ¤

AI_Vread ÇÔ¼ö¿Í 1Çг⠰úÁ¤ÀÇ Graph ÇÁ·Î±×·¥À» È¥ÇÕÇÏ¿© ÇÁ·Î±×·¥À» ¿Ï¼ºÇÑ´Ù.

1)       ( NumEdit Control)À» ¼±ÅÃÇÏ¿© ±×¸²°ú °°ÀÌ ´ÙÀ̾î·Î±×¿¡ Ãß°¡ÇÑ´Ù.

 

2) CWGraph1À» ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ´­·¯ Properies¸¦ ¼±ÅÃÇÏ¿© YÃàÀÇ ¹üÀ§¸¦ –5~30À¸·Î ÇÑ´Ù.

3) ¼ýÀÚ Ç¥½Ã¸¦ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ´­·¯ Properties¸¦ ¼±ÅÃÇϰí Style¿¡¼­ ¾Æ·¡¿Í °°ÀÌ ¼±ÅÃÇÑ´Ù.

Advanced¿¡¼­ Text, Back Font=18 ÀÇ Ç׸ñÀ» ¼öÁ¤ÇÑ´Ù.

4) [View] -> [ClassWizard]¿¡¼­ IDC_CWNUMEDIT1ÀÇ VariableÀ» m_volt·Î ÇÑ´Ù.

5) ŸÀ̸Ӱ¡ µ¿ÀÛÇÒ ¶§ ¸¶´Ù Àü¾ÐÀ» ÃøÁ¤Çϰí À̸¦ ¸Þ¸ð¸®¿¡ ÀúÀåÇÏ°í ±×·¡ÇÁ¸¦ ±×¸°´Ù.

¿¹Á¦1

void CGraphDlg::OnTimer(UINT nIDEvent)

{

              // TODO: Add your message handler code here and/or call default

              f64 dVoltage = 0.0;

              double adjust=5.0;  // ÃøÁ¤°ª°ú ½ÇÁ¦°ª °°°Ô ÇÑ´Ù. (°æ¿ì¿¡ µû¶ó ´Þ¶óÁü)

 

              if(iTime >= 100)                                                 // µ¥ÀÌŸ¸¦ 100°³±îÁö ¹Ýº¹ÀûÀ¸·Î ÀúÀå

                             iTime = 0;

              AI_VRead(1, 0, 1, &dVoltage); //AI_VRead(iDevice, iChan, iGain, &dVoltage);

              m_volt.Value=dVoltage*adjust;

              Yvalue[iTime] = (double)dVoltage*adjust;                                                     

             

              // Move the data to the CNiReal64Vector data type

              CNiReal64Vector myvector(iTime+1, Yvalue);

              m_graph.PlotY(myvector, 0., 1.);

              iTime++;

              UpdateData(FALSE);

 

              CDialog::OnTimer(nIDEvent);

}

[ÀüüÇÁ·Î±×·¥ º¸±â]

 

3.       Single Buffer (ANSI)

´ÙÀ½ ¿¹Á¦´Â ANSI C¿¡¼­ piBuffer·Î 30°³ÀÇ µ¥ÀÌÅ͸¦ ÃøÁ¤ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÀÌ´Â NiDAQ¿¡ ÀÖ´Â ¿¹Á¦¸¦ ÀûÀº °ÍÀÌ´Ù.

¿¹Á¦2

DAQsingleBufAsync.c ¿¹Á¦¸¦ ±â¼úÇÑ °ÍÀÌ´Ù.

#include "stdafx.h"

#include "nidaqex.h"

 

 

int main(int argc, char* argv[])

{

i16 iStatus = 0;

    i16 iRetVal = 0;

    i16 iDevice = 1;

    i16 iChan = 0;

    i16 iGain = 1;

    f64 dSampRate = 1000.0;

    u32 ulCount = 100;

    f64 dGainAdjust = 0.2;

    f64 dOffset = 0.0;

    i16 iUnits = 0;

    i16 iSampTB = 0;

    u16 uSampInt = 0;

    static i16 piBuffer[100] = {0};

    i16 iDAQstopped = 0;

    u32 ulRetrieved = 0;

    static f64 pdVoltBuffer[100] = {0.0};

    i16 iIgnoreWarning = 0;

    i16 iYieldON = 1;

int i;

 

    /* Convert sample rate (S/sec) to appropriate timebase and sample

     interval values. */

 

    /* NOTE: If you are using a DSA device, call DAQ_Set_Clock

     instead. Refer to NI-DAQ Function Reference Manual for details. */

              iStatus = DAQ_Rate(dSampRate, iUnits, &iSampTB, &uSampInt);

 

    /* Acquire data from a single channel */

 

    /* NOTE FOR DSA devices... DSA devices can format samples in a

     left-justified format in 32-bit data words. This means that the most

     significant bits of the data word contain the bits generated by the

     converter. When allocating data buffers, be sure to account for the

     32-bit data width. Even though a number of DAQ/SCAN/WFM functions are

     declared to accept pointers to 16-bit data buffers, you should pass

     pointers to 32-bit data buffers. Also, modify the iGain parameter to

     be in units of dB. */

    iStatus = DAQ_Start(iDevice, iChan, iGain, piBuffer, ulCount, iSampTB, uSampInt);

    iRetVal = NIDAQErrorHandler(iStatus, "DAQ_Start", iIgnoreWarning);

while ((iDAQstopped != 1) && (iStatus == 0)) {

        /* Loop until all acquisition is complete.  HINT: You can be

         doing other foreground tasks during this time. */

        iStatus = DAQ_Check(iDevice, &iDAQstopped, &ulRetrieved);

              iRetVal = NIDAQYield(iYieldON);

    }

    iRetVal = NIDAQErrorHandler(iStatus, "DAQ_Check", iIgnoreWarning);

iStatus = DAQ_VScale(iDevice, iChan, iGain, dGainAdjust, dOffset, ulCount, piBuffer, pdVoltBuffer);

    iRetVal = NIDAQErrorHandler(iStatus, "DAQ_VScale", iIgnoreWarning);

             

    /* CLEANUP - Don't check for errors on purpose. */

    iStatus = DAQ_Clear(iDevice);

             

    /* Write acquired data */

for(i=0;i<ulCount;i++)

              printf("%d  %f\n",i,pdVoltBuffer[i]);

   

              return 0;

}

 

óÀ½

°ú    Á¦

 

Áß¿äÇÔ¼ö

AI_VRead(iDevice, iChan, iGain, &dVoltage)