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

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

MODBUSͨѶЭÒé¼°±à³Ì

2022-01-10 14:36:25| À´Ô´£ºÍøÂç| ´Î| 0´Î

        ModBus Ö÷»úͨѶЭÒé·ÖΪRTUЭÒéºÍASCIIЭÒ飬ÎÒ¹«Ë¾µÄ¶àÖÖÒÇ±í¶¼²ÉÓÃModBus RTUͨѶЭÒ飬È磺YD2000ÖÇÄܵçÁ¦¼à²âÒÇ¡¢Ñ²¼ì±í¡¢ÊýÏÔ±í¡¢¹âÖùÊýÏÔ±íµÈ¡£ÏÂÃæ¾ÍModBus RTUЭÒé¼òÒª½éÉÜÈçÏ£º

        Ò»¡¢Í¨Ñ¶Ð­Òé

        (Ò»)¡¢Í¨Ñ¶´«ËÍ·½Ê½£º

        Í¨Ñ¶´«ËÍ·ÖΪ¶ÀÁ¢µÄÐÅϢͷ£¬ºÍ·¢Ë͵ıàÂëÊý¾Ý¡£ÒÔϵÄͨѶ´«ËÍ·½Ê½¶¨ÒåÒ²ÓëMODBUS RTUͨѶ¹æÔ¼Ïà¼æÈÝ£º

±à Âë8λ¶þ½øÖÆ
Æðʼλ1λ
Êý¾Ýλ8λ
ÆæżУÑéλ1λ£¨Å¼Ð£Ñé룩
ֹͣλ1λ
´íÎóУ¼ìCRC£¨ÈßÓàÑ­»·Â룩

        µØÖ·Â룺µØÖ·ÂëΪͨѶ´«Ë͵ĵÚÒ»¸ö×Ö½Ú¡£Õâ¸ö×Ö½Ú±íÃ÷ÓÉÓû§É趨µØÖ·ÂëµÄ´Ó»ú½«½ÓÊÕÓÉÖ÷»ú·¢ËÍÀ´µÄÐÅÏ¢¡£²¢ÇÒÿ¸ö´Ó»ú¶¼ÓоßÓÐΨһµÄµØÖ·Â룬²¢ÇÒÏìÓ¦»ØË;ùÒÔ¸÷×ԵĵØÖ·Â뿪ʼ¡£Ö÷»ú·¢Ë͵ĵØÖ·Âë±íÃ÷½«·¢Ë͵½µÄ´Ó»úµØÖ·£¬¶ø´Ó»ú·¢Ë͵ĵØÖ·Âë±íÃ÷»ØË͵ĴӻúµØÖ·¡£

        ¹¦ÄÜÂ룺ͨѶ´«Ë͵ĵڶþ¸ö×Ö½Ú¡£ModBusͨѶ¹æÔ¼¶¨Ò幦ÄܺÅΪ1µ½127¡£±¾ÒDZíÖ»ÀûÓÃÆäÖеÄÒ»²¿·Ö¹¦ÄÜÂë¡£×÷ΪÖ÷»úÇëÇó·¢ËÍ£¬Í¨¹ý¹¦ÄÜÂë¸æËß´Ó»úÖ´ÐÐʲô¶¯×÷¡£×÷Ϊ´Ó»úÏìÓ¦£¬´Ó»ú·¢Ë͵ŦÄÜÂëÓë´ÓÖ÷»ú·¢ËÍÀ´µÄ¹¦ÄÜÂëÒ»Ñù£¬²¢±íÃ÷´Ó»úÒÑÏìÓ¦Ö÷»ú½øÐвÙ×÷¡£Èç¹û´Ó»ú·¢Ë͵ŦÄÜÂëµÄ×î¸ßλΪ1(±ÈÈ繦ÄÜÂë´óÓë´Ëͬʱ127)£¬Ôò±íÃ÷´Ó»úûÓÐÏìÓ¦²Ù×÷»ò·¢Ëͳö´í¡£

        Êý¾ÝÇø£ºÊý¾ÝÇøÊǸù¾Ý²»Í¬µÄ¹¦ÄÜÂë¶ø²»Í¬¡£Êý¾ÝÇø¿ÉÒÔÊÇʵ¼ÊÊýÖµ¡¢ÉèÖõã¡¢Ö÷»ú·¢Ë͸ø´Ó»ú»ò´Ó»ú·¢Ë͸øÖ÷»úµÄµØÖ·¡£

        CRCÂ룺¶þ×ֽڵĴíÎó¼ì²âÂë¡£

        (¶þ)¡¢Í¨Ñ¶¹æÔ¼£º

        µ±Í¨Ñ¶ÃüÁî·¢ËÍÖÁÒÇÆ÷ʱ£¬·ûºÏÏàÓ¦µØÖ·ÂëµÄÉ豸½ÓͨѶÃüÁ²¢³ýÈ¥µØÖ·Â룬¶ÁÈ¡ÐÅÏ¢£¬Èç¹ûûÓгö´í£¬ÔòÖ´ÐÐÏàÓ¦µÄÈÎÎñ;È»ºó°ÑÖ´Ðнá¹û·µË͸ø·¢ËÍÕß¡£·µË͵ÄÐÅÏ¢ÖаüÀ¨µØÖ·Âë¡¢Ö´Ðж¯×÷µÄ¹¦ÄÜÂë¡¢Ö´Ðж¯×÷ºó½á¹ûµÄÊý¾ÝÒÔ¼°´íÎóУÑéÂë¡£Èç¹û³ö´í¾Í²»·¢ËÍÈκÎÐÅÏ¢¡£

        1.ÐÅÏ¢Ö¡½á¹¹

