ÕªÒª£º±¾ÎÄ·ÖÎöÁËWindows»·¾³Ï´®ÐÐͨÐŵıà³Ì¼¼Êõ£¬½éÉÜÁËÔÚWindows»·¾³ÏÂÓÃVB6.0ÓïÑÔ±àд´®ÐÐͨÐųÌÐò£¬ÊµÏÖÁËPC»úÓëÈýÁâ Q00PLC Ö®¼äµÄ´®ÐÐͨÐÅ£¬²¢Ìá³öÁËÔÚʵ¼ÊÓ¦ÓÃÖÐÌá¸ß´®ÐÐͨÐÅÐÔÄܵķ½·¨¡£
¹Ø¼ü´Ê£ºVB£»Win32APIº¯Êý£»´®ÐÐͨÐÅ£»Q00PLC Ò» ¸ÅÊö
ÔÚ¹¤Òµ¿ØÖÆÖÐ,´®¿ÚÊdz£ÓõļÆËã»úÓëÍⲿ´®ÐÐÉ豸֮¼äµÄÊý¾Ý´«ÊäͨµÀ¡£ÓÉÓÚ´®ÐÐͨÐŽṹ¼òµ¥¡¢¿É¿¿ÐÔÇ¿¡¢ÊµÏÖ¼°Ê¹Óóɱ¾µÍ¡¢Í¨Ñ¶±ê׼ͳһ£¬Òò´ËÔÚ²â¿ØÏµÍ³ºÍ¹¤³ÌÖÐÓ¦ÓÃÊ®·Ö¹ã·º¡£Ä¿Ç°WindowsÔÚ¹¤ÒµÉú²ú¼à¿Ø¹ÜÀíϵͳÖÐÒѳÉΪÖ÷Á÷ƽ̨ £¬Windows»·¾³ÏµÄÉÏ¡¢ÏÂλ»úÖ®¼äµÄ´®ÐÐͨÐÅÊÇÉè¼ÆÓ뿪·¢¼à¿Ø¹ÜÀíϵͳºÍ¼¯É¢¿ØÖÆÏµÍ³µÄÖØÒª×é³É²¿·Ö¡£
Microsoft¹«Ë¾µÄVB++6.0ÊÇÒ»Öָ߼¶±à³ÌÓïÑÔ£¬ËüÌṩµÄ´®ÁÐͨÐſؼþ·â×°ÁË·â×°ÁËWin32APIÖеıê׼ͨÐź¯Êý£¬¿ÉÒÔÈÿª·¢Õß·½±ã¿ª·¢´®ÁÐͨÐÅÉÏλ»ú³ÌÐò¡£
PLCÊÇÏÖÔÚ¿ØÖÆÁìÓò²»¿ÉȱÉٵIJ¿·Ö£¬ÒѾ·Ç³£ÆÕ¼°£¬ÈçºÎ¼ò±ãµÄÓëPLC½»»¥ÒѾ³ÉΪÖÚ¶à³§ÉÌеľºÕùÕ½³¡¡£Óɴ˲úÉúÁËÈË»ú½çÃæ¡¢×é̬Èí¼þµÈ²úÆ·¡£ÕâЩ²úÆ·µÄ²úÉú´ó´ó¼ò»¯Á˶ÔPLCµÄ¿ØÖÆ£¬²Ù×÷£¬Ê¹Óøü·½±ã¡£µ«Ò²Óй²Í¬µÄȱµã£º¼Û¸ñ¹ý¸ßºÍ¿ª·ÅÐԽϲVB×÷Ϊ¡°Ôʼ£¢µÄ±à³ÌÓïÑÔÔÚÕâÁ½·½ÃæÎÞÒÉÓÐ×ÅÃ÷ÏÔµÄÓÅÊÆ¡£
¶þ ´®ÐÐͨÐÅ
´®ÐÐͨÐÅÊÇÖ¸¼ÆËã»úÖ÷»úÓëÍâÉèÖ®¼äÒÔ¼°Ö÷»úϵͳÓëÖ÷»úϵͳ֮¼äÊý¾ÝµÄ´®Ðд«ËÍ¡£Ê¹Óô®¿ÚͨÐÅʱ£¬·¢ËͺͽÓÊÕµ½µÄÿһ¸ö×Ö·ûʵ¼ÊÉ϶¼ÊÇÒ»´ÎһλµÄ´«Ë͵ģ¬Ã¿Ò»Î»Îª1»òÕßΪ0¡£
2.1 ´®ÐÐͨÐŵķÖÀà
´®ÐÐͨÐÅ¿ÉÒÔ·ÖΪͬ²½Í¨ÐźÍÒ첽ͨÐÅÁ½Àࡣͬ²½Í¨ÐÅÊǰ´ÕÕÈí¼þʶ±ðͬ²½×Ö·ûÀ´ÊµÏÖÊý¾ÝµÄ·¢ËͺͽÓÊÕ£¬Ò첽ͨÐÅÊÇÒ»ÖÖÀûÓÃ×Ö·ûµÄÔÙͬ²½¼¼ÊõµÄͨÐÅ·½Ê½¡£
2.1.1 ͬ²½Í¨ÐÅ
ͬ²½Í¨ÐÅÊÇÒ»ÖÖÁ¬Ðø´®Ðд«ËÍÊý¾ÝµÄͨÐÅ·½Ê½£¬Ò»´ÎͨÐÅÖ»´«ËÍÒ»Ö¡ÐÅÏ¢¡£ÕâÀïµÄÐÅÏ¢Ö¡ÓëÒ첽ͨÐÅÖеÄ×Ö·ûÖ¡²»Í¬£¬Í¨³£º¬ÓÐÈô¸É¸öÊý¾Ý×Ö·û¡£
ËüÃǾùÓÉͬ²½×Ö·û¡¢Êý¾Ý×Ö·ûºÍУÑé×Ö·û£¨CRC£©×é³É¡£ÆäÖÐͬ²½×Ö·ûλÓÚÖ¡¿ªÍ·£¬ÓÃÓÚÈ·ÈÏÊý¾Ý×Ö·ûµÄ¿ªÊ¼¡£Êý¾Ý×Ö·ûÔÚͬ²½×Ö·ûÖ®ºó£¬¸öÊýûÓÐÏÞÖÆ£¬ÓÉËùÐè´«ÊäµÄÊý¾Ý¿é³¤¶ÈÀ´¾ö¶¨£»Ð£Ñé×Ö·ûÓÐ1µ½2¸ö£¬ÓÃÓÚ½ÓÊն˶ԽÓÊÕµ½µÄ×Ö·ûÐòÁнøÐÐÕýÈ·ÐÔµÄУÑ顣ͬ²½Í¨ÐŵÄȱµãÊÇÒªÇó·¢ËÍʱÖӺͽÓÊÕʱÖÓ±£³ÖÑϸñµÄͬ²½¡£
2.1.2 Ò첽ͨÐÅ
Ò첽ͨÐÅÖУ¬ÔÚÒ첽ͨÐÐÖÐÓÐÁ½¸ö±È½ÏÖØÒªµÄÖ¸±ê£º×Ö·ûÖ¡¸ñʽºÍ²¨ÌØÂÊ¡£Êý¾Ýͨ³£ÒÔ×Ö·û»òÕß×Ö½ÚΪµ¥Î»×é³É×Ö·ûÖ¡´«ËÍ¡£×Ö·ûÖ¡ÓÉ·¢ËͶËÖðÖ¡·¢ËÍ£¬Í¨¹ý´«ÊäÏß±»½ÓÊÕÉ豸ÖðÖ¡½ÓÊÕ¡£·¢ËͶ˺ͽÓÊÕ¶Ë¿ÉÒÔÓɸ÷×ÔµÄʱÖÓÀ´¿ØÖÆÊý¾ÝµÄ·¢ËͺͽÓÊÕ£¬ÕâÁ½¸öʱÖÓÔ´±Ë´Ë¶ÀÁ¢£¬»¥²»Í¬²½¡£
½ÓÊն˼ì²âµ½´«ÊäÏßÉÏ·¢Ë͹ýÀ´µÄµÍµçƽÂß¼"0"£¨¼´×Ö·ûÖ¡Æðʼλ£©Ê±£¬È·¶¨·¢ËͶËÒÑ¿ªÊ¼·¢ËÍÊý¾Ý£¬Ã¿µ±½ÓÊÕ¶ËÊÕµ½×Ö·ûÖ¡ÖеÄֹͣλʱ£¬¾ÍÖªµÀÒ»Ö¡×Ö·ûÒѾ·¢ËÍÍê±Ï¡£
2.2 ¼¸ÖÖÁ÷ÐеĴ®ÐÐͨÐÅÐÒé
RS£232¡¢RS-422ºÍRS£485¶¼ÊÇ´®ÐÐÊý¾Ý½Ó¿Ú±ê×¼£¬×î³õ¶¼ÊÇÓɵç×Ó¹¤ÒµÐ»á£¨EIA£©Öƶ©²¢·¢²¼µÄ£¬RS-232ÔÚ1962Äê·¢²¼£¬ºóÀ´Â½ÐøÓв»ÉٸĽø°æ±¾£¬ÆäÖÐ×î³£ÓõÄÊÇRS-232-C°æ¡£
ĿǰRS-232ÊÇPC»úÓëͨÐŹ¤ÒµÖÐÓ¦ÓÃ×î¹ã·ºµÄÒ»ÖÖ´®Ðнӿڡ£RS-232±»¶¨ÒåΪһÖÖÔÚµÍËÙÂÊ´®ÐÐͨÐÅÖÐÔö¼ÓͨОàÀëµÄµ¥¶Ë±ê×¼¡£RS-232²ÉÈ¡²»Æ½ºâ´«Ê䷽ʽ£¬¼´Ëùνµ¥¶ËͨÐÅ¡£±ê×¼¹æ¶¨£¬RS£232µÄ´«Ë;àÀëÒªÇó¿É´ï50Ó¢³ß£¨Ô¼15Ã×£©£¬×î¸ßËÙÂÊΪ20kbps¡£

