MODBUS Åë½Å µå¶óÀ̹ö

 

MODBUS´Â ¹Ì±¹ÀÇ Modicon PLC µî¿¡¼­ »ç¿ëÇϴ ǥÁØ ÇÁ·ÎÅäÄÝÀÌ´Ù.

 

1. Àб⠼³Á¤

 

<±×¸² 1>Àº MODBUS Åë½Å µå¶óÀ̹ö¸¦ »ç¿ëÇÒ ¶§ÀÇ Åë½Å¼³Á¤ ¿¹ÀÌ´Ù.

 

             <±×¸² 1> MODBUS ½Ã¸®¾ó Åë½Å¼³Á¤ ¿¹

 

<±×¸² 1>ÀÇ DEVICE ¼³Á¤Àº ¿¬°áµÈ Åë½ÅÆ÷Æ®(COM1), Åë½Å¼Óµµ( 9600 ), Parity Bit ( 0 ), Data Bit ( 8 ), Stop Bit ( 1 ), ¼øÀ¸·Î Àåºñ¿¡ ¼³Á¤µÈ °ªÀ» ÀÔ·ÂÇÑ´Ù.

MODBUS Åë½Å µå¶óÀ̹öÀÇ ¿É¼Ç ºÎ ¿¡´Â ÀÐÀº ÆÐŶÀÇ CRC üũ ¿©ºÎ( 1 = üũ ÇÔ, 0 = üũ ¾ÈÇÔ ), ºñÆ® ON ¾²±â °ª ( ±âº» = 65280 ), MODBUS IP ÇÁ·ÎÅäÄÝ »ç¿ë¿©ºÎ( 1 = IP ÇÁ·ÎÅäÄÝ, 0 = ÀÏ¹Ý ½Ã¸®¾ó ÇÁ·ÎÅäÄÝ ) , ºñÆ® OFF ¾²±â °ª ( ±âº» = 0 ), DWORD/FLOAT µîÀÇ °ªÀ» ÀÐÀ» ¶§ ÀÐÀ» Å©±â¸¦ WORD ´ÜÀ§ ºñ »ç¿ë¿©ºÎ( 1 = »ç¿ë¾ÈÇÔ, 0 = WORD ´ÜÀ§·Î °è»ê, ±âº» : 0 ), ¸ÖƼ¾²±â »ç¿ë¿©ºÎ(0 = »ç¿ë¾ÈÇÔ, 1 = »ç¿ë, ±âº» : 0), µ¥ÀÌÅÍ °ª ºñ±³¸¦ À§ÇÑ »óÅ°ª ÀúÀåÀ§Ä¡(WORD ¸Þ¸ð¸® ¹øÁöÁöÁ¤, ±âº» : 1000) ¼øÀ¸·Î ÄÞ¸¶( , )·Î ±¸ºÐÇÏ¿© ÀÔ·ÂÇÑ´Ù.

 

ÁÖÀÇ) DWORD/FLOAT µîÀÇ °ªÀ» ÀÐÀ» ¶§ ÀÐÀ» Å©±â¸¦ WORD ´ÜÀ§¸¦ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â Åë½Å ÇÁ·ÎÅäÄÝ ·¹º§¿¡¼­ DWORD/FLOAT 1°³ÀÇ µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§ 2°³ÀÇ µ¥ÀÌÅ͸¦ ¿ä±¸ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó 1 °³ÀÇ µ¥ÀÌÅ͸¦ ¿ä±¸ÇÏ´Â ÇÁ·ÎÅäÄÝ Çü½ÄÀÌ´Ù. ( GAS Micro iMaCS µîÀÇ Àåºñ¿¡¼­ »ç¿ëÇÔ )

 

 

Âü°í) MODBUS IP ÇÁ·ÎÅäÄÝÀº Ethernet µîÀ¸·Î ¿¬°áµÈ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÏ°í Åë½ÅÇü½ÄÀº TCP/IP ¶Ç´Â UDP/IP¸¦ »ç¿ëÇÑ´Ù.

 

 

