关于部颁CDT规约中校验码的算法文章精选

关于部颁CDT规约中校验码的算法


 
:用实际应用中的简单例子,详细介绍了部颁循环式远动规约(CDT)规约中校验码的计算方法。

关键词:CRC  编码  规约  算法

在电力系统计算机通信过程中,由于信道大多是为传输语音设计的,能达到的误码率仅在10-3~10-5范围内,若再考虑天气、人为等各种因素的影响,误码率会更高,要显著改善这一指标,只能借助各种差错控制技术,而差错控制的核心就是校验编码,其中循环冗余校验码(简称CRC校验)更是一种得到广泛应用的校验方法,在部颁循环式远动规约中,即采用了CRC校验,但是,对CRC校验码的具体算法作详细说明的书籍、资料却相对较少,笔者总结了实际工作中的具体经验,在翻阅大量参考资料的基础上,对这一部分作简要说明,希望能对广大电力系统通信、自动化人员现场的实际工作起到一些帮助作用。

1 校验的基本原理

站端的远程数据终端设备(RTU)通过数模转换(A/D)将实时数据(包括YX、YC、SOE等等)转换为二进制码传送到收端,在通道传输过程中,由于线路杂音或其他各种串扰,极易使这些编排好的信息码产生错误,收端的前置机负责识别错误的信息码,在CDT规约中,前置机还负责将这些错码舍弃。那么,前置机是如何识别这些错码并将其舍弃的呢?这就用到了校验。在发端,由RTU按照规约的不同,根据所传送的具体信息计算出一个称为CRC的值附加在数据的尾部一并传送。在收端,用同样的方法生成一个CRC值,与收到的CRC值进行比较,若两个值相同,则认为信息传输是正确的,若不同,则可判别信息传输过程中有错误,于是将该错误信息字舍弃。

2 编码及校验的方法

信道编码的方法很多,常用的有奇偶校验码、奇偶加正反校验码、BCH码、等比码、卷积码等,部颁CDT规约采用的是BCH(Bose、Chaudhuri、Hocguenghem三个人名的字头缩写)码,校验方法是CRC(Cyclic Redundancy Check)校验。

3 部颁CDT规约中的CRC校验

我国微机远动系统中循环传送方式的码制是(48、40)码,这种码有两个特点:1、n-k=8,比较小;2、k=40,是n-k的整数倍。这样,编码和算法会相对容易实现一些。

我们知道,无论是控制字,还是信息字,它们的字结构是一样的,后8位均为校验码,按照部颁CDT规约,这种(48、40)码组的生成多项式为G(X)=X8+X2+X+1或G(X)=107H,陪集码为FFH。部颁CDT规约中,字节和位的排列规则是:字节由低到高上下排列,字节的位由高到低左右排列。按照这个规则,假设有一个K位的信息字,对应多项式为K(X),它的CRC值的计算方法是:用一个r(r=8)次的多项式即G(X)做除数,把在信息字尾部增添r(r=8)个0所构成的新信息字对应的多项式作为被除数,二者做模2除法,最后得到的r位余数即余式R(X)就是K(X)的CRC值校验码。

4 具体详解方法

下面举一具体例子来说明这一算法。

例:收到某站某时刻一信息字为f10000000094,我们来判断一下检验码的正确性,从中也就可以看出这个信息字是否正确。

方法一:① 首先将f10000000094写成二进制码形式,并补加8个0;

        ② 用上述二进制编码除以生成多项式G(X)=X8+X2+X+1,即100000111;

        ③ 用模2加法(即不进位加法,相同出0,相异出1)算余式;

        ④ 得出余式后,加陪集码FFH,即逐位取反,所得R(X)即为校验码。

               111100111 ……                                                                                    

100000111 111100010000000000000000000000000000000000000000

               100000111

           0111001010

            100000111

            0110011010

             100000111

             0100111010

              100000111   

              000111101000

                 100000111

                 0111011110

                  100000111

                  0110110010

                        ……

                                                    1101011

1101011(D)+FF(H)=10010100(D)=94(H)