ͼ1 RS232¶Ë¿ÚµÄÓ²¼þÎÕÊÖºÍÁ¬½Ó·½Ê½
RS232µÄͨѶÐÅºÅµçÆ½ÎªÕý¸º5¡«15V£¬ÕⲻͬÓÚÊý×ֵ緵Ä0¡«3V»ò0¡«5V£¬ËùÒÔÒªÒÔRS232µÄ·½Ê½½øÐÐͨѶ£¬Ô´ÐźŲ»Æ¥ÅäʱÐèÒª½øÐеçѹת»»¡£
µ±½øÐÐÊý¾Ý´«ËÍʱ£¬Ö»ÓÃÒ»¸ùÊý¾ÝÏßÇÒÖ»ÄܽøÐе¥Ïò´«ÊäµÄ·½Ê½£¬³ÆÎªµ¥¹¤·½Ê½£» µ±½øÐÐÊý¾Ý´«ËÍʱ£¬Ö»ÓÃÒ»¸ùÊý¾ÝÏßÀûÓò»Í¬Ê±¶Î½øÐÐË«Ïò´«ÊäµÄ·½Ê½£¬³ÆÎª°ëË«¹¤·½Ê½£»µ±½øÐÐÊý¾Ý´«ËÍʱ£¬ÀûÓÃÁ½¸ùÊý¾ÝÏßͬʱ½øÐз¢ËͺͽÓÊյķ½Ê½£¬³ÆÎªÈ«Ë«¹¤·½Ê½¡£
ÓÉÓÚRS-232´æÔÚ´«Êä¾àÀëÓÐÏ޵Ȳ»×㣬ÓÚÊÇRS-422µ®ÉúÁË¡£RS-422±ê׼ȫ³ÆÊÇ¡°Æ½ºâµçѹÊý×Ö½Ó¿Úµç·µÄµçÆøÌØÐÔ¡±£¬Ëü¶¨ÒåÁËÒ»ÖÖÆ½ºâͨÐŽӿڣ¬½«´«ÊäËÙÂÊÌá¸ßµ½10Mbps£¬´«Êä¾àÀëÑÓ³¤µ½4000Ó¢³ß£¨Ô¼1219Ã×£©£¬²¢ÔÊÐíÔÚÒ»Ìõƽºâ×ÜÏßÉÏÁ¬½Ó×î¶à10¸ö½ÓÊÕÆ÷¡£µ±È»£¬RS£422Ò²ÓÐȱÏÝ: ÒòΪÆäƽºâË«½ÊÏߵij¤¶ÈÓë´«ÊäËÙÂʳɷ´±È£¬ËùÒÔÔÚ100kbpsËÙÂÊÒÔÄÚ£¬´«Êä¾àÀë²Å¿ÉÄÜ´ïµ½×î´óÖµ£¬Ò²¾ÍÊÇ˵£¬Ö»ÓÐÔں̵ܶľàÀëϲÅÄÜ»ñµÃ×î¸ß´«ÊäËÙÂÊ¡£Ò»°ãÔÚ100Ã׳¤µÄË«½ÊÏßÉÏËùÄÜ»ñµÃµÄ×î´ó´«ÊäËÙÂʽöΪ1Mbps¡£ÁíÍâÓÐÒ»µã±ØÐëÖ¸³ö£¬ÔÚRS-422ͨÐÅÖУ¬Ö»ÓÐÒ»¸öÖ÷É豸£¨Master£©£¬ÆäÓàΪ´ÓÉ豸£¨Salve£©£¬´ÓÉ豸֮¼ä²»ÄܽøÐÐͨÐÅ£¬ËùÒÔRS-422Ö§³ÖµÄÊǵã¶Ô¶àµãµÄË«ÏòͨÐÅ¡£
ΪÀ©Õ¹Ó¦Ó÷¶Î§£¬RSÓÚ1983ÄêÔÚRS-422»ù´¡ÉÏÖÆ¶¨ÁËRS-485±ê×¼£¬Ôö¼ÓÁ˶àµã¡¢Ë«ÏòͨÐÅÄÜÁ¦£¬¼´ÔÊÐí¶à¸ö·¢ËÍÆ÷Á¬½Óµ½Í¬Ò»Ìõ×ÜÏßÉÏ£¬Í¬Ê±Ôö¼ÓÁË·¢ËÍÆ÷µÄÇý¶¯ÄÜÁ¦ºÍ³åÍ»±£»¤ÌØÐÔ£¬À©Õ¹ÁË×ÜÏß¹²Ä£·¶Î§£¬ºóÃüÃûΪTIA/RS-485-A±ê×¼¡£
ÓÉÓÚRS-485ÊÇ´ÓRS-422»ù´¡ÉÏ·¢Õ¹¶øÀ´µÄ£¬ËùÒÔRS-485Ðí¶àµçÆø¹æ¶¨ÓëRS-422Ïà·Â£¬Èç¶¼²ÉÓÃÆ½ºâ´«Ê䷽ʽ¡¢¶¼ÐèÒªÔÚ´«ÊäÏßÉϽÓÖÕ½Óµç×è¡¢×î´ó´«Êä¾àÀëԼΪ1219Ãס¢×î´ó´«ÊäËÙÂÊΪ10MbpsµÈ¡£µ«ÊÇ£¬RS-485¿ÉÒÔ²ÉÓöþÏßÓëËÄÏß·½Ê½£¬²ÉÓöþÏßÖÆÊ±¿ÉʵÏÖÕæÕýµÄ¶àµãË«ÏòͨÐÅ£¬¶ø²ÉÓÃËÄÏßÁ¬½Óʱ£¬ÓëRS-422Ò»ÑùÖ»ÄÜʵÏÖµã¶Ô¶àµãͨÐÅ£¬µ«Ëü±ÈRS-422ÓиĽø£¬ ÎÞÂÛËÄÏß»¹ÊǶþÏßÁ¬½Ó·½Ê½×ÜÏßÉϿɽӶà´ï32¸öÉ豸¡£
ÈýÁâµÄ Q00PLC µÄͨѶ½Ó¿ÚΪRS232¡£
Èý ÈýÁâ Q00PLC µÄͨѶ·½Ê½
3.1 ͨѶÐÒé
ÈýÁâµÄ Q00PLC ²ÉÓÃÁÐ MELSEC ͨѶÐÒ飬¼´ MC ÐÒé¡£MCÐÒé²ÉÓÃÖ¡µÄÐÎʽ½øÐÐͨѶ£¬Ëü°üÀ¨ÒÔϼ¸ÖÖÐÎʽ£º
£¨1£©¡¢QnA ¼æÈÝ3C Ö¡¡£´ËÖÖÖ¡°üÀ¨1-4ÖÖ¸ñʽ¡£
£¨2£©¡¢QnA ¼æÈÝ4C Ö¡¡£´ËÖÖÖ¡°üÀ¨1-5ÖÖ¸ñʽ¡£
£¨3£©¡¢QnA ¼æÈÝ2C Ö¡¡£´ËÖÖÖ¡°üÀ¨1-4ÖÖ¸ñʽ¡£
£¨4£©¡¢QnA ¼æÈÝ3E Ö¡¡£´ËÖÖÖ¡°üÀ¨1-4ÖÖ¸ñʽ¡£
£¨5£©¡¢A ¼æÈÝ1E Ö¡¡£
3.2 ʵÏÖ·½Ê½
£¨1£© ÃüÁîÎļþµÄ·¢ËÍ
²ÉÓÃMC ÐÒé½øÐеÄÊý¾ÝͨѶ²ÉÓðëË«¹¤Í¨Ñ¶·½Ê½½øÐС£·ÃÎÊPLC CPU ʱ¶ÔÓÚ¸Õ¸Õ½øÐеÄÃüÁîÎļþ·¢ËÍÇëÔÚ½ÓÊÕPLC CPU ²à·¢Ë͵ÄÏìÓ¦Îļþºó·¢ËÍÏÂÒ»¸öÃüÁîÎļþ£¨ÔÚÏìÓ¦ÎļþµÄ½ÓÊÜÉÐδÍê³É֮ǰ²»ÄܽøÐÐÏÂÒ»¸öÃüÁîÎļþµÄ·¢ËÍ£©