Àб⠼³Á¤ ¹æ¹ý

READ ½ºÅ×ÀÌ¼Ç ÀÐÀ» Á¾·ù ÀÐÀ» ½ÃÀÛÁÖ¼Ò ¸Þ¸ð¸® ÀúÀåÀ§Ä¡ Àд °³¼ö
READ, 1, 3, 0, 0, 32,
DWORD, 1, 3d, 200, 0, 50,
DWORD, 1, 3d, 300, 50, 50,
DWORD, 1, 3F, 2000, 0, 50,

 

1) ½ºÅ×ÀÌ¼Ç : ¿¬°áµÈ ÀåºñÀÇ ½ºÅ×ÀÌ¼Ç (ID) ¹øÈ£. ( 0 ~255 )

2) ÀÐÀ» Á¾·ù : ÀÐÀ» µ¥ÀÌÅÍ Á¾·ù¸¦ ÁöÁ¤. (Function Code ¹øÈ£, ÀϹÝÀûÀ¸·Î Function Code 3 = 40000¹ø Register ´ë¿ª, Function Code 4 = 30000¹ø Register ´ë¿ª)

Âü°í) Function Code 4¸¦ »ç¿ëÇÒ ¶§´Â 3 ´ë½Å 4·Î º¯°æÇÏ¿© »ç¿ëÇÑ´Ù.

3 – WORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3W – WORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3w – WORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3D – DWORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3d – DWORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3lD, 3LD – 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3ld, 3Ld – 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3M – HI WORD x 10000 + LO WORD Çü½ÄÀÇ DWORD µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3m – HI WORD x 10000 + LO WORD Çü½ÄÀÇ DWORD µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3lM, 3LM – HI WORD x 10000 + LO WORD Çü½ÄÀÇ 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3lm, 3Lm – HI WORD x 10000 + LO WORD Çü½ÄÀÇ 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3s – 16 BYTE BCD ASCII µ¥ÀÌÅÍ Àбâ,

3F – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3F2 – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø 2 ),

3f – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

3f2 – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø 2 ),

3U – DOUBLE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( LO, HI µ¥ÀÌÅÍ ¼ø ),

3u – DOUBLE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( HI, LO µ¥ÀÌÅÍ ¼ø ),

1X, 2X – ºñÆ® ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ ( 0xxxx, 1xxxx Modbus ¹øÁö )

1XB, 2XB – ºñÆ® ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ, ºñÆ® ´ÜÀ§ Àб⠰³¼ö ( 0xxxx, 1xxxx Modbus ¹øÁö )

3B – BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ Àбâ.

3) ÀÐÀ» ½ÃÀÛÁÖ¼Ò : ÀÐÀ» ½ÃÀÛ¹øÁö. (modbus ÁÖ¼Ò –1 )

4) ¸Þ¸ð¸® ÀúÀå À§Ä¡ : Àоî¿Â »óÅ °ªÀ» ÀúÀåÇÒ ¹öÆÛÀ§Ä¡.

5) Àд ũ±â: ÀÐÀ» Å©±â.

3, 3W, 3w – WORD ´ÜÀ§ °³¼ö,

3D, 3d, 3M, 3m, 3F, 3F2, 3f, 3f2 – 2 WORD ´ÜÀ§ °³¼ö,

3LD, 3ld, 3LM, 3lm, 3U, 3u – 4 WORD ´ÜÀ§ °³¼ö,

3s – 8 WORD ´ÜÀ§ °³¼ö,

1X, 2X – WORD ´ÜÀ§ °³¼ö,

1XB, 2XB – ºñÆ® ´ÜÀ§ÀÇ Àб⠰³¼ö, ( 1 ~ 15 = 1 WORD, 16 ~ 31 = 2 WORD, ¡¦)

3B – BYTE ´ÜÀ§ °³¼ö.

 

