ÇнÀ¸ñÇ¥   1

ÇнÀÁÖÁ¦   1

¿¹½À³»¿ë   1

½Ç½À¹æ¹ý   1

°ú    Á¦   1

Áß¿äÇÔ¼ö   1

 

 

ÀÔ·Â Á¢Á¡À» »ç¿ëÇÑ Ä«¿îÅÍ ¸¸µé±â

ÇнÀ¸ñÇ¥

PLCÀÇ ÀÔ·ÂÆ÷Æ®¸¦ Ä«¿îÅÍ·Î »ç¿ëÇÏ°í À̸¦ PC¿¡¼­ ¸ð´ÏÅ͸µ ÇÑ´Ù.

ÇнÀÁÖÁ¦

1.      PLC Ä«¿îÅÍ ÇÁ·Î±×·¥À» ¸¸µç´Ù..

2.      PC¿¡¼­ Ä«¿îÅÍ °ªÀ» ÀÐ¾î ¿Â´Ù.

¿¹½À³»¿ë

1.      ¡°PLC µ¥ÀÌÅÍ Àб⡱ ¸í·É¹® ÀÛ¼º

Àб⠸í·ÉÀ» ¾Æ·¡¿Í °°ÀÌ º¸³½´Ù.

STX01RC000101EOT

À§¿¡¼­ 01Àº ±â±â¹øÈ£, R´Â µ¥ÀÌÅÍ Àб⠸í·É, C0001 µ¥ÀÌÅÍ ÀбâÀÇ ½ÃÀÛ¹øÁö, 01Àº ÀÐÀ» ¿öµå´ÜÀ§ µ¥ÀÌÅÍ °³¼ö ÀÌ´Ù.

À̸¦ ÇÁ·Î±×·¥ ÇÏ¸é ¾Æ·¡¿Í °°´Ù.

              strTemp.Format("%c%02dRC000101%c",0x05,(int)m_nMachinNo.Value,0x04);          

              m_nMachinNo´Â PLC ¹øÈ£

2.      ¼ö½Åµ¥ÀÌÅÍ ºÐ¼®

À§¿Í °°ÀÌ º¸³»¸é ¼ö½ÅµÇ¾î ¿À´Â µ¥ÀÌÅÍ´Â ¾Æ·¡¿Í °°´Ù.

STX01R0001EOT

 ¿©±â¼­ 01Àº ±â±â¹øÈ£, R Àб⠸í·É ÄÚµå, 00001 Àº Ä«¿îÅÍÀÇ ÀÔ·ÂµÈ °ªÀÌ´Ù.

½Ç½À¹æ¹ý

¸ñ    Â÷

 

ÇÁ·Î±×·¥Àº ¾Õ¿¡¼­ ÇнÀÇÑ ÇÁ·Î±×·¥À» ±×´ë·Î »ç¿ëÇÑ´Ù..

 

 

Ä«¿îÅ͸¦ Ç¥½ÃÇϱâ À§ÇØ NumEdit Control·Î ¿·ÀÇ »¡°£ ºÎºÐÀ» Ç¥½ÃÇÑ´Ù.

 

 

º¯¼ö À̸§Àº m_nCountÀ¸·Î ÇÑ´Ù.

 

 

 

 

OnInitDialog()ÇÔ¼ö ¾È¿¡ SetTimer(1,500,NULL); ¸¦ ¼³Á¤ÇÑ´Ù.

 

ŸÀÌ¸Ó ÇÔ¼ö ¾È¿¡¼­ Æ÷Æ®ÀÇ »óŸ¦ ÀÐ¾î ¿Àµµ·Ï ÇÁ·Î±×·¥ ÇÑ´Ù.

 

 

void CRs232Dlg::OnTimer(UINT nIDEvent)

{

              CString strTemp;

 

              strTemp.Format("%c%02dRC000101%c",0x05,(int)m_nMachinNo.Value,0x04);              // ¿öµå´ÜÀ§·Î Ä«¿îÅÍÀÇ »óŸ¦ ÀÐ¾î ¿Â´Ù.

              m_ComuPort.WriteComm((unsigned char*)(LPCTSTR)strTemp,strTemp.GetLength());

              CDialog::OnTimer(nIDEvent);

}

 

 

 

OnCommunication() ÇÔ¼ö ¾È¿¡ ¸®ÅÏ µÇ¾î ¿À´Â 16Áø¼ö 4°³ÀÇ °ªÀ» Á¤¼ö·Î ¹Ù²Ù¾î

    m_nCount ¹Ú½º¿¡ Ç¥½Ã¸¦ ÇÑ´Ù.

CharHexToInt(char in) ÇÔ¼ö´Â ¹®ÀÚ·Î µÈ 16Áø¼ö¸¦ 10Áø¼ö·Î ¹Ù²Ù´Â ÇÔ¼öÀÌ´Ù.

 

 

LONG CRs232Dlg::OnCommunication(UINT port, LONG lParam)

