k8¿­·¢ÌìÉúÓ®¼ÒÒ»´¥¼´·¢

Ê×Ò³
²úÆ·
׿Խ ? Ò×Óà ? ¿É¿¿
ËÑË÷
ÀúÊ·ËÑË÷
ËÑË÷·¢ÏÖ
Ê×Ò³ > ÐÂÎÅÖÐÐÄ > ¼¼ÊõÓ¦ÓÃ

»ùÓÚModbus RTUµÄ´®¿Úµ÷ÊÔÈí¼þµÄʵÏÖ

2022-01-10 17:00:09| À´Ô´£ºÍøÂç| ´Î| 0´Î

        ÎÄÖнéÉÜÁËModbus RTUͨѶЭÒéµÄÌص㣬²ûÊöÁ˸ÃЭÒéÔÚVC2005±à³Ì»·¾³ÏÂÉê¿Úµ÷ÊÔÈí¼þµÄ¾ßÌåʵÏÖ·½·¨¡£²¢±àÖÆÁËÏà¹ØµÄ³ÌÐò£¬¸Ã³ÌÐò²ÉÓÃÁËÄ£¿é»¯Ë¼Ï룬½á¹¹ÇåÎú£¬²Ù×÷¼ò±ã£¬ÊµÏÖÁËÁ¼ºÃµÄModbusRTU±¨ÎÄ´¢´æ¼°¹ÜÀí»úÖÆ£¬Ê¹ÓöàÏ̼߳æ¹Ë½çÃæÏÔʾºÍÊý¾ÝͨѶ£¬ÍêÈ«¼æÈÝModbuaRTUͨѶЭÒ飬¿ÉÓÃÓÚ×Ô¶¨Ò幦ÄÜÂëµÄModbus¼æÈÝÉ豸µÄµ÷ÊÔ£¬¿Ë·þÁËÆÕͨModbusµ÷ÊÔÈí¼þ½öÄÜÓÃÓÚModbus±ê×¼¹¦ÄÜÂëµ÷ÊԵIJ»×㡣ʵ¼ùÖ¤Ã÷£¬¸Ã³ÌÐò±àÖÆ˼ÏëºÏÀí¡¢ÔËÐÐÎȶ¨¡¢²Ù×÷¼ò±ãÒ×ÐУ¬Îª¹¤Òµ×Ô¶¯»¯ÖÐModbusÉ豸µÄµ÷ÊÔ´øÀ´·½±ã¡£

        

        Ò»¡¢ModbusRTUͨÐÅЭÒé¼ò½é

        ModbusͨÐÅЭÒéÊÇModieon¹«Ë¾¿ª·¢µÄÒ»ÖÖͨÐÅЭÒ飬Ëü²ÉÓÃÖ÷´ÓÎÊ´ð·½Ê½¹¤×÷£¬ÊÇÒ»ÖÖÕæÕý¿ª·Å¡¢±ê×¼µÄ¡¢ÃâÊÕÐí¿É·ÑµÄÍøÂçͨÐÅЭÒé¡£¹ã·ºÓÃÓÚ×Ô¶¯»¯¿ØÖÆÆ÷ºÍ²â¿ØÒDZí£¬ÏÖÒѳÉΪһÖÖ¹«ÈϵÄͨÓù¤Òµ±ê×¼¡£Èç½ñModbusЭÒéÒѾ­³ÉΪÎÒ¹ú¹¤Òµ×Ô¶¯»¯ÍøÂçЭÒé¹æ·¶µÄ¹ú¼Ò±ê×¼Ö®Ò»¡£²»Í¬³§ÉÌÉú²úµÄ¿ØÖÆÉ豸¿ÉÒÔ¼®´ËÁ¬³É¹¤ÒµÍøÂç¡£½øÐм¯Öмà¿Ø¡£¸ÃЭÒéÓÐ2ÖÖ´«Êäģʽ£¬¼´RTUģʽºÍASCIIģʽ¡£¶ÔÓÚASCIIģʽ£¬Ò»¸öÐÅÏ¢Ö¡ÖеÄÿ8λµÄ×Ö½Ú×÷Ϊ2¸öASCII×Ö·û´«Êä;¶ø¶ÔÓÚRTUģʽ¡£ÐÅÏ¢Ö¡ÖеÄ8λÊý¾Ý×÷Ϊ2¸ö4λ16½øÖÆ×Ö·û£¬Ïà¶ÔÓÚASCIIģʽ£¬RTUģʽ±í´ïÏàͬµÄÐÅÏ¢ÐèÒª½ÏÉÙµÄλÊý£¬ÇÒÔÚÏàͬͨÐÅËÙÂÊϾßÓиü´óµÄÊý¾ÝÁ÷Á¿¡£Òò´Ëͨ³£Çé¿öÏ£¬Ò»°ã¹¤ÒµÖÇÄÜÒDZíÒÇÆ÷¶¼ÊDzÉÓÃRTUģʽµÄModbus¹æÔ¼¡£

        

        ¶þ¡¢ModbusRTU´«Êä¹ý³Ì

        ÐÅÏ¢´«ÊäΪÒì²½·½Ê½£¬²¢ÒÔ×Ö½ÚΪµ¥Î»¡£ÔÚÖ÷Õ¾ºÍ´ÓÕ¾Ö®¼ä´«µÝµÄͨѶ±¨ÎĵÄÐÅÏ¢Ö¡¸ñʽÈç±í1Ëùʾ¡£

        ModbusRTU²ÉÓÃÖ÷´Ó·½Ê½£¬ÈôÖ÷»úÉ豸·¢ËÍÒ»¸öÐÅÏ¢£¬Ôò¿É´Óһ̨´Ó»úÉ豸·µ»ØÒ»¸öÏìÓ¦£¬ÀàËƵÄ£¬µ±Ò»Ì¨´Ó»úÉ豸½ÓÊÜÐÅϢʱ£¬Ëü¾Í×éÖ¯Ò»¸ö´Ó»úÉ豸µÄÏìÓ¦ÐÅÏ¢£¬²¢·µ»ØÖÁÔ­·¢ËÍÐÅÏ¢µÄÖ÷»úÉ豸¡£

        µ±Í¨Ñ¶ÃüÁîÓÉÖ÷»ú·¢ËÍÖÁ´Ó»úʱ£¬·ûºÏÏàÓ¦µØÖ·ÂëµÄ´Ó»ú½ÓÊÕͨѶÃüÁ²¢¸ù¾Ý¹¦ÄÜÂë¼°Ïà¹ØÒªÇó¶ÁÈ¡ÐÅÏ¢£¬Èç¹ûCRCУÑéÎÞÎó£¬ÔòÖ´ÐÐÏàÓ¦µÄÈÎÎñ£¬È»ºó°ÑÖ´Ðнá¹û·µË͸øÖ÷»ú¡£

        ±í1 Modbus RTUÐÅÏ¢Ö¡¸ñʽ

        Modbus RTUÐÅÏ¢Ö¡¸ñʽ

        Modbus RTUµÄ²éѯÏìÓ¦ÖÜÆÚÈçͼ1Ëùʾ¡£

        Modbus RTUµÄ²éѯÏìÓ¦ÖÜÆÚ

        

        Èý¡¢»ùÓÚModbusRTUµÄ´®¿Úµ÷ÊÔÈí¼þʵÏÖ

        3.1Ö÷Ìå¼Ü¹¹

        Èí¼þ²ÉÓÃÁ½¸öỊ̈߳¬Ö÷Ïß³ÌÏÔʾÖ÷½çÃ棬ÓÃÀ´ÉèÖÃÊý¾Ý¡£±¨ÎÄ´¦ÀíÏß³ÌÓÃÀ´¼àÌý±¨ÎÄÖ¡¡¢·ÖÎö±¨ÎÄ¡¢È¡³öÖ÷½çÃæÉèÖõÄÊý¾Ý²¢´ò°ü×÷³ö»ØÓ¦[6l¡£

        ¶ÔÓÚ¸÷²¿·ÖµÄ¹¦ÄÜÓÃÀà½øÐзâ×°´¦Àí£¬Á¦Çóʹ³ÌÐò¼ò½àÒ׶®¡¢±ãÓÚÒÆÖ²¡£³ÌÐòÖÐËùÓõĸ÷ÖÖÄ£¿éÈçÏÂ[7£¬8]£º

        (1)Ïß³ÌÎÊÊý¾Ý´«ËÍÄ£¿é£ºÓÃÓÚÖ÷Ïß³ÌÓë×ÓÏ̼߳䴫ËÍÖ÷½çÃæËùÉèÖõÄÊý¾Ý£¬²ÉÓÃÈ«¾Ö±äÁ¿½øÐÐÏ̼߳äͨÐÅ£¬Ê¹Óû¥³âÌå(CMutex)½øÐÐÏß³Ìͬ²½¡£

        (2)´®¿ÚÊý¾ÝÊÕ·¢Ä£¿é£ºÓÃÓÚ´®¿Ú´ò¿ª¡¢¹Ø±ÕµÈ³£ÓòÙ×÷¼°´®¿ÚÊý¾ÝµÄÊÕ·¢£¬Îª±£Ö¤´®¿ÚÊÕ·¢Ä£¿éµÄÁé»îÐÔ£¬Ä£¿éÖд®¿ÚÊý¾ÝµÄÊÕ·¢³ÌÐò²ÉÓÃÁË´®¿Ú²Ù×÷Ïà¹ØµÄWindowsAPIº¯Êý¡£

        (3)ModbusЭÒéÄ£¿é£º¶Ô´®¿ÚÊý¾ÝÊÕ·¢Ä£¿éÔٴηâ×°²¢ÊµÏÖÁËModbusR£¬rUµÄ¸÷ÖÖ±¨ÎĹ淶¡£¶¨ÒåÁ˱¨ÎĸñʽµÄÁ½Öֽṹ¡ª¡ªPDU(ЭÒéÊý¾Ýµ¥Ôª)ºÍADU(Ó¦ÓÃÊý¾Ýµ¥Ôª)£¬¼°Á½ÕßÏ໥ת»¯µÄ·½·¨¡£²¢ÔÚ´Ë»ù´¡ÉÏʵÏÖÁ˶ԽÓÊܱ¨ÎĵÄÅжϽâÎöºÍ¶ÔÓû·¢Ëͱ¨ÎÄ×éÖ¯´ò°ü¡£

        (4)CRCУÑéÄ£¿é£ºÓÃÓÚÉú³É·¢Ëͱ¨ÎĵÄ16λCRCУÑéÂ룬²¢¶Ô½ÓÊܵı¨ÎÄÔÙ´ÎÉú³ÉCRCУÑéÂëÒÔ±ãÓÚÓëԭУÑéÂë½øÐбȶÔ¡£

        ±¨ÎÄ´¦ÀíÏ̵߳ÄÁ÷³ÌͼÈçͼ2Ëùʾ¡£

        Í¼2±¨ÎÄ´¦ÀíÏß³ÌÁ÷³Ìͼ

        3.2±¨ÎÄÊý¾ÝµÄ´æ´¢¼°¹ÜÀí

        ÎªÁË´æ´¢±¨ÎÄÖеÄÊý¾Ý£¬ÔÚÄÚ´æÖл®·Ö³öÀ´Ò»¸ö256Bytes´óСµÄ±¨ÎÄ»º³åÇø¡£ÊÕµ½µÄ±¨Îĺʹò°üºÃµÄ±¨ÎĶ¼ÔÝ´æÔÚ¸ÃÇøÓòÖС£Ò²¾ÍÊÇ˵¶Ô±¨ÎĵĽâÎöºÍ´ò°ü¾Í±ä³ÉÁ˶Ա¨ÎÄ»º³åÇøµÄ²Ù×÷[9£¬10]¡£ÎªÁ˸üºÃµØ¹ÜÀí±¨ÎÄ»º³åÇø£¬¶¨ÒåÁËÁ½¸ö½á¹¹PDUÒ»HANDLEÄ£ÄâÊÇPDU(±¨ÎÄÊý¾Ýµ¥Ôª)£¬ÆäÖÐPDU¡ªHANDLEÄ£ÄâµÄÊÇPDU(±¨ÎÄÊý¾Ýµ¥Ôª)£¬ADUÒ»CONTROIÄ£ÄâµÄÊÇADU(ЭÒéÊý¾Ýµ¥Ôª)[11l¡£¶þÕ߶¨ÒåÈçÏ£º

        struet PDU¡ªHANDLE

        {

        unsignedchar*PDUBuffPtr;//PUDÊý¾ÝÖ¸Õë

        urlsigned

        char FunctionCode;//ÇëÇó¹¦ÄÜ´úÂë

        umigrled$l'92rt PD¡ëh;//PDU×Ö½Ú³¤¶È

        unsigned

        char ExeeptiongÏõe;//Òì³£´úÂë

        };

        Sta"uct ADU_CONTROL£¬

        {

        unsigned char*ADUBuffPtr;//ADU»º³åÇøÖ¸Õ룬ָÏò±¨ÎÄ»º³åÇø

        unsigned char ADULength;//É豸µØÖ·

        unsigned short ADULength;//ADU×Ö½Ú³¤¶È

        };

        ¶ÔPDU_HANDIEºÍADU_CONTROL²Ù×÷µÄº¯ÊýÖ÷ÒªÓÐPackDU2PDU()¡¢ClearPDUBuf()¡¢PackP_DU2ADU()¡£ÆäÖ÷ÒªÁ÷³ÌÊÇ£º

        1)ÊÕµ½ºÏ·¨µÄ±¨Îĺ󣬶ԽṹADU-CONTROL½øÐÐÌî³ä¡£±¨Îı»´æ´¢ÔÚADU¡ªCoNTROLµÄ³ÉÔ±ADÇÐ3uffPtrÖ¸ÏòµÄÄÚ´æµ¥ÔªÖС£±¨ÎÄÆäËüÏà¹ØÐÅÏ¢(´Ó»úµØÖ·£¬±¨Îij¤¶È)Ìî³äµ½ADU¡ªCONTRoI.µÄÊ£Óà³ÉÔ±ÖС£

        2)Ö´ÐÐPackADU2PDU()¡£Íê³ÉADUÏòPDUµÄת»»¡£´Ë²½Ö÷ÒªÍê³ÉCRCl6УÑéÂë±È¶Ô£¬²¢ÒÀ¾ÝADU¡ªCONTRoIµÄ³ÉÔ±Íê³É¶ÔPDU_HANDLEµÄÌî³ä£¬ÒÔ±ãÓÚºóÐø¶ÔPDUÄÚÈݵķÖÎö´¦Àí¡£

        3)Ö´ÐÐClearPDUBuf() £¬Çå¿ÕPDUÊý¾Ý»º³åÇøÄÚÈÝ¡£´ËʱÒѾ­Íê³É¶Ô½ÓÊܱ¨ÎĵķÖÎö£¬ÒªÇå¿ÕPDUÊý¾Ý»º³åÇøÄÚÈÝ.ÒÔ×°ÌîÓû·¢Ë͵ÄPDUÊý¾Ý¡£

        4)Ö´ÐÐPackPDU2ADU()¡£Ê¹PDUÍ·²¿¼ÓÉÏÉ豸µØÖ·£¬Î²²¿¸½¼ÓCRcl6УÑéÂë¡£´Ëʱ·â×°³ÉÁËÍêÕûµÄ±¨ÎÄ£¬ÒԱ㷢ËÍ¡£

        3.3¹¦ÄÜÂë¼°ÏàÓ¦´¦Àíº¯Êý±¾³ÌÐò¶Ô²»Í¬µÄ¹¦ÄÜÂëÉèÖÃÁ˲»Í¬µÄ´¦Àíº¯Êý¡£

        ³öÁ˲¿·Ö±ê×¼¹¦ÄÜÂë¼°ÏàÓ¦µÄ´¦Àíº¯Êý¡£Modbusµ÷ÊÔÈí¼þÒ»°ã×÷Ϊ´Ó»ú¡£¶ÔÖ÷»ú·¢À´µÄ·ûºÏModbusЭÒéµÄ±¨ÎĽøÐнâÎö»ØÓ¦¡£ÆÕͨµÄModbusµ÷ÊÔÈí¼þÒ»°ãÖ»ÄܶÔÉÏÊöËÄÖÖ±ê×¼¹¦ÄÜÂë½øÐнâÎö»ØÓ¦¡£µ«ÊǶÔÓÚʵ¼ÊµÄModbusÉ豸À´Ëµ¡£ÕâËÄÖÖ¹¦ÄÜÂëÊÇÔ¶Ô¶²»¹»µÄ£¬¸ü¶àµÄʱºòÐèÒª×Ô¶¨Ò幦ÄÜÂëÀ´Íê³ÉÏà¹ØµÄ¹¦ÄÜ¡£ÎªÁËÍê³É¶Ô×Ô¶¨Ò幦ÄÜÂëµÄµ÷ÊÔ¡£¿ÉÒÔÔÚµ÷ÊÔÈí¼þÖмÓÈë×Ô¶¨Ò幦ÄÜÂë´¦Àíº¯Êý¡£ÕâÑù±ã¿ÉÒÔʹ´Ë³ÌÐòÓиüÇ¿µÄÕë¶ÔÐÔ[7]¡£

        ±í2²¿·Ö±ê×¼Modbus¹¦ÄÜÂë¼°Æä´¦Àíº¯Êý