<±×¸² 1> ÇÁ·ÎÅäÄÝ ¿É¼ÇºÎÀÇ option ¾ÆÀÌÄÜÀ» Ŭ¸¯Çϸé <±×¸² 2>ÀÇ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª´Âµ¥ ¿©±â¼­µµ READ ½ºÄÉÁìÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

 

<±×¸² 2> MODBUS µå¶óÀ̹öÀÇ Åë½Å Àб⠼³Á¤ ´ëÈ­»óÀÚ

 

<±×¸² 2>ÀÇ edit, add, delete ¹öÅÏ°ú ¸®½ºÆ® ¹Ú½º¸¦ ÀÌ¿ëÇÏ¿© READ ½ºÄÉÁìÀ» ÀÛ¼ºÇÑ´Ù.

<±×¸² 2>ÀÇ ¡®Check CRC Error¡¯ ºÎºÐ¿¡¼­ ÀÐÀº ÆÐŶÀÇ CRC üũ¿©ºÎ, ¡®Bit Write On Val¡¯ ¿µ¿ª¿¡ ºñÆ® ON Ãâ·Â ½Ã ¾²±â °ª( ±âº» = 65280 ), ¡®Use Modbus IP Protocol¡¯ ¿¡¼­ MODBUS IP ÇÁ·ÎÅäÄÝ »ç¿ë¿©ºÎ, ¡®Bit Write Off Val¡¯ ¿µ¿ª¿¡ ºñÆ® OFF Ãâ·Â ½Ã ¾²±â °ª( ±âº» = 0 ), ¡®Don¡¯t Use WORD Unit Read Size¡¯ ¿µ¿ª¿¡ DWORD/FLOAT µîÀÇ °ªÀ» ÀÐÀ» ¶§ ÀÐÀ» Å©±â¸¦ WORD ´ÜÀ§ ºñ »ç¿ë¿©ºÎ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.

 

<±×¸² 3> MODBUS µå¶óÀ̹öÀÇ Åë½Å Àб⠼³Á¤ READ Ãß°¡/ÆíÁý ´ëÈ­»óÀÚÀÇ ¿¹

 

 

<±×¸² 3>´Â <±×¸² 2>ÀÇ ´ëÈ­»óÀÚ¿¡¼­ READ ½ºÄÉÁìÀ» Ãß°¡ ¶Ç´Â ÆíÁýÇÒ ¶§ ³ªÅ¸³ª´Â ´ëÈ­»óÀÚÀÌ´Ù.

 

2. ¾²±â ¼³Á¤

Ãâ·ÂÀº SCAN File°ú »ó°ü¾øÀÌ ÄÁÆ®·Ñ·¯ÀÇ Á÷Á¢ ADDRESS¿¡ ¾´´Ù.

 

µðÁöÅÐ Ãâ·Â ¼³Á¤¹ý

µðÁöÅÐ Ãâ·ÂÀ¸·Î ÀåºñÀÇ »óÅ °ª(reset µî)À» ¼³Á¤Çϰųª Relay µîÀ» Á¦¾îÇÒ ¼ö ÀÖ´Ù.

 

µðÁöÅÐ Ãâ·Â TAG ¼³Á¤ ½Ã ÇÊ¿äÇÑ ¿ä¼Ò

1) PORT           ¿¬°áµÈ PORT ¹øÈ£.

2) STATION      ÀåºñÀÇ ½ºÅ×À̼Ç( ID ) ¹øÈ£.

½Ã¸®¾ó Åë½Å - 1 ~ 247,

TCP/IP – 100, 255 µî.

3) Address      Ãâ·Â ¹øÁö. 10Áø¼ö ´ÜÀ§ÀÇ Ãâ·Â¹øÁö. (Address, Modbus Register ¹øÁö – 1 )

4) Extra1          Ãâ·ÂÇÏ°íÀÚ ÇÏ´Â µ¥ÀÌÅÍ Á¾·ù. (Function Code, 5 = Single Coil)

5 – WORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â,

5) Extra2          »ç¿ë¾ÈÇÔ.

 