{

             

              BYTE aByte;

 

 

              int size= (m_ComuPort.m_QueueRead).GetSize();

              /*

              for( int i=0; i< size; i++ )

              {

                            (m_ComuPort.m_QueueRead).GetByte(&aByte);

                            if( aByte!= NULL ) buff[i]= aByte;

                            else { i--; size--; }

              }

              */

              for( int i=0; i< size; i++ )

              {

                            (m_ComuPort.m_QueueRead).GetByte(&aByte);

                            if(aByte==0x06 || aByte==21)

                                           j=0;

                            if( aByte!= NULL ) buff[j++]= aByte;

                            else { j--; size--; }

 

                            if(aByte==0x04)

                                           break;

              }

 

              m_nCount.Value=CharHexToInt(buff[4])*16*16*16

                            +CharHexToInt(buff[5])*16*16+CharHexToInt(buff[6])*16

                            +CharHexToInt(buff[7]);

 

              //CheckInput();

 

              if(size > 0)

                            m_Edit2.SetWindowText(buff);

              return 0;

}

 

int CRs232Dlg::CharHexToInt(char in)

{

              if(in < 58)

                            return(in-48);

              else if(in < 71)

                            return(in-54);

              else

                            return(in-86);

 

}

 

 

´ÙÀ½Àº ¿Ï¼ºµÈ ÇÁ·Î±×·¥À¸·Î ¸®ÅÏµÈ °ª 16Áø¼ö R0027À» 10Áø¼ö·Î ¹Ù²Ù¾î Ä«¿îÆ®¿¡ Ç¥½Ã ÇÏ¿´´Ù.

 

´ÙÀ½Àº PLC ÇÁ·Î±×·¥ÀÌ´Ù.  ¡°P00¡± À¸·Î ÀÔ·ÂÀ» Çϸé Ä«¿îÆ®°¡ ÁøÇàµÈ´Ù. ±×¸®°í Ä«¿îÆ®°¡ 5°¡ µÇ¸é ¡°P10¡± À¸·Î Ãâ·ÂÀÌ ³ª°£´Ù. ¡°P01¡± À¸·Î ÀÔ·ÂÀ» ÇÏ¸é ¸®¼ÂµÈ´Ù.

»õÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ°í PLC´Â ¡°10S1¡±À» ¼±ÅÃÇÑ´Ù.

¾Æ·¡¸¦ ¼±ÅÃÇÏ°í ¿À¸¥Âʱ׸²°ú °°ÀÌ ¡°P00¡±À» ÀÔ·ÂÇÑ´Ù.

¾Æ·¡¸¦ ¼±ÅÃÇÏ°í ¿À¸¥ÂÊ ±×¸²°ú °°ÀÌ ¡°CTU C01 05¡±¸¦ ÀÔ·ÂÇÑ´Ù.

 

¾Æ·¡´Â ¿Ï¼ºµÈ ÇÁ·Î±×·¥ÀÌ´Ù. ÀÔ·Â P00·Î Ä«¿îÅÍ µÇ°í Ä«¿îÅÍ °ªÀÌ 5°¡ µÇ¸é P10À¸·Î Ãâ·ÂÀÌ ³ª°¡°í P01¿¡ ÀÔ·ÂÀ» ÁÖ¸é ¸®¼ÂµÈ´Ù.

 

´ÙÀ½Àº 2°³ÀÇ Ä«¿îÅÍ °ªÀ» ÀÔ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

PC ÇÁ·Î±×·¥

±×¸²°ú °°ÀÌ Ä«¿îÆ®1À» º¹»çÇÏ¿© Çϳª ´õ ¸¸µé°í Member VariableÀ» ¡°m_nCount2¡±·Î ÇÑ´Ù.

1°³ÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î ¿À´Â °ÍÀ» 2°³ÀÇ µ¥ÀÌÅ͸¦ Àд °ÍÀ¸·Î ¼öÁ¤ÇÑ´Ù.

 

void CRs232Dlg::OnTimer(UINT nIDEvent)

{

              CString strTemp;

 

              //strTemp.Format("%c%02dRC000101%c",0x05,(int)m_nMachinNo.Value,0x04);                       strTemp.Format("%c%02dRC000102%c",0x05,(int)m_nMachinNo.Value,0x04);                         m_ComuPort.WriteComm((unsigned char*)(LPCTSTR)strTemp,strTemp.GetLength());

              CDialog::OnTimer(nIDEvent);

}

 

OnCommunication ÇÔ¼ö¿¡ 2¹ø° µ¥ÀÌÅ͸¦ º¯È¯ÇÏ´Â ÇÁ·Î±×·¥À» Ãß°¡ ÇÑ´Ù.

 

LONG CRs232Dlg::OnCommunication(UINT port, LONG lParam)

{

             

              BYTE aByte;

 

 

              int size= (m_ComuPort.m_QueueRead).GetSize();

              for( int i=0; i< size; i++ )

              {

                            (m_ComuPort.m_QueueRead).GetByte(&aByte);

                            if(aByte==0x06 || aByte==21)

                                           j=0;

                            if( aByte!= NULL ) buff[j++]= aByte;

                            else { j--; size--; }

 

                            if(aByte==0x04)

                                           break;

              }

 

              m_nCount.Value=CharHexToInt(buff[4])*16*16*16

                            +CharHexToInt(buff[5])*16*16+CharHexToInt(buff[6])*16

                            +CharHexToInt(buff[7]);

 

              m_nCount2.Value=CharHexToInt(buff[8])*16*16*16

                            +CharHexToInt(buff[9])*16*16+CharHexToInt(buff[10])*16

                            +CharHexToInt(buff[11]);

 

              if(size > 0)

                            m_Edit2.SetWindowText(buff);

              return 0;

}

 

´ÙÀ½Àº ¿Ï¼ºµÈ ÇÁ·Î±×·¥ÀÌ´Ù.

 

óÀ½

°ú    Á¦

 

Áß¿äÇÔ¼ö