ͼ2 ÃüÁîÎļþºÍÏìÓ¦µÄ˳Ðò
£¨2£© ¶ÔÓÚÃüÁîÎļþ²»ÄܽÓÊÕÕý³£½áÊøµÄÏìÓ¦Îļþʱ
½ÓÊÜÒì³£½áÊøµÄÏìÓ¦Îļþʱ£¬¿É¸ù¾ÝÏìÓ¦ÎļþÖеijö´í´úÂë½øÐд¦Àí
3.3 Q00PLC µÄÖ¡¸ñʽ
Q00PLCÄÚÖÃÁËMCͨѶÐÒéµÄQnA ¼æÈÝ3C Ö¡ºÍ RS232 ͨѶ½Ó¿Ú£¬ËùÒÔ²»ÓÃÍâ¼ÓͨѶģ¿é¾Í¿ÉÒÔʵÏÖÓëÉÏλ»úµÄͨѶ¡£±¾ÀýÄâ²ÉÓÃQnA ¼æÈÝ3C Ö¡µÄµÚ4ÖÖ¸ñʽ½øÐÐͨѶ¡£
3.3.1 ¶Ô·½É豸¶Á³öÉÏλվPLC CPU µÄÊý¾Ýʱ
a ÉÏλ»úÏò PLC CPU ²à´«ÊäÃüÁî´«ÊäÎļþ£¬ÏÂͼÖмýÍ·ËùÖ¸µÄÇøÓòΪÇëÇóÊý¾ÝÇø¡£