¿¹1) Station : 1  Address : 0100  Extra1 : 5, EXTRA2 : ºóÄ­À¸·Î ¼³Á¤ÇÏ°í µðÁöÅÐ ON Ãâ·ÂÀ» Çϸé 1¹ø Station MODBUS ÀåºñÀÇ 100 ¹øÁö (Modbus 101¹ø Register ¹øÁö ) °ªÀ» Åë½Å ÇÁ·Î±×·¥ÀÇ ¿É¼Çâ¿¡¼­ ¼³Á¤ÇÑ Bit Write On Value ¼³Á¤ÇÑ °ª(±âº» 65280, 0xFF00)À¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

 

¿¹2) Station : 1  Address : 0100  Extra1 : 5, EXTRA2 : ºóÄ­À¸·Î ¼³Á¤ÇÏ°í µðÁöÅÐ OFF Ãâ·ÂÀ» Çϸé 1¹ø Station MODBUS ÀåºñÀÇ 100 ¹øÁö (Modbus 101¹ø Register ¹øÁö ) °ªÀ» Åë½Å ÇÁ·Î±×·¥ÀÇ ¿É¼Çâ¿¡¼­ ¼³Á¤ÇÑ Bit Write On Value ¼³Á¤ÇÑ °ª(±âº» 0, 0x0000)À¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

 

¾Æ³¯·Î±× Ãâ·Â ¼³Á¤¹ý

¾Æ³¯·Î±× Ãâ·ÂÀº BYTE/WORD/DWORD/FLOAT °ªÀ» ¸ÞŸ¿¡ ¾²´Â °ÍÀ» ¸»ÇÑ´Ù.

 

¾Æ³¯·Î±× Ãâ·Â TAG ¼³Á¤ ½Ã ÇÊ¿äÇÑ ¿ä¼Ò

1) PORT           ¿¬°áµÈ PORT ¹øÈ£.

2) STATION      ÀåºñÀÇ ½ºÅ×À̼Ç( ID ) ¹øÈ£.

½Ã¸®¾ó Åë½Å - 1 ~ 247,

TCP/IP – 100, 255 µî.

3) Address      Ãâ·Â ¹øÁö. 10Áø¼ö ´ÜÀ§ÀÇ Ãâ·Â¹øÁö. (Address, Modbus Register ¹øÁö – 1 )

4) Extra1          Ãâ·ÂÇÏ°íÀÚ ÇÏ´Â µ¥ÀÌÅÍ Á¾·ù. (Function Code,  6 = Single Register, 16 = Multiple Register)

16 – WORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â,

16D – DWORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16d – DWORD ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16lD, 16LD – 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16ld, 16Ld – 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16M – HI WORD x 10000 + LO WORD Çü½ÄÀÇ DWORD µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16m – HI WORD x 10000 + LO WORD Çü½ÄÀÇ DWORD µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16lM, 16LM – HI WORD x 10000 + LO WORD Çü½ÄÀÇ 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16lm, 16Lm – HI WORD x 10000 + LO WORD Çü½ÄÀÇ 8 BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16s – 16 BYTE BCD ASCII µ¥ÀÌÅÍ ¾²±â,

16F – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16F2 – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø 2 ),

16f – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16f2 – FLOAT ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø 2 ),

16U – DOUBLE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16u – DOUBLE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ), 

16B – BYTE ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾²±â,

16H_TIME – HICM Àåºñ¿¡ ÄÄÇ»ÅÍÀÇ ÇöÀç½Ã°£ Àü¼Û. (³â, ¿ù, ÀÏ, ½Ã, ºÐ, ÃÊ, °¢ 1¿öµå¾¿ 6¿öµå¸¦ Àü¼Û, ¾Æ³¯·Î±× ¾²±â¸¸ »ç¿ë)

5) Extra2          ¸ÖƼ ¾Æ³¯·Î±× °ª ¾²±â/ºñ±³ ¼³Á¤

1 = ¸ÖƼ ¾²±â °ª ÀúÀå,  ( Extar1 ¿µ¿ªÀº »ó°ü¾ÈÇÔ )