µØÖ·Â빦ÄÜÂëÊý¾ÝÇø´íÎóУÑéÂë
8λ8λN ¡Á 8λ16λ

        µØÖ·Â룺µØÖ·ÂëÊÇÐÅÏ¢Ö¡µÄµÚÒ»×Ö½Ú(8λ)£¬´Ó0µ½255¡£Õâ¸ö×Ö½Ú±íÃ÷ÓÉÓû§ÉèÖõØÖ·µÄ´Ó»ú½«½ÓÊÕÓÉÖ÷»ú·¢ËÍÀ´µÄÐÅÏ¢¡£Ã¿¸ö´Ó»ú¶¼±ØÐëÓÐΨһµÄµØÖ·Â룬²¢ÇÒÖ»ÓзûºÏµØÖ·ÂëµÄ´Ó»ú²ÅÄÜÏìÓ¦»ØËÍ¡£µ±´Ó»ú»ØËÍÐÅϢʱ£¬Ï൱µÄµØÖ·Âë±íÃ÷¸ÃÐÅÏ¢À´×ÔÓںδ¦¡£

        ¹¦ÄÜÂ룺Ö÷»ú·¢Ë͵ŦÄÜÂë¸æËß´Ó»úÖ´ÐÐʲôÈÎÎñ¡£±í1-1ÁгöµÄ¹¦ÄÜÂ붼ÓоßÌåµÄº¬Òå¼°²Ù×÷¡£