ͼ3 ¶ÁȡʱµÄ·¢ËÍÖ¡¸ñʽ
b PLC CPU ²àÏìÓ¦ÉÏλ»úµÄÓ¦´ð´«ÊäÎļþ£¬ÏÂͼÖмýÍ·ËùÖ¸µÄÇøÓòΪ´ÓPLCÖжÁ³ö²¢·µ»ØµÄÊý¾Ý

ͼ4 ·µ»ØµÄÖ¡¸ñʽ
3.3.2 ¶Ô·½É豸ÏòÉÏλվPLC CPU дÈëÊý¾Ýʱ
a Ö¡¸ñʽÓëͼ3ÖеĸñʽÀàËÆ£¬Ö»ÊÇÖ¡ÖеÄÃüÁîºÍ×ÓÃüÁîΪ¶ÁȡʱµÄÃüÁÇëÇóÊý¾ÝÇøÖÐÔö¼ÓÁËдÈëµÄÊý¾Ý¡£
b Ö¡¸ñʽÓëͼ34ÖеĸñʽÀàËÆ£¬Ö»ÊÇûÓзµ»ØµÄÊý¾Ý¡£
ËÄ Windows»·¾³Ï VB Óë Q00PLC ͨÐŵÄʵÏÖ
4.1 ϵͳ·ÖÎöÓë˵Ã÷
WindowsϵͳΪÿ¸öͨÐÅÉ豸¿ª±ÙÁËÓû§¶¨ÒåµÄÊäÈë/Êä³ö»º³åÇø£¬Êý¾Ý½ø³öͨÐſھùÓÉϵͳºǫ́À´Íê³É£¬Ó¦ÓóÌÐòÖ»ÐèÍê³É¶ÔÊäÈë/Êä³ö»º³åÇø²Ù×÷¾Í¿ÉÒÔÁË¡£Êµ¼Ê¹ý³ÌÊÇÿ½ÓÊÕÒ»¸ö×Ö·û¾Í²úÉúÒ»¸öµÍ¼¶Ó²¼þÖжϣ¬WindowsϵͳÖеĴ®ÐÐÇý¶¯³ÌÐò¾ÍÈ¡µÃÁË¿ØÖÆÈ¨£¬²¢½«½ÓÊÕµ½µÄ×Ö·û·ÅÈ뻺³åÇø£¬È»ºó½«¿ØÖÆÈ¨·µ»¹¸øÕýÔÚÔËÐеÄÓ¦ÓóÌÐò¡£Èç¹ûÊäÈ뻺³åÇøÊý¾ÝÒÑÂú£¬´®ÐÐÇý¶¯³ÌÐòÓõ±Ç°¶¨ÒåµÄÁ÷¿ØÖÆ»úÖÆÍ¨Öª·¢ËÍ·½Í£Ö¹·¢ËÍÊý¾Ý£¬¶ø¶ÓÁÐÖеÄÊý¾Ý°´ÏȽøÏȳö £¨FIFO£©µÄ´ÎÐò´¦Àí¡£
¡¡¡¡ÔÚWindowsÖУ¬´®ÐÐͨÐÅÓÐÁ½ÖÖ¹¤×÷·½Ê½£º²éѯ·½Ê½ºÍʼþÇý¶¯·½Ê½¡£²éѯ·½Ê½Õ¼ÓôóÁ¿µÄCPUʱ¼ä£¬Ð§Âʽϵͣ¬µ«ÊÇÊý¾Ý²»Ò×¶ªÊ§£»¶øWin32²Ù×÷ϵͳ»ùÓÚʼþÇý¶¯ £¨Ò²³ÆÎªÏûÏ¢Çý¶¯£©»úÖÆµÄÄںˣ¬Ö§³Ö»ùÓÚ½ø³ÌµÄÐͬʽ¶àÈÎÎñºÍ»ùÓÚ¶àÏ̵߳ÄÇÀÏÈʽ¶àÈÎÎñ¡£»ùÓÚʼþÇý¶¯µÄ¶àÏß³ÌÓ¦ÓóÌÐòʵ¼ÊÉÏÔÚÆäÄÚ²¿ÊµÏÖÁ˶àÈÎÎñÀ©Õ¹£¬Îª´úÂ븳ÓèÁ˲¢ÐÐÖ´ÐеÄÌØÐÔ£¬¿ÉÒÔʹӦÓóÌÐò¶ÔCPUµÄÀûÓÃÂÊ´ó´óÌá¸ß£¬´Ó¶øÌá¸ßϵͳµÄÏìÓ¦ÄÜÁ¦£¬¼Ó¿ìÐÅÏ¢´¦ÀíËÙ¶È£¬Ìá¸ßͨÐųÌÐòµÄʵʱÐÔºÍÔö´óÊý¾ÝÍÌÍÂÁ¿¡£
¡¡¡¡»ùÓÚÒÔÉÏ·ÖÎö£¬ÒÔʼþÇý¶¯·½Ê½ÊµÏÖWindowsϵĴ®ÐÐͨПü¾ßÓÅÊÆ£¬ËüÄÜÍê³É½Ï´óÊý¾ÝÁ¿µÄʵʱͨÐÅ£¬´ó´óÌá¸ßÁËͨÐŵÄЧÂÊ£¬¹Ê±¾³ÌÐò²ÉÓôËÖÖ·½Ê½½øÐд®ÐÐͨÐÅ£¬ÖÁÓÚͨÐŵĿɿ¿ÐÔ¿ÉÒÔͨ¹ýÈí¼þÉè¼ÆÀ´±£Ö¤¡£
Windowsƽ̨ÏÂÀûÓÃVBʵÏÖ´®¿ÚͨÐÅÖ÷ÒªÓÐÒÔÏÂÁ½ÖÖ·½·¨£º
1£©Ê¹ÓÃWindows API£¨Application Program Interface£©º¯Êý¡£ÕâÖÖ·½·¨¿É±àÐ´ÒÆÖ²ÐÔÇ¿µÄͨÐųÌÐò£¬µ«±ØÐëÊ×ÏÈÓÃDeclareÉùÃ÷VBÖÐËùÒªÓõĶ¯Ì¬Á´½Ó¿âDLL£¬ÕâÐèÒª¶ÔWindows APIº¯ÊýÓÐÉîÈëµÄÁ˽⣬±à³Ì½Ï¸´ÔÓ¡£
2£©Ê¹ÓÃMicrosoft¹«Ë¾ÌṩµÄActive X¿Ø¼þMSComm¡£¸ÃͨÐſؼþͨ¹ý¸Ä±ä¶ÔÏóÊôÐÔ£¬Ïò¶ÔÏó·¢ËÍÏûÏ¢¼°Îª¶ÔÏóʼþ±àдÏìÓ¦´úÂ룬¿ÉÒÔ·½±ãµØÍê³ÉÓû§Ó¦ÓóÌÐò¼äµÄ´®ÐÐͨÐÅ£¬¼È¿ÉʵÏÖAPIº¯ÊýµÄËùÓй¦ÄÜ£¬ÓÖʹµÃ±à³ÌЧÂÊÌá¸ß£¬Ó¦Óù¦ÄÜÔöÇ¿£¬²¢ÇÒ³ÌÐò¼òµ¥Ã÷ÁË¡£
¶ÔÓÚMSComm¿Ø¼þʵÏÖ´®¿ÚͨÐŵIJÙ×÷ºÜ¶àÎÄÏ×¶¼ÓÐÂÛÊö£¬¸Ã¿Ø¼þµÄÖ÷ÒªÊôÐԿɲο¼Ïà¹ØÎÄÏ×£¬Ôڴ˽öÁгö³£ÓõÄÊôÐԺͷ½·¨¡£ÐèҪǿµ÷µÄÊÇ£ºÔÚÊý¾Ý·¢ËÍÓë½ÓÊÕ¹ý³ÌÖУ¬¶¼ÒªÍ¨¹ýÒ»¸öVariantÀàÐͱäÁ¿×÷ΪÖн顣·¢ËÍÊý¾Ýʱ£¬±ØÐëÏȽ«Òª·¢Ë͵ÄÊý¾Ý¸³¸øÒ»¸öVariantÀàÐͱäÁ¿£¬ÔٰѸÃVariant±äÁ¿¸³Öµ¸øMSCommµÄOutputÊôÐÔ£»Í¬Ñù½ÓÊÜÊý¾Ýʱ£¬Ò²Ó¦ÏȽ«MSCommµÄInputÊôÐÔ¸³Öµ¸øVariant±äÁ¿£¬´ý½ÓÊÕ¶ËÊÕµ½ºó±ØÐëת»»³ÉÆäËüÀàÐÍ£¨Èç×Ö·ûÐÍ¡¢¶þ½øÖÆÐÍ£©µÄÊý¾Ý²ÅÄܽøÐд¦Àí¡£±¾Àý²ÉÓÃMSComm¿Ø¼þÀ´ÊµÏÖ¡£
ÏÂÃæ½éÉÜMSCOMM¿Ø¼þµÄÊôÐÔ:
CommPort:É趨ͨÐÅÁ¬½Ó¶Ë¿Ú´úºÅ£¬³ÌÐò±ØÐëÖ¸¶¨ËùҪʹÓõĴ®Ðж˿ںţ¬WindowsϵͳʹÓÃËùÉ趨µÄ¶Ë¿ÚÓëÍâ½çͨÐÅ¡£
PortOpen:É趨ͨÐÅ¿Ú״̬£¬ÈôÎªÕæ£¬Í¨ÐŶ˿ڴò¿ª£¬·ñÔò¹Ø±Õ¡£
Settings:É趨ͨÐſڲÎÊý£¬Æä¸ñʽÊÇ"bbbb,p,d,s"£¬ÆäÖÐbbbbΪͨÐÅËÙÂÊ£¨²¨ÌØÂÊ£©£¬pΪͨÐżì²é·½Ê½£¨ÆæÅ¼Ð£Ñ飩£¬dΪÊý¾ÝλÊý£¬sΪֹͣλÊý£¬ÆäÉ趨ӦÓëPLCµÄÉ趨һÖ¡£
Input:½«¶Ô·½´«ËÍÖÁÊäÈ뻺³åÇøµÄ×Ö·û¶ÁÈëµ½³ÌÐò¡£
Output:½«×Ö·ûдÈëÊä³ö»º³åÇø¡£
InBufferCount:´«»Ø½ÓÊÕ»º³åÇøÖеÄ×Ö·ûÊý¡£
OutBufferCount:´«»ØÊä³ö»º³åÇøÖеÄ×Ö·ûÊý¡£
InputLen:É趨´®Ðж˿ڶÁÈë×Ö·û´®µÄ³¤¶È¡£
InputMode:É趨½ÓÊÕÊý¾ÝµÄ·½Ê½¡£
Rthreshold:É趨Òý·¢½ÓÊÕʼþµÄ×Ö·ûÊý¡£
CommEvent:´«»ØOnCommʼþ·¢ÉúʱµÄÊýÖµÂë
OnCommʼþ:ÎÞÂÛÊÇ´íÎó»òʼþ·¢Éú£¬¶¼»á´¥·¢´Ëʼþ¡£
4.2 ¾ßÌåʵÏÖ
±¾Àý³ÌÐòΪ¶ÁÈ¡Q00PLCµÄÊäÈëÊä³öµãµÄ״̬¡£¼à¿Ø½çÃæÈçÏÂËùʾ£º

