MQTTClient Åë½Åµå¶óÀ̹ö´Â MQTT ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ ÁÖ°í¹Þ±â À§ÇÑ Åë½Å µå¶óÀ̺êÀÌ´Ù.
¾Æ·¡ÀÇ Àб⼳Á¤À¸·Î MQTT Subscribe(±¸µ¶) , ¾²±â¼³Á¤À¸·Î MQTT Publish(¹ßÇà) ±â´ÉÀ» Áö¿øÇÑ´Ù.
ÁÖÀÇ) 1. paho-mqtt3as.dll ÆÄÀÏÀ» PLC_SCAN.exe °¡ À§Ä¡ÇÑ Æú´õ³ª PROTOCOL Æú´õ¿¡ À§Ä¡½ÃÄÑ¾ß ÇÑ´Ù. (EPL-2.0 ¶óÀ̼¾½º) (Autobase 10.3.6.21 ºÎÅÍ ±âº» ¹èÄ¡)
2. ssleay32.dll, libeay32.dll ÆÄÀÏÀ» PLC_SCAN.exe °¡ À§Ä¡ÇÑ Æú´õ¿¡ À§Ä¡½ÃÄÑ¾ß ÇÑ´Ù. (Autobase 10.3.6.21 ºÎÅÍ ±âº» ¹èÄ¡)
3. msvcp90d.dll ÆÄÀÏÀ» PROTOCOL\Microsoft.VC90.DebugCRT Æú´õ¿¡ À§Ä¡½ÃÄÑ¾ß ÇÑ´Ù. (Autobase 10.3.6.21 ºÎÅÍ ±âº» ¹èÄ¡)
>> MQTTClient Åë½Åµå¶óÀ̹ö °ü·Ã ¼³Ä¡Æú´õ·Î À̵¿
4. Visual Studio 2015¿ë Visual C++ Àç¹èÆ÷ °¡´É ÆÐŰÁö( vc_redist.x86.exe )¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù.
https://www.microsoft.com/ko-kr/download/details.aspx?id=48145
<±×¸² 1>Àº MQTTClient Åë½Å µå¶óÀ̹ö¸¦ »ç¿ëÇÏ¿© Åë½ÅÆÄÀÏÀ» ÆíÁýÇÑ ¿¹½ÃÀÌ´Ù.
|
<±×¸² 1> MQTTClient Åë½Å µå¶óÀ̹öÀÇ Åë½ÅÆÄÀÏ ÆíÁý ¿¹ |
<±×¸² 1>¿¡¼ MQTTClient Åë½Å µå¶óÀ̹öÀÇ Åë½ÅÆÄÀÏÀ» ¾Æ·¡ Á¤º¸¿¡ ¸Â°Ô ÆíÁýÇÑ´Ù.
µð¹ÙÀ̽º : None.
ÀбâÁÖ±â : ÀбâÁֱ⸶´Ù ¸Þ½ÃÁö¼ö½ÅȽ¼ö °»½Å, ¿¡·¯¹ß»ý ¹× ¿¬°á»óÅ ȮÀÎÀÌ ÀÌ·ç¾îÁö¹Ç·Î ÃÖ´ëÇÑ Âª°Ô ¼³Á¤ÇÑ´Ù. (1ÃÊ ÀÌÇÏ)
¸Þ½ÃÁö¼ö½ÅÀº º°µµÀÇ ½º·¹µå¿¡¼ ÀÌ·ç¾îÁö¹Ç·Î, ÀбâÁÖ±â¿Í °ü°è¾øÀÌ ¼ö½Å ½Ã Áï½Ã ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù.
¾²±âÁÖ±â : ¾²±âÁֱ⸶´Ù ¸Þ½ÃÁö¹ßÇà(Publish) °¡ ÀÌ·ç¾îÁö¹Ç·Î, ÃÖ´ëÇÑ Âª°Ô ¼³Á¤ÇÑ´Ù.
Àбâ½Ã°£Ãʰú : ¿¬°á½ÇÆÐ ½Ã À翬°á ½Ãµµ ÁÖ±âÀ̹ǷÎ, 2ÃÊ ~ 60ÃÊ »çÀÌ·Î ¼³Á¤ÇÑ´Ù.
¾²±â½Ã°£Ãʰú : »ç¿ë¾ÈÇÔ.
¶ÇÇÑ ¿É¼Ç ºÎ¿¡´Â ¿¬°áÇÒ MQTT BrokerÀÇ host, port, SSL »ç¿ë¿©ºÎ ¸¦ ÄÞ¸¶( , )·Î ±¸ºÐÇÏ¿© ÀÔ·ÂÇÑ´Ù.
ÁÖÀÇ) ±âº»°ªÀº broker.mqtt-dashboard.com, 1883, 0, ÀÌ´Ù.
( ÀÌ ÁÖ¼Ò´Â HIVEMQ »çÀÇ °ø°³ MQTT Broker À̹ǷÎ, ÅäÇȰú ¸Þ½ÃÁö ³»¿ëÀÌ ¸ðµÎ °ø°³µÈ´Ù.)
( ÀÌ ÁÖ¼Ò´Â Test ¿ëµµ·Î »ç¿ëÇϰí, ÇöÀå¿¡¼ »ç¿ëÇÏ´Â ¼¹ö³ª ÀÚüÀûÀ¸·Î ±¸ÃàÇÑ MQTT Broker ÁÖ¼Ò·Î º¯°æÇϵµ·Ï ÇÑ´Ù. )
MQTTClient µå¶óÀ̹öÀÇ Àбâ ÀÛ¼º Çü½Ä
MQTTClient Åë½Å µå¶óÀ̹öÀÇ Àбâ¿äû¹®Àº 'READ' ¸¸ ÀÛ¼ºÇÑ´Ù.
Àб⠼³Á¤ ¿¹)
READ,
<±×¸² 1> ÇÁ·ÎÅäÄÝ ¿É¼ÇºÎÀÇ
¾ÆÀÌÄÜÀ» Ŭ¸¯Çϸé <±×¸² 2>ÀÇ ´ëÈ»óÀÚ°¡ ³ªÅ¸³ª´Âµ¥ ¿©±â¼
±¸µ¶(Subscribe) ÇÒ ÁÖÁ¦(Topic) ¸ñ·ÏÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
±¸µ¶ ¸ñ·Ï(Subscribe Items)Àº ÁÖÁ¦(Topic), ¼ºñ½ºÇ°Áú(QoS), ÀúÀåÇÒ Åë½ÅÇÁ·Î±×·¥ À§Ä¡(SaveBufferAddress)¸¦ ÄÞ¸¶( , ) ·Î ±¸ºÐÇÏ¿© ÀÔ·ÂÇÑ´Ù.
ÀÛ¼ºÇÑ ±¸µ¶¸ñ·ÏÀº \SCAN\SUBSCRIBE%03d.txt ÇüÅ·ΠÀúÀåµÇ°í, Åë½Å ½ÃÀÛ ½Ã ÇѲ¨¹ø¿¡ ±¸µ¶ÀÌ ½ÃÀ۵ȴÙ.
±¸µ¶¸ñ·ÏÀÇ ÁÖÁ¦°¡ Áߺ¹µÉ °æ¿ì, ÀÐÀº ¸Þ½ÃÁö´Â ¸ÕÀú ÀÛ¼ºÇÑ ¼ø¼ÀÇ ¸Þ¸ð¸®ÁÖ¼Ò¿¡ ÀúÀåµÈ´Ù.
¿ÍÀϵåÄ«µå( + , # ) ¹®ÀÚ´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.
¶ÇÇÑ, Á¢¼ÓÇÒ MQTT Broker Host, Port, SSL »ç¿ë¿©ºÎ, SSL ÀÎÁõ¼ °æ·Î(CA File, Cert File, pritvateKey), Username, Password ¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
Host : ¿¬°áÇÒ MQTT BrokerÀÇ host
Port : ¿¬°áÇÒ MQTT BrokerÀÇ port
Use SSL : TLS/SSL ¿¬°á »ç¿ë¿©ºÎ
CA File : ¼¹ö¿ë ÀÎÁõ¼ °æ·Î (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)
Cert File : Ŭ¶óÀÌ¾ðÆ®¿ë ÀÎÁõ¼ °æ·Î (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)
privateKey : Ŭ¶óÀÌ¾ðÆ®¿ë °³ÀΠŰ °æ·Î (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)
Username : Ŭ¶óÀÌ¾ðÆ® ID (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)
Password : Ŭ¶óÀÌ¾ðÆ® Password (»ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ºñ¿öµÒ.)
|
<±×¸² 2> MQTTClient Åë½Å µå¶óÀ̹öÀÇ ¿É¼Ç ´ëÈ»óÀÚÀÇ |
MQTTClient Åë½Å µå¶óÀ̹öÀÇ ÀÐÀº °ªÀº WORD/DWORD/FLOAT/DOUBLE/STRING ¸Þ¸ð¸®¿¡ µ¿ÀÏÇÑ °ª(ÀúÀåÇü½Ä¸¸ ´Ù¸§)ÀÌ ÀúÀåµÈ´Ù.
´Ü, ¼ö½ÅµÈ ¸Þ½ÃÁö°¡ 255ÀÚ¸¦ ÃʰúÇÒ °æ¿ì, "[ÇÁ·ÎÁ§Æ®°æ·Î]\SCAN\MQTT\[ÅäÇȸí].txt ÆÄÀÏ¿¡ ¸Þ½ÃÁö°¡ ÀúÀåµÈ´Ù. (ÅäÇȸíÀÇ ½½·¡½Ã ( / ) ¹®ÀÚ´Â ¹ØÁÙ ( _ ) ·Î ġȯµÈ´Ù.)
±×¸®°í ÀúÀåÇÒ ¸Þ¸ð¸®(STRING) À§Ä¡¿¡ ÇØ´ç °æ·Î¸íÀÌ ÀúÀåµÈ´Ù.
MQTTClient µå¶óÀ̹öÀÇ ¾²±â ¼³Á¤À¸·Î MQTT ¹ßÇà(Publish) ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
2-1 . µðÁöÅÐ ¾²±â
µðÁöÅÐ ¾²±â ±â´ÉÀº Áö¿øÇÏÁö ¾Ê´Â´Ù.
2-2. ¾Æ³¯·Î±× ¾²±â
¾Æ³¯·Î±× ¾²±â¸¦ À§ÇÑ ¾Æ³¯·Î±× Ãâ·Â ÅÂ±× ¼³Á¤ ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
1) Port ¿¬°áµÈ Åë½ÅÆ÷Æ® ¹øÈ£. (COM ¹øÈ£°¡ ¾Æ´Ô)
2) Station retain ±â´É »ç¿ë À¯¹«. ( 0 ¶Ç´Â 1)
3) Address »ç¿ë¾ÈÇÔ.
4) Extra1 ¹ßÇà(Publish)ÇÒ ÁÖÁ¦¸í(Topic name)
5) Extra2 QoS(Quality of Service) (0 , 1 , 2 Áß ¼±ÅÃ.)
¿¹Á¦
1)
PORT : 0 STATION : 1 ADDRESS : 0 EXTRA1 : Autobase/gr1/AI_0000 EXTRA2 : 10 À¸·Î ¼³Á¤ÇÏ°í ¾Æ³¯·Î±× Ãâ·ÂÀ» Çϸé ÅäÇÈ : Autobase/gr1/AI_0000, °ª : 10 À» ¹ßÇàÇÑ´Ù. (Retain ON)
¿¹Á¦ 2)
@PlcScanWriteWord(0, 1, 0, "my/test/topic1", 0, 1.1); // ÅäÇÈ : my/test/topic1, °ª : 1.1 À» ¹ßÇàÇÑ´Ù. (Retain ON)
¿¹Á¦ 3)
@PlcScanWriteWord(0, 0, 0, "Autobase/gr1/DI_0000", 0, $DI_0000); // ÅäÇÈ : Autobase/gr1/DI_0000, °ª : [$DI_0000 °ª] À» ¹ßÇàÇÑ´Ù. (Retain OFF)
2-3. ºí·Ï ¾²±â (¹®ÀÚ¿ ¸Þ½ÃÁö ¹ßÇà)
ºí·Ï¾²±â´Â ½ºÅ©¸³Æ®ÀÇ @PlcScanWriteBlock ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÑ´Ù.
½ºÅ©¸³Æ® À̸§°ú Çü½Ä : @PlcScanWriteBlock(int port, int station, int address, string extra1, int extra2, object array_value, int array_size);
MQTTClient ÇÁ·ÎÅäÄÝ¿¡¼´Â ´ÙÀ½ Çü½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù.
@PlcScanWriteBlock(int port, int retain, 0, string topic, int QoS, object array_value, int array_size);
¿¹Á¦ 1)
@strcpy(buf, "Test Value");
size = @strlen(buf);
@PlcScanWriteBlock(0, 1, 0, "my/test/topic1", 0, buf,
size); // ÅäÇÈ : my/test/topic1 , ¸Þ½ÃÁö : Test Value ¸¦ ¹ßÇàÇÑ´Ù. (Retain ON)
¿¹Á¦ 2)
@strcpy(buf, $ST_0000);
size
= @strlen(buf);
@PlcScanWriteBlock(0, 0, 0, "Autobase/Alarm/msg1", 0, buf,
size); // ÅäÇÈ : Autobase/Alarm/msg1 , ¸Þ½ÃÁö : [¹®ÀÚ¿ÅÂ±× $ST_0000ÀÇ °ª] À»
¹ßÇàÇÑ´Ù. (Retain ON)