资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
一、格雷码(又叫循环二进制码或反射二进制码)介绍 在数字系统中只能识别 0 和 1,各种数据要转换为二进制代码才能进行处理,格雷码 是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单 步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、 自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式, 因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十 进制的 3 转换成 4 时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉 冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们 的数字表示中只有一个数字不同。它在任意两个相邻的数之间转换时,只有一个数位 发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数 与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。下表为几种自然二 进制码与格雷码的对照表:十进制数自然二进制格雷码十进制自然二进制格雷码0000000008100011001000100019100111012001000111010101111300110010111011111040100011012110010105010101111311011011601100101141110100170111010015111110001、自然二进制码转换成二进制格雷码 自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码 的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与 次高位的求法相类似。 例如: 自然二进制编码如下:1001 那么转换为格雷码的方法是:保留最高位 1,然后将第二位 0 与第一位 1 做异或操作,第 三位的 0 与第二位的 0 做异或操作,第四位的 1 与第三位的 0 做异或操作,得到结果如下:1 1 0 1 Gray2、二进制格雷码转换成自然二进制码 二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高 位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码 的其余各位与次高位自然二进制码的求法相类似。 例如将格雷码 1000 转换为自然二进制码: 10001111 上排为格雷码,下排为自然二进制,从左到右分别为 14 位 将上排的第一位高位作为自然二进制的最高位,因此在下排的第一位填入 1,然后以上排 第二位与下排第一位做异或操作,得到下排第二位结果为 1,将上排第三位与下排第二位 做异或操作,得到下排第三位的结果为 1,同理,下排第四位的结果为 1,因此,我们得 到了转换结果 如下: 1 1 1 1 Bin三、自然二进制码与格雷码互换在富士 SX 系列 PLC 中的实现方法:1 自然二进制码转换为格雷码: 根据自然二进制码转换为格雷码的转换规则,实际上就是将转换数右移一位后与转换数做 异或操作。程序流程图如下:保存输入数 TEMP将 TEMP 右移一位,保存 SHILETEMP将移位后的数据与原数据作异或返回异或后的数据功能块中的程序如下: INPUT 输入变量类型为 DWORD TEMP 局部变量类型为 DWORD SHILETEMP 局部变量类型为 DWORD BIN_TO_GRAY 功能块返回变量返回类型为 DWORDBIN_TO_GRAY: TEMP:=INPUT; SHILETEMP:=SHR_DWORD(TEMP,UNIT#1); BIN_TO_GRAY:=SHILETEMP XOR INPUT;2. 格雷码转换为自然二进制码 根据格雷码转换为自然二进制码的转换规则,实际上就是不断的将格雷码与二进制数做异 或操作,也就是说,不断的和本身的不同位数做异或操作,如原数据为 32 位的 A,那么先 将 A 向右移动一位,与本身进行异或,然后保留值为 B,那么继续将 A 向右移动一位,与 B 进行异或,保留为 C,依次类推,直到 A=1 为止。程序流程图如下:保存输入数 TEMP,INPUT1如果输入数为 0,那么直接返回数据 0 后退出如果 TEMP 不等于 1,那么循环,否则返回数据TEMP 右移 1 位,与输入值作不断异或功能块中的程序如下: INPUT 输入变量类型为 DWORD TEMP 局部变量类型为 DWORD INPUT1 局部变量类型为 DWORDGRAY_TO_BIN 功能块返回变量返回类型为 DWORDGRAY_TO_BIN:TEMP:=INPUT; INPUT1:=INPUT; IF TEMP=DWORD#0 THENINPUT1:=DWORD#0;GRAY_TO_BIN:=INPUT1;RETURN; END_IF; WHILE TEMPDWORD#1 DOTEMP:=SHR_DWORD(TEMP,UINT#1);INPUT1:=TEMP XOR INPUT1; END_WHILE; GRAY_TO_BIN:=INPUT1;上述代码在富士的 SX 系列 PLC 中试验没有问题,由于富士的 SX 系列 PLC 完全支持 ST 代码方式的编程,因此基本上可以不做修改的应用在西门子的 S7 系列的 PLC 中。 由于三菱的 PLC 中已经包含了自然二进制码转换为格雷码指令 GRY 以及格雷码转换为自 然二进制码指令 GBIN,因此上述代码应用于三菱系列的 PLC 已经没有意义,请使用三菱 PLC 本身附带的指令,因为西门子以及富士的 SX 系列 PLC 并没有附带转换指令,因此本 人书写了上述代码用于补充 SX 系列的指令不足。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号