ͼ5 ¼à¿Ø½çÃæ
4.2.1 ¿Ø¼þ²ÎÊýµÄ³õʼ»¯
MSComm1.InBufferCount = 0 ¡®Çå¿ÕÊäÈ뻺³åÇø
MSComm1.OutBufferCount = 0 ¡®Çå¿ÕÊä³ö»º³åÇø
MSComm1.CommPort = 1 ¡®É趨´®ÐÐͨÐÅ¿ÚΪcom1
MSComm1.Settings = "19200,O,8,1" ¡®²¨ÌØÂÊ19200£¬ÆæÐ£Ñ飬8λÊý¾Ý룬1λֹͣλ
MSComm1.InputLen = 0 ¡®Ò»´Î¶ÁÈëÊäÈ뻺³åÇøÖеÄ×Ö·û´®µÄ³¤¶ÈΪ»º³åÇøÖеÄËùÓÐÊý¾Ý
MSComm1.RThreshold = 62 ¡®ÊäÈ뻺³åÇøÖÐÿ´Î½Óµ½62¸ö×Ö·û¾Í²úÉúÒ»´ÎOnCommʼþ
MSComm1.PortOpen = True ¡®´ò¿ª¶Ë¿Ú
Dim STX As String ¡®ÒÔÏÂΪMCÐÒéÖеÄASCIIÂë
Dim ENQ As String
Dim ACK As String
Dim CR As String
Dim LF As String
Dim NAK As String
STX = Chr$£¨&H2£©
ENQ = Chr$£¨&H5£©
ACK = Chr$£¨&H6£©
CR = Chr$£¨&HD£©
LF = Chr$£¨&HA£©
4.2.2 ¼ÆËã»úÓëPLCͨÐųÌÐò
Private Sub Timer1_Timer£¨£©
ÿÿDim SD As String
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
If F = 1 Then
SD = ENQ + "F9" + "0000FF00" + "0401" + "0001" + "X£ª" + "000020"
+ "0030" + CR + LF
Else
SD = ENQ + "F9" + "0000FF00" + "0401" + "0001" + "Y£ª" + "000050"
+ "0030" + CR + LF
End If
MSComm1.Output = SD
Timer1.Enabled = False
End Sub
¡®OnCommʼþ
Private Sub MSComm1_OnComm£¨£©
Dim i, j As Integer
Dim RD, Temp, RDw As String
If MSComm1.CommEvent = comEvReceive Then
RD = MSComm1.Input
If Left£¨RD, 1£© = STX Then
RDw = Mid£¨RD, 12, 48£©
j = 0
Select Case F
Case 1
j = 48
Case -1
j = 96
End Select
For i = 1 To 48
Temp = Mid£¨RDw, i, 1£©
If F = 1 Then
If Temp = "1" Then
Lalel£¨i - 1£©.BackColor = &H80FF80
Else
If i <= 3 Then
Lalel£¨i - 1£©.BackColor = &HFF
Else
Lalel£¨i - 1£©.BackColor = &HFFFF00
End If
End If
Else
If Temp = "1" Then
If i = 42 Then
Lalel£¨i - 1 + 48£©.BackColor = &HFF
Else
Lalel£¨i - 1 + 48£©.BackColor = &H80FF80
End If
Else
Lalel£¨i - 1 + 48£©.BackColor = &HFFFF00
End If
End If
Next i
F = F £ª £¨-1£©
Timer1.Enabled = True
¡®F = F £ª £¨-1£©
End If
End If
End Sub
Îå ½áÊøÓï
VBÊÇÒ»ÖÖ³ÉÊìµÄ¡¢ÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔ£¬²ÉÓÃËü±àдµÄWindows»·¾³ÏÂPC»úÓëQ00PLCµÄ´®ÐÐͨѶÈí¼þ¾ßÓгÌÐòʵÏÖ¼ò±ã¡¢Í¨ÓÃÐÔÇ¿µÄÌØµã£¬¼õÇáÁËÈí¼þ¿ª·¢ÕߵŤ×÷Á¿£¬¶ÔÓÚ¹úÄÚµÄÖС¢Ð¡ÐÍÆóÒµ¾ßÓÐÏÖʵÒâÒå¡£
²Î¿¼ÎÄÏ×
[1] Íõ¶°£¬Visual Basic6.0³ÌÐòÉè¼ÆÊµÓý̳Ì[M]£¬Ç廪´óѧ³ö°æÉ磬2003
[2] ¹¤Òµ½Ó¿ÚÓëͨѶ£¬ÂÀÖ¾ÒÕ£¬2003
[3] Q ϵÁÐ MELSEC ͨѶÐÒé²Î¿¼ÊÖ²á
[4] ÈýÁâ Q ϵÁпɱà³Ì¿ØÖÆÆ÷±à³ÌÊÖ²á;
×÷Õß¼ò½é£º
ÂíÀÚ£º1981Äê10ÔÂ12ÈÕ³öÉú£»ÐÔ±ð£ºÅ®£»¼®¹á£ºÉ½¶«Ê¡ÎºÇÅÕòÄÏÖ£´å£»ÔÚ¶ÁÑо¿Éú£»Ñо¿·½Ïò£ºÔìÖ½×°±¸Óë¿ØÖÆ¡£
ÂÀ¶àÓ£º1982Äê6Ô³öÉú£»ÄУ»¼®¹á:ɽ¶«Ê¡¼ÃÄÏÊÐÀú³ÇÇø£»±¾¿Æ£¬Ñ§Ê¿Ñ§Î»£»
ÁªÏµ·½Ê½£ºÍ¨Ñ¶µØÖ·£ºÉ½¶«Ê¡¼ÃÄÏÊÐ ´óѧ¿Æ¼¼Ô° ɽ¶«ÇṤҵѧԺ ÇữÓë»·¾³¹¤³ÌѧԺ£¬06¼¶Ñо¿Éú£¬ÂíÀÚ¡£ Óʱࣺ250353 ÓÊÏ䣺aima2005@126.com