二进制与格雷码之间的转换二进制与格雷码之间的转换 二进制与格雷码之间的转换 二进制与格雷码之间的转换 在公司的PLC 改造项目中,我们经常要用到格雷码输出的绝对型旋转编 码器。由于格雷码是一种非加权码,不能直接反应出当前的角度值,所以必须在 PLC 程序中将它转换成能反应当前实际位置的二进制码。为了让我们的工程技术 人员均能很好的掌握格雷码与二进制码之间的转换方法,我根据自己的一些经验 和参考资料,将格雷码的相关知识作了些整理,在公司的刊物上发表出来,希望 能和大家一起对这个问题来加以讨论和学习,共同提高我们的技术水平。 (GrayCode) )的概念的概念 的概念 的概念 格雷码是我们在工程中常会遇到的一种编码方式,例如,大多数绝对型旋 转编码的输出就是采用格雷码的编码格式。它是一种非加权码,由二进制 码派生而来。常用的二进制数与格雷码间的转换关系如下表: 从上表我们可以看出,与普通二进制编码相比,格雷码的特点是相邻两个 数之间只有1 个二进制位发生了变化。正是这个特点,使它更适合于用在 数据传输的场合。 二进制与格雷码之间的转换二进制与格雷码之间的转换 二进制与格雷码之间的转换 二进制与格雷码之间的转换 (一)、二进制码转为格雷码 二进制码转为格雷码的算法较简单,将所需转换的数的二进制码右移 一位后与原数相异或即可。 例:十进制数9 数值数值 数值 数值 二进制码 二进制码 二进制码 二进制码 数值数值 数值 数值 二进制码 二进制码 二进制码 二进制码 00000000 10011101 00010001 10 1010 1111 00100011 11 1011 1110 00110010 12 1100 1010 01000110 13 1101 1011 01010111 14 1110 1001 01100101 15 1111 1000 01110100 10001100 的二进制数右移1位后的结果 (二)、格雷码转为二进制码格雷码转为二进制码的算法则较为繁琐,计算公式如下: Rn 例:格雷码(1001)转位二进制数C4= R4=1 C3= R4R3=10=1 C2= R4R3R2= C3R2=10=1 C1= R4R3R2R1= C2R1=11=0 编程举例编程举例 编程举例 编程举例 根据工业控制的特点,现分别给出在 PLC 梯形图中和在 VB 中实现格 雷码转二进制码的程序。 (一)、在PLC 程序中实现格雷码与二进制码的转换 在PLC 编程中允许进行“位运算操作”,所以我们可以较容易的实现 格雷码与二进制编码间的转换,但有的PLC 中没有“位异或”的指令, 所以需要通过把“异或”运算用“与”“或”“非”的来实现。