2 = ÇöÀç ÀúÀåµÈ °ªÀ¸·Î ¸ÖƼ ¾²±â °ª ¾²±â, ( ÇöÀç ¼³Á¤ÇÑ ¹øÁöºÎÅÍ ÀúÀåµÈ °³¼ö ¸¸Å­ ¿¬¼Ó ¾²±â )

3 = ¸ÖƼ ¾²±â °ªÀ¸·Î ÀúÀåµÈ ¸ðµç ³»¿ëÀ» »èÁ¦, ( Extar1 ¿µ¿ªÀº »ó°ü¾ÈÇÔ )

4 = ÇöÀç ÀúÀåµÈ °ª°ú PLC ¸Þ¸ð¸® ¹øÁö °ªÀ» ºñ±³, ( ÇöÀç ¼³Á¤ÇÑ ¹øÁöºÎÅÍ ÀúÀåµÈ °³¼ö ¸¸Å­ ¿¬¼Ó ¾²±â )

±âŸ °ª( 0 ¶Ç´Â 4º¸´Ù Ŭ ¶§ ) = ÀϹÝ( ÇϳªÀÇ ) ¾Æ³¯·Î±× °ª ¾²±â

 

 

¿¹1) Station : 1  Address : 0100  Extra1 : 16, EXTRA2 : ºóÄ­À¸·Î ¼³Á¤ÇÏ°í ¾Æ³¯·Î±× Ãâ·ÂÀ» Çϸé 1¹ø Station MODBUS ÀåºñÀÇ 100 ¹øÁö ( Modbus 101¹ø Register ¹øÁö ) °ªÀ» ¼³Á¤ÇÑ °ªÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

 

¿¹2) Station : 1  Address : 5000  Extra1 : 16d, EXTRA2 : ºóÄ­À¸·Î ¼³Á¤ÇÏ°í ¾Æ³¯·Î±× Ãâ·ÂÀ» Çϸé 1¹ø Station MODBUS ÀåºñÀÇ 5000 ¹øÁö ( Modbus 5001¹ø Register ¹øÁö ) °ªÀ» ¼³Á¤ÇÑ °ªÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

 

 

¸ÖƼ ¿öµå ¾²±â ¼³Á¤À» À§ÇÑ ½ºÅ©¸³Æ® ÀÛ¼º ¿¹)

$AO_0000.Extra2 = 3;                                            // ÀÌÀü¿¡ ÀúÀåµÈ ¸ÖƼ ¾²±â °ª »èÁ¦

@SetTagValue("AO_0000", 0);

 

$AO_0000.Extra2 = 1;                                            // ¸ÖƼ ¾²±â °ª ÀúÀåÀ¸·Î ¼³Á¤

for(i = 0; i < 50; i = i + 1) {

   @sprintf($AO_0000.Extra1, "%03d", i);               // Extra1 ¿¡ ÀÓÀÇÀÇ °ªÀ» ³Ö¾î¼­ µ¿ÀÏÇÑ µ¥ÀÌÅ͸¦ ¹«½ÃÇÏÁö ¾Êµµ·Ï ¼³Á¤

   @SetTagValue("AO_0000", 5000);                      // ½ÇÁ¦ Ãâ·Â °ª ÀúÀå, ¿©±â¼­´Â 5000 À¸·Î ÀÓÀÇ ÀúÀå

}

@sprintf($AO_0000.Extra1, "16");              // Ãâ·ÂÇÒ µ¥ÀÌÅÍ Á¾·ù = WORD ´ÜÀ§·Î ¼³Á¤

$AO_0000.Extra2 = 2;                                            // ¸ÖƼ °ª ¾²±â ÁöÁ¤

@SetTagValue("AO_0000", 1);                               // °ª ¾²±â, 50°³ °ªÀ» ÁöÁ¤ÇÑ ¹øÁöºÎÅÍ Ãâ·Â

 

 

