格雷码的广泛用途就不多说了,总之优点多多,在PLC 工控中经常用到绝对编码器,所以今天就格雷码与常用进制间的互换做几个例子,方便理解。在线二进制转换
1、格雷码与BIN的算法:
假如格雷码为:110011,那么,转换为二进制码则为:100010
具体的转换过程为:用格雷码的最左位即(高位)与“0”异或取得一个值,用最高位取得的异或值结果与格雷码的次位(即:左二位)再次计算异或值,其结果依次与下一位格雷码异或计算,所取得的与原格雷码位数相同的一个数据即是转换所得二进制;
2、二进制数转换为格雷码则如下:
假如一个二进制数为:11100011,那么其转换为格雷码即为:
10010010;其算法由二进制数据的右端(即低位)算起,用该二进制数的最低位,在PLC中称为“0”位,与“1”位进行异或所得值即为格雷码的最低位,再用二进制的“1”位和“2”位异或取得值为格雷码的低二位,依次类推,二进制的最高位,直接不变放到格雷码的最高位,至此,就获得一组与二进制位数相等的格雷码数据。
至于格雷码转换BCD数据,相信能转换为二进制,这个就不难搞定了。
最绕弯的,个人感觉是格雷码转换成角度值。下面我详细唠叨一番:
3、格雷码转换角度值
假如10位分辨率格雷码,要转换成角度值,(一般角度值精确到小数点后一位,如“37.6”,在PLC数值运算中常放大10倍来使用,即“376”显示。)举一例子:格雷码:1110010100,转换角度值为:2613具体转换过程是:先将格雷码转换为二进制数据1011100111;再将二进制数据换算成角度值。
二进制数据换算成角度值的方法是:在本例中分辨率为10位,则二进制“1111111111”(&1023)相对应于0——3599(即0度至359.9度,因为360度也是0度),则换算出二者比为3599/1023; 那么本例中的1011100111(&743)对就角度=743*(3599/1023)等于“2613”(此值为BCD码)。
呵呵,敲这一段字还真累!不过现在好了,有的PLC型号中有GRY指令,可以直接用指令转换,容易多了。