´úÂ뺬Òå²Ù×÷
3¶ÁÈ¡Êý¾Ý¶ÁÈ¡µ±Ç°¼Ä´æÆ÷ÄÚÒ»¸ö»ò¶à¸ö¶þ½øÖÆÖµ
6ÖØÖõ¥Ò»¼Ä´æÆ÷°ÑÉèÖõĶþ½øÖÆֵдÈëµ¥Ò»¼Ä´æÆ÷

        Êý¾ÝÇø£ºÊý¾ÝÇø°üº¬ÐèÒª´Ó»úÖ´ÐÐʲô¶¯×÷»òÓÉ´Ó»ú²É¼¯µÄ·µËÍÐÅÏ¢¡£ÕâЩÐÅÏ¢¿ÉÒÔÊÇÊýÖµ¡¢²Î¿¼µØÖ·µÈµÈ¡£ÀýÈ磬¹¦ÄÜÂë¸æËß´Ó»ú¶ÁÈ¡¼Ä´æÆ÷µÄÖµ£¬ÔòÊý¾ÝÇø±ØÐè°üº¬Òª¶ÁÈ¡¼Ä´æÆ÷µÄÆðʼµØÖ·¼°¶ÁÈ¡³¤¶È¡£¶ÔÓÚ²»Í¬µÄ´Ó»ú£¬µØÖ·ºÍÊý¾ÝÐÅÏ¢¶¼²»Ïàͬ¡£

        ´íÎóУÑéÂ룺Ö÷»ú»ò´Ó»ú¿ÉÓÃУÑéÂë½øÐÐÅбð½ÓÊÕÐÅÏ¢ÊÇ·ñ³ö´í¡£ÓÐʱ£¬ÓÉÓÚµç×ÓÔëÉù»òÆäËüһЩ¸ÉÈÅ£¬ÐÅÏ¢ÔÚ´«Êä¹ý³ÌÖлᷢÉúϸ΢µÄ±ä»¯£¬´íÎóУÑéÂë±£Ö¤ÁËÖ÷»ú»ò´Ó»ú¶ÔÔÚ´«Ë͹ý³ÌÖгö´íµÄÐÅÏ¢²»Æð×÷Óá£ÕâÑùÔö¼ÓÁËϵͳµÄ°²È«ºÍЧÂÊ¡£´íÎóУÑé²ÉÓÃCRC-16УÑé·½·¨¡£

        ×¢£ºÐÅÏ¢Ö¡µÄ¸ñʽ¶¼»ù±¾Ïàͬ£ºµØÖ·Âë¡¢¹¦ÄÜÂë¡¢Êý¾ÝÇøºÍ´íÎóУÑéÂë¡£

        2.´íÎóУÑé

        ÈßÓàÑ­»·Âë(CRC)°üº¬2¸ö×Ö½Ú£¬¼´16λ¶þ½øÖÆ¡£CRCÂëÓÉ·¢ËÍÉ豸¼ÆË㣬·ÅÖÃÓÚ·¢ËÍÐÅÏ¢µÄβ²¿¡£½ÓÊÕÐÅÏ¢µÄÉ豸ÔÙÖØмÆËã½ÓÊÕµ½ÐÅÏ¢µÄ CRCÂ룬±È½Ï¼ÆËãµÃµ½µÄCRCÂëÊÇ·ñÓë½ÓÊÕµ½µÄÏà·û£¬Èç¹ûÁ½Õß²»Ïà·û£¬Ôò±íÃ÷³ö´í¡£

        CRCÂëµÄ¼ÆËã·½·¨ÊÇ£¬ÏÈÔ¤ÖÃ16λ¼Ä´æÆ÷ȫΪ1¡£ÔÙÖð²½°Ñÿ8λÊý¾ÝÐÅÏ¢½øÐд¦Àí¡£ÔÚ½øÐÐCRCÂë¼ÆËãʱֻÓÃ8λÊý¾Ý룬Æðʼλ¼°Í£Ö¹Î»£¬ÈçÓÐÆæżУÑéλµÄ»°Ò²°üÀ¨ÆæżУÑé룬¶¼²»²ÎÓëCRCÂë¼ÆËã¡£

        ÔÚ¼ÆËãCRCÂëʱ£¬8λÊý¾ÝÓë¼Ä´æÆ÷µÄÊý¾ÝÏàÒì»ò£¬µÃµ½µÄ½á¹ûÏòµÍλÒÆÒ»×Ö½Ú£¬ÓÃ0Ìî²¹×î¸ßλ¡£ÔÙ¼ì²é×îµÍ룬Èç¹û×îµÍλΪ1£¬°Ñ¼Ä´æÆ÷µÄÄÚÈÝÓëÔ¤ÖÃÊýÏàÒì»ò£¬Èç¹û×îµÍλΪ0£¬²»½øÐÐÒì»òÔËËã¡£

        Õâ¸ö¹ý³ÌÒ»Ö±Öظ´8´Î¡£µÚ8´ÎÒÆλºó£¬ÏÂÒ»¸ö8λÔÙÓëÏÖÔڼĴæÆ÷µÄÄÚÈÝÏàÏàÒì»ò£¬Õâ¸ö¹ý³ÌÓëÒÔÉÏÒ»ÑùÖظ´8´Î¡£µ±ËùÓеÄÊý¾ÝÐÅÏ¢´¦ÀíÍêºó£¬×îºó¼Ä´æÆ÷µÄÄÚÈݼ´ÎªCRCÂëÖµ¡£CRCÂëÖеÄÊý¾Ý·¢ËÍ¡¢½ÓÊÕʱµÍ×Ö½ÚÔÚÇ°¡£

        ¼ÆËãCRCÂëµÄ²½ÖèΪ£º

        ¡ì Ô¤ÖÃ16λ¼Ä´æÆ÷ΪʮÁù½øÖÆFFFF(¼´È«Îª1)¡£³Æ´Ë¼Ä´æÆ÷ΪCRC¼Ä´æÆ÷;

        ¡ì °ÑµÚÒ»¸ö8λÊý¾ÝÓë16λCRC¼Ä´æÆ÷µÄµÍλÏàÒì»ò£¬°Ñ½á¹û·ÅÓÚCRC¼Ä´æÆ÷;

        ¡ì °Ñ¼Ä´æÆ÷µÄÄÚÈÝÓÒÒÆһλ(³¯µÍλ)£¬ÓÃ0Ìî²¹×î¸ß룬¼ì²é×îµÍλ;

        ¡ì Èç¹û×îµÍλΪ0£ºÖظ´µÚ3²½(ÔÙ´ÎÒÆλ); Èç¹û×îµÍλΪ1£ºCRC¼Ä´æÆ÷Óë¶àÏîʽA001(1010 0000 0000 0001)½øÐÐÒì»ò;

        ¡ì Öظ´²½Öè3ºÍ4£¬Ö±µ½ÓÒÒÆ8´Î£¬ÕâÑùÕû¸ö8λÊý¾ÝÈ«²¿½øÐÐÁË´¦Àí;

        ¡ì Öظ´²½Öè2µ½²½Öè5£¬½øÐÐÏÂÒ»¸ö8λÊý¾ÝµÄ´¦Àí;

        ¡ì ×îºóµÃµ½µÄCRC¼Ä´æÆ÷¼´ÎªCRCÂë¡£

        3.¹¦ÄÜÂë03£¬¶ÁÈ¡µãºÍ·µ»ØÖµ£º

        ÒDZí²ÉÓÃModbus RTUͨѶ¹æÔ¼£¬ÀûÓÃͨѶÃüÁ¿ÉÒÔ½øÐжÁÈ¡µã(¡°±£³Ö¼Ä´æÆ÷¡±) »ò·µ»ØÖµ(¡°ÊäÈë¼Ä´æÆ÷¡± )µÄ²Ù×÷¡£±£³ÖºÍÊäÈë¼Ä´æÆ÷¶¼ÊÇ16λ(2×Ö½Ú)Öµ£¬²¢ÇÒ¸ßλÔÚÇ°¡£ÕâÑùÓÃÓÚÒDZíµÄ¶ÁÈ¡µãºÍ·µ»ØÖµ¶¼ÊÇ2×Ö½Ú¡£Ò»´Î×î¶à¿É¶ÁÈ¡¼Ä´æÆ÷ÊýÊÇ60¡£ÓÉÓÚһЩ¿É±à³Ì¿ØÖÆÆ÷²»Óù¦ÄÜÂë03£¬ËùÒÔ¹¦ÄÜÂë03±»ÓÃ×÷¶ÁÈ¡µãºÍ·µ»ØÖµ¡£´Ó»úÏìÓ¦µÄÃüÁî¸ñʽÊÇ´Ó»úµØÖ·¡¢¹¦ÄÜÂë¡¢Êý¾ÝÇø¼°CRCÂë¡£Êý¾ÝÇøÖеļĴæÆ÷Êý¾Ý¶¼ÊÇÿÁ½¸ö×Ö½Ú¸ß×Ö½ÚÔÚÇ°¡£

        4.¹¦ÄÜÂë06

        Ö÷»úÀûÓÃÕâÌõÃüÁî°Ñµ¥µãÊý¾Ý±£´æµ½ÒDZíµÄ´æ´¢Æ÷¡£´Ó»úÒ²ÓÃÕâ¸ö¹¦ÄÜÂëÏòÖ÷»ú·µËÍÐÅÏ¢¡£

        

        ¶þ¡¢±à³Ì¾ÙÀý

        ÏÂÃæÊÇÒ»¸öÓÃVC±àдµÄModBus RTUͨѶµÄÀý×Ó

        (Ò»)¡¢Í¨Ñ¶¿ÚÉèÖÃ

        DCB dcb;

        hCom=CreateFile("COM1",

        GENERIC_READ|GENERIC_WRITE,

        0,

        NULL,

        OPEN_EXISTING,

        0,

        NULL);

        if(hCom==INVALID_HANDLE_VALUE)

        {

        MessageBox("createfile error,error");

        }

        BOOL error=SetupComm(hCom,1024,1024);

        if(!error)

        MessageBox("setupcomm error");

        error=GetCommState(hCom,&dcb);

        if(!error)

        MessageBox("getcommstate,error");

        dcb.BaudRate=2400;

        dcb.ByteSize=8;

        dcb.Parity=EVENPARITY;//NOPARITY;

        dcb.StopBits=ONESTOPBIT;

        error=SetCommState(hCom,&dcb);

        (¶þ)¡¢CRCУÑéÂë¼ÆËã

        UINT crc

        void calccrc(BYTE crcbuf)

        {

        BYTE i;

        crc=crc ^ crcbuf;

        for(i=0;i<8;i++)

        {

        BYTE TT;

        TT=crc&1;

        crc=crc>>1;

        crc=crc&0x7fff;

        if (TT==1)

        crc=crc^0xa001;

        crc=crc&0xffff;

        }

        }

        (Èý)¡¢Êý¾Ý·¢ËÍ

        zxaddr=11;//¶ÁÈ¡µØַΪ11µÄѲ¼ì±íÊý¾Ý

        zxnum=10;//¶ÁÈ¡Ê®¸öͨµÀµÄÊý¾Ý

        writebuf2[0]=zxaddr;

        writebuf2[1]=3;

        writebuf2[2]=0;

        writebuf2[3]=0;

        writebuf2[4]=0;

        writebuf2[5]=zxnum;

        crc=0xffff;

        calccrc(writebuf2[0]);

        calccrc(writebuf2[1]);

        calccrc(writebuf2[2]);

        calccrc(writebuf2[3]);

        calccrc(writebuf2[4]);

        calccrc(writebuf2[5]);

        writebuf2[6]=crc & 0xff;

        writebuf2[7]=crc/0x100;

        WriteFile(hCom,writebuf2,8,&comnum,NULL);

        (ËÄ)¡¢Êý¾Ý¶ÁÈ¡

        ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//¶ÁÈ¡zxnum¸öͨµÀÊý¾Ý¿ÉÔö¼Ó´íÎó´¦Àí³ÌÐò£¬ÈçµØÖ·Âë´íÎó¡¢CRCÂë´íÎóÅжÏ¡¢Í¨Ñ¶¹ÊÕÏ´¦ÀíµÈ¡£

        

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