|
ÀÔ·Â Á¢Á¡À» »ç¿ëÇÑ Ä«¿îÅÍ ¸¸µé±â |
||||||||||
ÇнÀ¸ñÇ¥ |
|||||||||||
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; } |
|
|||||||||
´ÙÀ½Àº ¿Ï¼ºµÈ ÇÁ·Î±×·¥ÀÌ´Ù. |
|||||||||||
|
|||||||||||
|
|||||||||||
°ú Á¦ |
|||||||||||
|
|||||||||||
Áß¿äÇÔ¼ö |
|||||||||||
|
|||||||||||