锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

各位老师格雷码和二进制有什么区别,怎么转换.

时间:2022-12-17 07:30:00 sx676a光电传感器

我用富士的SPH由于富士的编辑,系列编辑的程序SPH符合IEC61131-3编程规范,因此基于此改为其他品牌PLC也很方便。

在精确定位控制系统中,准确测量控制对象的位置非常重要,以提高控制精度。目前,测量位置的方法主要有两种,一种是使用位置传感器,精度高,但在多路、长距离位置监控系统中,由于成本高,安装困难,不实用。二是采用光电轴角编码器电轴角编码器。根据其刻度方法和信号输出形式,光电轴角编码器可分为增量型、绝对型和混合型。绝对编码器是一种直接输出数字量的传感器。采用自然二进制或循环二进制(格雷码)进行光电转换。编码设计一般采用自然二进制、循环二进制、二进制

制作补码等。特点是不需要计数器,可以在转轴的任何位置读取与位置对应的固定数字;抗干扰能力强,无累积误差;切断电源后,位置信息不会丢失,但分辨率由二进制位数决定。根据不同的精度要求,可以选择不同的分辨率即位数。目前有10 位、11 位、12 位、13 位、14 等等。其中,绝对编码器采用循环二进制编码(即格雷码),其输出信号是一种数字排序,而不是权重码。每个人都没有确定的,不能直接比较大小和算术操作,也不能直接转换为其他信号,通过代码转换,进入自然二进制码,由上位机读取以实现相应的控制。本文重点介绍了富士处理方法。本文重点介绍富士SX二进制格雷码与自然二进制码的交换采用编程方法。

一、格雷码介绍(又称循环二进制码或反射二进制码)

在数字系统中只能识别0 1.各种数据只能转换为二进制代码进行处理。格雷代码是一种无权代码,采用绝对编码。典型的格雷代码是一种具有反射特性和循环特性的单步自补代码。它的循环和单步特性消除了随机取数时出现重大误差的可能性。它的反射和自补特性使得求反非常方便。格雷代码属于可靠性编码,是一种错误的最小化编码方法,因为自然二进制码可以直接从数/模转换器转换为模拟信号,但在某些情况下,如从十进制的3 转换成4 二进制码的每个人都要变,使数字电路产生很大的尖峰电流脉冲。格雷代码没有这个缺点,它是一个数字排序系统,所有相邻的整数在它们的数字表示中只有一个不同的数字。当任何两个相邻数之间转换时,只有一个数发生变化。它大大减少了从一个状态到下一个状态的逻辑混淆。此外,由于最大数和最小数之间只有一个数不同,通常称为格雷反射码或循环码。下表是几种自然二进制码和格雷码的对照表:

十进制数

自然二进制

格雷码

十进制

自然二进制

格雷码

0

0000

0000

8

1000

1100

1

0001

0001

9

1001

1101

2

0010

0011

10

1010

1111

3

0011

0010

11

1011

1110

4

0100

0110

12

1100

1010

5

0101

0111

13

1101

1011

6

0110

0101

14

1110

1001

7

0111

0100

15

1111

1000

二、二进制格雷码与自然二进制码的交换

1.自然二进制码转换为二进制格雷码

自然二进制码转换为二进制格雷码,其规律是保留自然二进制码的最高水平作为格雷码的最高水平,而二进制码的二进制码的高水平与二进制码的高水平,而格雷码的其余部分与二进制码的求法相似。

例如:

自然二进制编码如下:

1

0

0

1

然后将其转换为格雷代码的方法是:保持最高位1,然后将第二位0与第一位1进行变更或操作,第三位0与第二位0进行变更或操作,第四位1与第三位0进行变更或操作,结果如下:

1 1 0 1 Gray

二进制格雷码转换为自然二进制码

二进制格雷代码转换为自然二进制码,其规则是保留格雷代码的最高水平作为自然二进制码的最高水平,而二自然二进制码是高位自然二进制码,与二高位格雷代码同或不同,而自然二进制码的其余部分与次高自然二进制码相似。

例如,将格雷码1000转换为自然二进制码:

1

0

0

0

1

1

1

1

上排为格雷码,下排为自然二进制,从左到右分别为1~4位

上排第一高作为自然二进制的最高,所以下排第一填1,然后上排第二和下排第一,下排第二结果为1,上排第三和下排第二,下排第三结果为1,同样,下排第四结果为1,因此,我们得到了转换结果 如下:

1 1 1 1 Bin

富士自然二进制码与格雷码交换SX系列PLC实现方法:

1. 将自然二进制码转换为格雷码:

根据自然二进制码转换为格雷码的转换规则,实际上是将转换数右转一位,然后与转换数进行变异或操作。程序流程图如下:

保存输入数 TEMP

将TEMP右移一个,保存SHILETEMP

移位后的数据与原始数据不同或

返回异或以后的数据

功能块中的程序如下:

INPUT 输入变量类型为DWORD

TEMP 局部变量类型为DWORD

SHILETEMP 局部变量类型为DWORD

BIN_TO_GRAY 功能块返回变量返回类型DWORD

BIN_TO_GRAY:

TEMP:=INPUT;

SHILETEMP:=SHR_DWORD(TEMP,UNIT#1);

BIN_TO_GRAY:=SHILETEMP XOR INPUT;

2. 格雷代码转换为自然二进制码

根据格雷码转换为自然二进制码的转换规则,实际上是格雷码和二进制码不断变化或操作,也就是说,不断变化或操作不同的位数,如原始数据为32位A,然后先将a向右移动,与自己不同或保留值B,然后继续向右移动a,与B不同或保留aC,依次类推,直到A=到目前为止。程序流程图如下:

保存输入数 TEMP,INPUT1

如果输入为0,直接返回数据0后退出

如果TEMP不等于1,然后循环,否则返回数据

TEMP右移1位,与输入值不断变化或

功能块中的程序如下:

INPUT 输入变量类型为DWORD

TEMP 局部变量类型为DWORD

INPUT1 局部变量类型为DWORD

GRAY_TO_BIN 功能块返回变量返回类型DWORD

GRAY_TO_BIN:

TEMP:=INPUT;

INPUT1:=INPUT;

IF TEMP=DWORD#0 THEN

INPUT1:=DWORD#0;

GRAY_TO_BIN:=INPUT1;

RETURN;

END_IF;

WHILE TEMP<>DWORD#1 DO

TEMP:=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系列指令不足。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章