¹¦ÄÜÂë¶ÔÓ¦º¯Êý¹¦ÄÜÃèÊö
0x01ReadCoils¶ÁÏßȦ
0x02ReadDiscretlnputs¶ÁÀëÉ¢ÊäÈëÁ¿
0x03ReadHoldReg¶Á±£³Ö¼Ì´æÆ÷
0x04ReadInputReg¶ÁÊäÈë¼Ì´æÆ÷

        3.4³ÌÐòµÄ½çÃæ

        Í¼3ËùʾΪMoDbusRTU´®ÈÕµ÷ÊÔÈí¼þµÄÖ÷½çÃ档ͼ4ΪÉÏλ»úÈí¼þÓëModbosRTU´®¿Úµ÷ÊÔÈí¼þµÄͨÐŽçÃæ¡£¿ÉÒÔ¿´³ö¸ÃModbus RTUµ÷ÊÔÈí¼þ¹¤×÷Õý³£¡£

         ModbusRTU´®¿Úµ÷ÊÔÈí¼þ½çÃæ

        Í¼3 ModbusRTU´®¿Úµ÷ÊÔÈí¼þ½çÃæ

        ÉÏλ»úÈí¼þÓëModbusRTU´®¿Úµ÷ÊÔÈí¼þµÄͨÐŽçÃæ

        Í¼4ÉÏλ»úÈí¼þÓëModbusRTU´®¿Úµ÷ÊÔÈí¼þµÄͨÐŽçÃæ

        

        ËÄ¡¢½áÊøÓï

        ÀûÓÃÉÏÊö·½·¨£¬ÔÚVC2005»·¾³Ï±àÖƵĻùÓÚModbusRTUµÄ´®¿Úµ÷ÊÔÈí¼þ£¬ÔÚij×Ô¶¯»¯ÆóҵСÐÍPLCÑз¢ÏîÄ¿µÄÉÏλ»úÓëÏÂλ»úͨÐŵ÷ÊÔÖеõ½Ó¦Ó᣼ÈÄܶԱê×¼Modbus¹¦ÄÜÂë½øÐе÷ÊÔ£¬Ò²¿É¶Ô×Ô¶¨Ò幦ÄÜÂë½øÐе÷ÊÔ¡£Êµ¼ùÖ¤Ã÷³ÌÐòÔËÐÐÎȶ¨¡¢¿É¿¿£¬²Ù×÷¼ò±ã¡¢Ò×ÐС£Îª×Ô¶¨Ò幦ÄÜÂëµÄModbus RTU´®¿Úµ÷ÊÔÌṩÁËÒ»Ìõ¼ò½à¡¢¿ÉÐеĽâ¾ö·½·¨¡£

        

        

k8¿­·¢ÌìÉúÓ®¼ÒÒ»´¥¼´·¢