PLC¿¡ ÇöÀç °ª°ú ¸Þ¸ð¸® °ªÀÌ µ¿ÀÏÇÑÁö¸¦ È®ÀÎÇϱâ À§ÇÑ ½ºÅ©¸³Æ® ÀÛ¼º ¿¹)

$AO_CHECK_MEM_SET = 2;                                     // ºñ±³¿Ï·á È®ÀÎÀ» À§ÇÑ WORD ¹øÁö¸¦ 2·Î ¼³Á¤

for(i = 0; i < 1; ) {

   if($AI_CHECK_WRITE_STATUS == 2) i = 10;           // 2ÀÇ °ª ¾²±â°¡ ¿Ï·áµÇ¾ú´Ù.

   @TagCheckLoop();                                             // ÅÂ±× °ª º¯°æ È®ÀÎ ÇÔ¼ö

}

 

$AO_0000.Extra2 = 3;                                                // ÀÌÀü¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ °ª »èÁ¦

@SetTagValue("AO_0000", 0);

 

$AO_0000.Extra2 = 1;                                                // µ¥ÀÌÅÍ °ª ÀúÀåÀ¸·Î ¼³Á¤

for(i = 0; i < 50; i = i + 1) {

   @sprintf($AO_0000.Extra1, "%03d", i);                   // Extra1 ¿¡ ÀÓÀÇÀÇ °ªÀ» ³Ö¾î¼­ µ¿ÀÏÇÑ µ¥ÀÌÅ͸¦ ¹«½ÃÇÏÁö ¾Êµµ·Ï ¼³Á¤

   @SetTagValue("AO_0000", 5000);                         // ºñ±³ÇÒ °ª ÀúÀå, ¿©±â¼­´Â 5000 À¸·Î ÀÓÀÇ ÀúÀå

}

@sprintf($AO_0000.Extra1, "16");                               // ºñ±³ÇÒ µ¥ÀÌÅÍ Á¾·ù = WORD·Î ¼³Á¤

$AO_0000.Extra2 = 4;                                                // ÀÚ·á °ª ºñ±³ ÁöÁ¤

@SetTagValue("AO_0000", 1);                                   // ÁöÁ¤ÇÑ ¹øÁöºÎÅÍ, ÀÔ·ÂÇÑ ¼ö ¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ ºñ±³Ç϶ó´Â ¸í·É

 

for(i = 0; i < 1; ) {

   if($AI_CHECK_WRITE_STATUS == 1) i = 10;           // ºñ±³ÇÑ °á°ú 1 = µ¿ÀÏ µ¥ÀÌÅÍ

   if($AI_CHECK_WRITE_STATUS == 0) {                  // ºñ±³ÇÑ °á°ú 0 = ´Ù¸¥ µ¥ÀÌÅÍ Á¸Àç

      @MessageBox("ºñ±³ ÀÚ·áÀÇ ³»¿ëÀÌ ¼­·Î ´Ù¸¨´Ï´Ù.", "ÀÚ·áºñ±³ ¿¡·¯", MB_OK);

      return;

   }

   @TagCheckLoop();                                             // ÅÂ±× °ª º¯°æ È®ÀÎ ÇÔ¼ö

}

@MessageBox("ºñ±³ÇÑ ÀÚ·áÀÇ ³»¿ëÀÌ µ¿ÀÏÇÕ´Ï´Ù.", "ÀÚ·áºñ±³ ¿Ï·á", MB_OK);

 

 

ºñ±³¸¦ À§ÇÑ ½ºÅ©¸³Æ® ÀÛ¼º ½Ã ÁÖÀÇÁ¡)

1) ºñ±³ °á°ú´Â ¿É¼Ç¿¡¼­ ¼³Á¤ÇÑ WORD ¸Þ¸ð¸® ¹øÁö¿¡ 1 ( µ¿ÀÏ µ¥ÀÌÅÍ ), 0 ( ¼­·Î ´Ù¸¥ µ¥ÀÌÅÍ )À¸·Î ÀúÀå.