由此可判断该校验码是正确的,那么,该信息字也就是正确的。

我们还可以用如下方法(查表法)判断校验码的正确性。

方法二: ① 将40个码字分为5个8位消息段;

        ② 查出第一段对应的部分余式r1;

        ③ 用第二段M2+r1=M2ˊ,再查出M2ˊ对应的部分余式r2;

        ④ 以此类推,得出r5;

        ⑤ r5再与陪集码FFH相加,即得到最后的R(x)。

首先,将40个码字分为5个8位消息段

M1=11110001、 M2=00000000、 M3=00000000、 M4=00000000 、M5=00000000

   查G(x)=X8 +X2 +X +1 生成(8i+8,8i)码的软件表,如下表所示:  

      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

 0   00 07 0e 09 1c 1b 12 15 38 3f 36 31 24 23 2a 2d

 1   70 77 7e 79 6c 6b 62 65 48 4f 46 41 54 53 5a 5d

 2   e0 e7 ee e9 fc fb f2 f5 d8 df d6 d1 c4 c3 ca cd

 3   90 97 9e 99 8c 8b 82 85 a8 af a6 a1 b4 b3 ba bd

 4   c7 c0 c9 ce db dc d5 d2 ff f8 f1 f6 e3 e4 ed ea

 5   b7 b0 b9 be ab ac a5 a2 8f 88 81 86 93 94 9d 9a

 6   27 20 29 2e 3b 3c 35 32 1f 18 11 16 03 04 0d 0a

 7   57 50 59 5e 4b 4c 45 42 6f 68 61 66 73 74 7d 7a

 8   89 8e 87 80 95 92 9b 9c b1 b6 bf b8 ad aa a3 a4

 9   f9 fe f7 f0 e5 e2 eb ec c1 c6 cf c8 dd da d3 d4

 a   69 0e 67 60 75 72 7b 7c 51 56 5f 58 4d 4a 43 44

 b   19 1e 17 15 05 02 0b 0c 21 26 2f 28 3d 3a 33 34

 c   4e 49 40 47 52 55 5c 5b 76 71 78 7f 6a 6d 64 63

 d   3e 39 30 37 22 25 2c 2b 06 01 03 0f 1a 1d 14 13

 e   ae a9 a0 a7 b2 b5 bc bb 96 91 98 9f 8a 8d 84 83

 f   de d9 d0 d7 c2 c5 cc cb e6 e1 e8 ef fa fd f4 f3

查上表可知:  

   M1对应的部分余式r1=d9;

   M2ˊ= M2+r1=d9, 查表r2=01;

   M3ˊ= M3+r2=01, 查表r3=07;

   M4ˊ= M4+r3=07, 查表r4=15;

   M5ˊ= M5+r4=15, 查表r5=6b;

   6b(H)+FF(H)

  =01101011(D)+11111111(D)

  =10010100(D)=94(H)

由此亦可判断该校验码和该信息字的正确性。

相信通过以上的例子,大家一定会对部颁CDT规约中的CRC校验方法有了一个较详尽的了解。

5 结束语

在通信方式中有同步通信方式和异步通信方式之分,CRC校验是一种多用于同步通信方式中的差错检测手段。使用CRC校验虽然不能保证100%检测错误,但它不需花费试图获得完善检测所需的巨大开销。目前,在Lonworks等信息传送技术及ARJ、PKZIP数据压缩解压技术中,CRC校验也被广泛采用,作为校验手段,效果很是显著。

以上,是针对部颁CDT规约,对CRC校验码的计算方法及应用作得一些简要说明,另外,关于这方面的计算,还可以通过编程等方法加以实现,在此,不再一一赘述。同时,由于我们水平有限,不当之处,敬请各位专家、同仁指正。

 

参考文献

1、部颁《循环式远动规约》

2、《数据通信技术》 汤吉群 张德民李玲·人民邮电出版社·1999

3、《通信系统原理》 张树京·中国铁道出版社 ·1989

4、《电力系统远动原理及微机远动装置》柳永智 编著·教材

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值