• 基于MODBUS的CRC


    %ws   WCHAR wszName 

     CRC原理 

    设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k;生成多项式为G(x),G(x)的最高幂次等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。发送方编码方法:将P(x)乘以xr(即对应的二进制码序列左移r位),再除以G(x),所得余式即为R(x)。用公式表示为 T(x)=xrP(x)+R(x)接收方解码方法:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误。

    程序可以如下实现:    

    1)将Mx^r的前r位放入一个长度为r的寄存器;    

    2)如寄存器首位为1,将寄存器左移1位(将Mx^r剩下部分的MSB移入寄存器的LSB)再与G的后r位异或,否则仅将寄存器左移1位(将Mx^r剩下部分的MSB移入寄存器LSB);      

    3)重复第2步,直到M全部Mx^r移入寄存器;    

    4)寄存器中的值则为校验码。

    modbus crc16

    基于MODBUS 协议的CRC16程序实现

        ModBus 通信协议的 CRC ( 冗余循环校验码含2个字节, 即 16 位二进制数。CRC 码由发送设备计算, 放置于所发送信息帧的尾部。接收信息设备再重新计算所接收信息 (除 CRC 之外的部分)的 CRC, 比较计算得到的 CRC 是否与接收到CRC相符, 如果两者不相符, 则认为数据出错。

    1) 预置 1 个 16 位的寄存器为十六进制FFFF(即全为 1) , 称此寄存器为 CRC寄存器。

    2) 把第一个 8 位二进制数据 (通信信息帧的第一个字节) 与 16 位的 CRC寄存器的低 8 位相异或, 把结果放于 CRC寄存器。

    3) 把 CRC 寄存器的内容右移一位( 朝低位)用 0 填补最高位, 并检查右移后的移出位。

    4) 如果移出位为 0, 重复第 3 步 ( 再次右移一位); 如果移出位为 1, CRC 寄存器与多项式A001 ( 1010 0000 0000 0001) 进行异或。

    5) 重复步骤 3 和步骤 4, 直到右移 8 次,这样整个8位数据全部进行了处理。

    6) 重复步骤 2 到步骤 5, 进行通信信息帧下一个字节的处理。

    7) 将该通信信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换。

    8) 最后得到的 CRC寄存器内容即为 CRC码。

     

     

     

    用户分级接入功能介绍及商用预测

     

    METHOD AND DEVICE FOR ACCESSING AND OBTAINING USER EQUIPMENT CONTEXT AND USER EQUIPMENT IDENTITY              

     

     

    3GPP Paging Test 寻呼测试

    unsigned int CRC16 ( uchar *arr_buff, uchar len) {
      uint crc=0xFFFF;  uchar i, j, Data; 
      for ( j=0; j  {
        crc=crc ^*arr_buff++;   
       for ( i=0; i<8; i++)   {
             if( ( crc&0x0001) >0)
             {
               crc=crc>>1;
               crc=crc^ 0xa001;
              } else
                crc=crc>>1;   
              }  
     } 
       return ( crc);
    }
    View Code
  • 相关阅读:
    Docker+Jenkins更换国内插件源
    招聘java工程师
    Apache seaTunnel 数据集成平台
    DBeaver连接MySQL问题的解决
    iphone的mov文件复制到电脑的方法
    IDEA中RestfulToolkit插件的安装及使用
    lwm2m 的notify 的机制
    ALI云接入学习
    CAT1 UIS8910模组对接阿里云平台
    任务的堆栈究竟有何魔力
  • 原文地址:https://www.cnblogs.com/iamgoodman/p/3597798.html
Copyright © 2020-2023  润新知