2) ÀåºñÀÇ ÇöÀç °ª°ú ºñ±³Çϱâ Àü¿¡ ¼³Á¤ÇÑ WORD ¹øÁö¿¡ 1, 0 ÀÌ¿ÜÀÇ °ªÀ»( ¿¹ ¿¡¼­´Â 2ÀÇ °ª ) ¸ÕÀú ÀÔ·ÂÇÏ¿© ºñ±³°á°ú¸¦ È®ÀÎ.

3) AO_CHECK_MEM_SET ¾Æ³¯·Î±× Ãâ·Âű״ ¿É¼Ç¿¡¼­ ¼³Á¤ÇÑ WORD ¹øÁö¸¦ °­Á¦·Î Ãâ·ÂÇϵµ·Ï ¼³Á¤ ( Extra1 = #MEM# À¸·Î ¼³Á¤ )

4) AI_CHECK_WRITE_STATUS ¾Æ³¯·Î±× ÀÔ·Âű״ PLC_SCAN ű׷Π¼³Á¤ÇÑ WORD ¹øÁö¿¡ ¸ÂÃá´Ù.

 

 

ºí·Ï ¾²±â

ºí·Ï¾²±â´Â ½ºÅ©¸³Æ®ÀÇ PlcScanWriteBlock ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÑ´Ù.

½ºÅ©¸³Æ® À̸§°ú Çü½Ä : @PlcScanWriteBlock(int port, int station, int address, string extra1, string extra2, object array_value, int array_size);

   ½ºÅ©¸³Æ® ÀÛ¼º ¿¹

             ushort   writeVal[5];

 

            writeVal[0] = 1;

            writeVal[1] = 2;

            writeVal[2] = 3;

            writeVal[3] = 4;

            writeVal[4] = 5;

            @PlcScanWriteBlock(0, 1, 5, ¡°16¡±, ¡°¡±, writeVal, 5);

 

Modbus Åë½Å µå¶óÀ̺êÀÇ ºí·Ï ¾²±âÀÇ Extra1 ÀÎÀÚ´Â ´ÙÀ½°ú °°Àº Á¾·ù Áß¿¡¼­ ¼³Á¤ÇÑ´Ù. (16 ÀÌ¿ÜÀÇ Function µµ ¼³Á¤ °¡´É, Function ÀÌ ¡®0¡¯ ÀÌ¸é ±âº»À¸·Î 16( 10h )À¸·Î ¼³Á¤ÇÔ)

16 – WORD ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â,

16D – DWORD ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16d – DWORD ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16lD, 16LD – 8 BYTE ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16ld, 16Ld – 8 BYTE ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16M – HI WORD x 10000 + LO WORD Çü½ÄÀÇ DWORD ºí·Ï µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16m – HI WORD x 10000 + LO WORD Çü½ÄÀÇ DWORD ºí·Ï µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16lM, 16LM – HI WORD x 10000 + LO WORD Çü½ÄÀÇ 8 BYTE ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16lm, 16Lm – HI WORD x 10000 + LO WORD Çü½ÄÀÇ 8 BYTE ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16F – FLOAT ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø ),

16F2 – FLOAT ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( LO, HI µ¥ÀÌÅÍ ¼ø 2 ),

16f – FLOAT ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø ),

16f2 – FLOAT ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â ( HI, LO µ¥ÀÌÅÍ ¼ø 2 ),

16B – BYTE ´ÜÀ§ÀÇ ºí·Ï µ¥ÀÌÅÍ ¾²±â,

 

Áß¿ä) ºí·Ï ¾²±â´Â 10.1.4.3 ÀÌ»óÀÇ ÇÁ·Î±×·¥¿¡¼­¸¸ Áö¿øÇÑ´Ù. Çѹø¿¡ ÃÖ´ë 250°³ÀÇ µ¥ÀÌÅÍ ¾²±â°¡ °¡´ÉÇÕ´Ï´Ù.

 

[Âü°í] MODBUS ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â Àåºñ

(ÁÖ)Áß¾ÓÁ¦¾î - NV4016A